[FFmpeg-trac] #7974(avcodec:new): RTSP h265 input produces invalid MP4 output with -c copy
FFmpeg
trac at avcodec.org
Wed Jun 26 14:21:33 EEST 2019
#7974: RTSP h265 input produces invalid MP4 output with -c copy
-------------------------------------+-------------------------------------
Reporter: | Type: defect
kennylevinsen |
Status: new | Priority: normal
Component: avcodec | Version: git-
| master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
Taking a RTSP HEVC main profile input from a HikVision IP PTZ camera, and
producing an mp4 with -c copy, results in an invalid mp4 file.
Reading this mp4 file results in the following errors:
{{{
[AVBSFContext @ 0x55f87e9a1f00] No start code is found.
/tmp/test3.mp4: Invalid data found when processing input
}}}
VLC, mpv and ffmpeg are all unable to read the file, despite all being
able to play the stream live without problem. However, if one outputs to a
TS file, the output is entirely usable, and can afterwards be remuxed to
mp4 without issue.
The issue seems identical to this mailing list post from 2017, which
unfortunately had no followup: https://ffmpeg.org/pipermail/libav-
user/2017-November/010762.html.
How to reproduce:
{{{
% ffmpeg -i rtsp://user:pass@192.168.1.64/Streaming/Channels/1 -c copy
/tmp/test3.mp4
ffmpeg version 4.1.3-4154f89 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9 (GCC)
configuration: --prefix=/usr --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg
--incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man
--arch=x86_64 --optflags='-O2 -g -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-
protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-
hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64
-mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-
protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld' --enable-bzlib --enable-
libdrm --disable-crystalhd --enable-fontconfig --enable-frei0r --enable-
gcrypt --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray
--enable-libcdio --enable-indev=jack --enable-libfreetype --enable-
libfribidi --enable-libgsm --enable-libmp3lame --enable-libkvazaar
--enable-nvenc --extra-cflags=-I/usr/include/nvenc --enable-openal
--enable-opencl --enable-libopenh264 --enable-libmysofa --enable-libshine
--enable-libzvbi --enable-libvidstab --enable-libvmaf --enable-version3
--enable-libaom --enable-opengl --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-libsoxr --enable-libspeex --enable-libtheora
--enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264
--enable-libx265 --enable-libxvid --enable-avfilter --enable-avresample
--enable-postproc --enable-pthreads --disable-static --enable-shared
--enable-gpl --disable-debug --enable-decoder=libdav1d --disable-stripping
--shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
[hevc @ 0x5602f1ee0f80] VPS 0 does not exist
Last message repeated 1 times
Input #0, rtsp, from 'rtsp://user:pass@192.168.1.64/Streaming/Channels/1':
Metadata:
title : Media Presentation
Duration: N/A, start: 0.040000, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuv420p(tv), 2560x1440, 50 fps, 25
tbr, 90k tbn, 50 tbc
Output #0, mp4, to '/tmp/test3.mp4':
Metadata:
title : Media Presentation
encoder : Lavf58.20.100
Stream #0:0: Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv),
2560x1440, q=2-31, 50 fps, 25 tbr, 90k tbn, 90k tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x5602f1f14600] Timestamps are unset in a packet for stream 0. This
is deprecated and will stop working in the future. Fix your code to set
the timestamps properly
[mp4 @ 0x5602f1f14600] Non-monotonous DTS in output stream 0:0; previous:
0, current: 0; changing to 1. This may result in incorrect timestamps in
the output file.
frame= 167 fps= 29 q=-1.0 Lsize= 11434kB time=00:00:06.60
bitrate=14191.4kbits/s speed=1.14x
video:11432kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.015932%
Exiting normally, received signal 2.
% ffprobe /tmp/test3.mp4
ffprobe version 4.1.3-4154f89 Copyright (c) 2007-2019 the FFmpeg
developers
built with gcc 9 (GCC)
configuration: --prefix=/usr --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg
--incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man
--arch=x86_64 --optflags='-O2 -g -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-
protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-
hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64
-mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-
protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld' --enable-bzlib --enable-
libdrm --disable-crystalhd --enable-fontconfig --enable-frei0r --enable-
gcrypt --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray
--enable-libcdio --enable-indev=jack --enable-libfreetype --enable-
libfribidi --enable-libgsm --enable-libmp3lame --enable-libkvazaar
--enable-nvenc --extra-cflags=-I/usr/include/nvenc --enable-openal
--enable-opencl --enable-libopenh264 --enable-libmysofa --enable-libshine
--enable-libzvbi --enable-libvidstab --enable-libvmaf --enable-version3
--enable-libaom --enable-opengl --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-libsoxr --enable-libspeex --enable-libtheora
--enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264
--enable-libx265 --enable-libxvid --enable-avfilter --enable-avresample
--enable-postproc --enable-pthreads --disable-static --enable-shared
--enable-gpl --disable-debug --enable-decoder=libdav1d --disable-stripping
--shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
[AVBSFContext @ 0x55f87e9a1f00] No start code is found.
/tmp/test3.mp4: Invalid data found when processing input
}}}
Test with 4.1.3, as well as bb11584924d6190a9028cbb319891028f44856a9.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/7974>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list