[FFmpeg-trac] #5154(avformat:new): Demux h264 stream from Arecont camera

FFmpeg trac at avcodec.org
Tue Jan 12 20:59:21 CET 2016


#5154: Demux h264 stream from Arecont camera
---------------------------------------+----------------------------------
               Reporter:  cehoyos      |                  Owner:
                   Type:  enhancement  |                 Status:  new
               Priority:  wish         |              Component:  avformat
                Version:  git-master   |               Keywords:  h264
             Blocked By:               |               Blocking:
Reproduced by developer:  0            |  Analyzed by developer:  0
---------------------------------------+----------------------------------
 http://ffmpeg.org/pipermail/ffmpeg-user/2016-January/030122.html
 A user provided a stream dump from his Arecont Vision AV20365CO. FFmpeg
 correctly autodetects the stream as h264 but every frame starts with a
 http content header that makes remuxing impossible:
 {{{
 $ ffmpeg -r 25 -i h264stream.dump -vcodec copy out.mov
 ffmpeg version N-77810-g405abdb Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 4.7 (SUSE Linux)
   configuration: --enable-gpl --enable-libx264
   libavutil      55. 13.100 / 55. 13.100
   libavcodec     57. 22.100 / 57. 22.100
   libavformat    57. 21.101 / 57. 21.101
   libavdevice    57.  0.100 / 57.  0.100
   libavfilter     6. 23.100 /  6. 23.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 [h264 @ 0x29a9440] Stream #0: not enough frames to estimate rate; consider
 increasing probesize
 Input #0, h264, from 'h264stream.dump':
   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: h264 (Baseline), yuv420p, 1280x960, 25 fps, 25
 tbr, 1200k tbn, 50 tbc
 [mov @ 0x2a378e0] Codec for stream 0 does not use global headers but
 container format requires global headers
 Output #0, mov, to 'out.mov':
   Metadata:
     encoder         : Lavf57.21.101
     Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p, 1280x960,
 q=2-31, 25 fps, 25 tbr, 12800 tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 [mov @ 0x2a378e0] 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
 frame=   20 fps=0.0 q=-1.0 Lsize=   13897kB time=00:00:00.80
 bitrate=142304.5kbits/s speed=34.4x
 video:13896kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.006613%
 }}}
 The output file is unreadable.
 The following works fine:
 {{{
 $ cat h264stream.dump | sed -u -b -e '/^--fbdr\r$/ {N;N;N;d}' | ffmpeg -i
 - -vcodec copy out.mov
 ffmpeg version N-77810-g405abdb Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 4.7 (SUSE Linux)
   configuration: --enable-gpl --enable-libx264
   libavutil      55. 13.100 / 55. 13.100
   libavcodec     57. 22.100 / 57. 22.100
   libavformat    57. 21.101 / 57. 21.101
   libavdevice    57.  0.100 / 57.  0.100
   libavfilter     6. 23.100 /  6. 23.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 [h264 @ 0x27a33c0] Stream #0: not enough frames to estimate rate; consider
 increasing probesize
 Input #0, h264, from 'pipe:':
   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: h264 (Baseline), yuv420p, 1280x960, 25 fps, 25
 tbr, 1200k tbn, 50 tbc
 [mov @ 0x27aa460] Codec for stream 0 does not use global headers but
 container format requires global headers
 [mov @ 0x27aa460] WARNING codec timebase is very high. If duration is too
 long,
 file may not be playable by quicktime. Specify a shorter timebase
 or choose different container.
 Output #0, mov, to 'out.mov':
   Metadata:
     encoder         : Lavf57.21.101
     Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p, 1280x960,
 q=2-31, 25 fps, 25 tbr, 1200k tbn, 1200k tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 [mov @ 0x27aa460] 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
 frame=   20 fps=0.0 q=-1.0 Lsize=   13896kB time=00:00:00.76
 bitrate=149782.4kbits/s speed=17.2x
 video:13895kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.006635%
 }}}
 http://www.stardot-tech.com/developer/api.html describes a different but
 similar format, it also distinguishes between "Content-type: video/H.264I"
 for I-frames and "Content-type: video/H.264P" for P-frames.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/5154>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list