[FFmpeg-trac] #4270(undetermined:new): tee muxing problem when -vcodec copy

FFmpeg trac at avcodec.org
Sat Jan 17 02:53:19 CET 2015


#4270: tee muxing problem when -vcodec copy
-------------------------------------+-------------------------------------
             Reporter:  arsen        |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:  muxing, tee  |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 Tacking input stream, then sending without video transcoding to 1 or 2
 servers. As result ffmpeg cannot start.
 In case if using trans-coding it works well

 How to reproduce:
 {{{
 ffmpeg/ffmpeg -i http://InputIP:8042/InputStream -loglevel debug -preset
 fast -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -vcodec
 copy  -f tee -map 0:v -map 0:a -flags +global_header
 "[f=flv]rtmp://OutputIP/live/ars|[f=flv]rtmp://204.174.104.72/live/ars"
 ffmpeg version 2.5.3-   http://johnvansickle.com/ffmpeg/    Copyright (c)
 2000-2015 the FFmpeg developers
   built on Jan 10 2015 09:24:27 with gcc 4.9.2 (Debian 4.9.2-10)
   configuration: --enable-gpl --enable-version3 --disable-shared
 --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-
 libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-
 libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig
 --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb
 --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
 gray --enable-libopenjpeg --enable-libopus --disable-ffserver --enable-
 libass --enable-gnutls --cc=gcc
   libavutil      54. 15.100 / 54. 15.100
   libavcodec     56. 13.100 / 56. 13.100
   libavformat    56. 15.102 / 56. 15.102
   libavdevice    56.  3.100 / 56.  3.100
   libavfilter     5.  2.103 /  5.  2.103
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Splitting the commandline.
 Reading option '-i' ... matched as input file with argument
 'http://InputIP:8042/InputStream'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'debug'.
 Reading option '-preset' ... matched as AVOption 'preset' with argument
 'fast'.
 Reading option '-acodec' ... matched as option 'acodec' (force audio codec
 ('copy' to copy stream)) with argument 'aac'.
 Reading option '-strict' ...Routing option strict to both codec and muxer
 layer
  matched as AVOption 'strict' with argument 'experimental'.
 Reading option '-ar' ... matched as option 'ar' (set audio sampling rate
 (in Hz)) with argument '44100'.
 Reading option '-ac' ... matched as option 'ac' (set number of audio
 channels) with argument '2'.
 Reading option '-b:a' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '96k'.
 Reading option '-vcodec' ... matched as option 'vcodec' (force video codec
 ('copy' to copy stream)) with argument 'copy'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'tee'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '0:v'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '0:a'.
 Reading option '-flags' ... matched as AVOption 'flags' with argument
 '+global_header'.
 Reading option
 '[f=flv]rtmp://OutputIP/live/ars|[f=flv]rtmp://204.174.104.72/live/ars'
 ... matched as output file.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument debug.
 Successfully parsed a group of options.
 Parsing a group of options: input file http://InputIP:8042/InputStream.
 Successfully parsed a group of options.
 Opening an input file: http://InputIP:8042/InputStream.
 [http @ 0x40f2460] request: GET /InputStream HTTP/1.1
 User-Agent: Lavf/56.15.102
 Accept: */*
 Range: bytes=0-
 Connection: close
 Host: InputIP:8042
 Icy-MetaData: 1


 [http @ 0x40f2460] header='HTTP/1.0 200 OK'
 [http @ 0x40f2460] http_code=200
 [http @ 0x40f2460] header='Content-Type: application/octet-stream'
 [http @ 0x40f2460] header='Server: Icecast 2.3.2-kh29'
 [http @ 0x40f2460] header='Cache-Control: no-cache'
 [http @ 0x40f2460] header='Expires: Mon, 26 Jul 1997 05:00:00 GMT'
 [http @ 0x40f2460] header='Pragma: no-cache'
 [http @ 0x40f2460] header=''
 [mpegts @ 0x40f2f80] Format mpegts probed with size=2048 and score=100
 [mpegts @ 0x40f2f80] stream=0 stream_type=f pid=4a prog_reg_desc=
 [mpegts @ 0x40f2f80] stream=1 stream_type=1b pid=4b prog_reg_desc=
 [mpegts @ 0x40f2f80] Before avformat_find_stream_info() pos: 0 bytes
 read:61996 seeks:0
 [h264 @ 0x40f9260] non-existing PPS 0 referenced
     Last message repeated 1 times
 [h264 @ 0x40f9260] decode_slice_header error
 [h264 @ 0x40f9260] no frame!
 [h264 @ 0x40f9260] non-existing PPS 0 referenced
     Last message repeated 1 times
 [h264 @ 0x40f9260] decode_slice_header error
 [h264 @ 0x40f9260] no frame!
 [h264 @ 0x40f9260] non-existing PPS 0 referenced
     Last message repeated 1 times
 [h264 @ 0x40f9260] decode_slice_header error
 [h264 @ 0x40f9260] no frame!
 [h264 @ 0x40f9260] no picture
 [mpegts @ 0x40f2f80] max_analyze_duration 5000000 reached at 5013333
 microseconds
 [mpegts @ 0x40f2f80] After avformat_find_stream_info() pos: 1301336 bytes
 read:1301524 seeks:0 frames:362
 Input #0, mpegts, from 'http://InputIP:8042/InputStream':
   Duration: N/A, start: 54280.012100, bitrate: 114 kb/s
   Program 1
     Stream #0:0[0x4a](rus), 237, 1/90000: Audio: aac (LC) ([15][0][0][0] /
 0x000F), 48000 Hz, stereo, fltp, 114 kb/s
     Stream #0:1[0x4b], 125, 1/90000: Video: h264 (High) ([27][0][0][0] /
 0x001B), yuv420p(left), 704x576 [SAR 16:11 DAR 16:9], 1/50, 25 fps, 25
 tbr, 90k tbn, 50 tbc
 Successfully opened the file.
 Parsing a group of options: output file
 [f=flv]rtmp://OutputIP/live/ars|[f=flv]rtmp://204.174.104.72/live/ars.
 Applying option acodec (force audio codec ('copy' to copy stream)) with
 argument aac.
 Applying option ar (set audio sampling rate (in Hz)) with argument 44100.
 Applying option ac (set number of audio channels) with argument 2.
 Applying option b:a (video bitrate (please use -b:v)) with argument 96k.
 Applying option vcodec (force video codec ('copy' to copy stream)) with
 argument copy.
 Applying option f (force format) with argument tee.
 Applying option map (set input stream mapping) with argument 0:v.
 Applying option map (set input stream mapping) with argument 0:a.
 Successfully parsed a group of options.
 Opening an output file:
 [f=flv]rtmp://OutputIP/live/ars|[f=flv]rtmp://204.174.104.72/live/ars.
 Successfully opened the file.
 detected 4 logical cores
 [graph 0 input from stream 0:0 @ 0x40f91a0] Setting 'time_base' to value
 '1/48000'
 [graph 0 input from stream 0:0 @ 0x40f91a0] Setting 'sample_rate' to value
 '48000'
 [graph 0 input from stream 0:0 @ 0x40f91a0] Setting 'sample_fmt' to value
 'fltp'
 [graph 0 input from stream 0:0 @ 0x40f91a0] Setting 'channel_layout' to
 value '0x3'
 [graph 0 input from stream 0:0 @ 0x40f91a0] tb:1/48000 samplefmt:fltp
 samplerate:48000 chlayout:0x3
 [audio format for output stream 0:1 @ 0x40de660] Setting 'sample_fmts' to
 value 'fltp'
 [audio format for output stream 0:1 @ 0x40de660] Setting 'sample_rates' to
 value '44100'
 [audio format for output stream 0:1 @ 0x40de660] Setting 'channel_layouts'
 to value '0x3'
 [audio format for output stream 0:1 @ 0x40de660] auto-inserting filter
 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the
 filter 'audio format for output stream 0:1'
 [AVFilterGraph @ 0x4102640] query_formats: 4 queried, 6 merged, 3 already
 done, 0 delayed
 [auto-inserted resampler 0 @ 0x4118000] ch:2 chl:stereo fmt:fltp r:48000Hz
 -> ch:2 chl:stereo fmt:fltp r:44100Hz
 [rtmp @ 0x4101ee0] Handshaking...
 [rtmp @ 0x4101ee0] Type answer 3
 [rtmp @ 0x4101ee0] Server version 3.0.1.1
 [rtmp @ 0x4101ee0] Proto = rtmp, path = /live/ars, app = live, fname = ars
 [rtmp @ 0x4101ee0] Server bandwidth = 2500000
 [rtmp @ 0x4101ee0] Client bandwidth = 2500000
 [rtmp @ 0x4101ee0] New incoming chunk size = 4096
 [rtmp @ 0x4101ee0] Releasing stream...
 [rtmp @ 0x4101ee0] FCPublish stream...
 [rtmp @ 0x4101ee0] Creating stream...
 [rtmp @ 0x4101ee0] Sending publish command for 'ars'
 [flv @ 0x4101380] Tag [27][0][0][0]/0x0000001b incompatible with output
 codec id '28' ([7][0][0][0])
 [tee @ 0x433b180] Slave '[f=flv]rtmp://OutputIP/live/ars': error writing
 header: Invalid data found when processing input
 Output #0, tee, to
 '[f=flv]rtmp://OutputIP/live/ars|[f=flv]rtmp://204.174.104.72/live/ars':
   Metadata:
     encoder         : Lavf56.15.102
     Stream #0:0, 0, 1/25: Video: h264 ([27][0][0][0] / 0x001B),
 yuv420p(left), 704x576 (0x0) [SAR 16:11 DAR 16:9], 1/25, q=2-31, 25 fps,
 25 tbn, 25 tbc
     Stream #0:1(rus), 0, 1/44100: Audio: aac, 44100 Hz, stereo, fltp, 96
 kb/s
     Metadata:
       encoder         : Lavc56.13.100 aac
 Stream mapping:
   Stream #0:1 -> #0:0 (copy)
   Stream #0:0 -> #0:1 (aac (native) -> aac (native))
 Could not write header for output file #0 (incorrect codec parameters ?):
 Invalid data found when processing input
 [AVIOContext @ 0x40f27a0] Statistics: 1301524 bytes read, 0 seeks
 }}}



 Same stream Sending to 1 server without muxing (works well):
 {{{


 ffmpeg/ffmpeg -i http://InputIP:8042/InputStream -loglevel debug -acodec
 aac -strict experimental -ar 44100 -ac 2 -b:a 96k -vcodec copy -f flv
 rtmp://OutputIP:10000/live/ars
 ffmpeg version 2.5.3-   http://johnvansickle.com/ffmpeg/    Copyright (c)
 2000-2015 the FFmpeg developers
   built on Jan 10 2015 09:24:27 with gcc 4.9.2 (Debian 4.9.2-10)
   configuration: --enable-gpl --enable-version3 --disable-shared
 --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-
 libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-
 libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig
 --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb
 --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
 gray --enable-libopenjpeg --enable-libopus --disable-ffserver --enable-
 libass --enable-gnutls --cc=gcc
   libavutil      54. 15.100 / 54. 15.100
   libavcodec     56. 13.100 / 56. 13.100
   libavformat    56. 15.102 / 56. 15.102
   libavdevice    56.  3.100 / 56.  3.100
   libavfilter     5.  2.103 /  5.  2.103
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Splitting the commandline.
 Reading option '-i' ... matched as input file with argument
 'http://InputIP:8042/InputStream'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'debug'.
 Reading option '-acodec' ... matched as option 'acodec' (force audio codec
 ('copy' to copy stream)) with argument 'aac'.
 Reading option '-strict' ...Routing option strict to both codec and muxer
 layer
  matched as AVOption 'strict' with argument 'experimental'.
 Reading option '-ar' ... matched as option 'ar' (set audio sampling rate
 (in Hz)) with argument '44100'.
 Reading option '-ac' ... matched as option 'ac' (set number of audio
 channels) with argument '2'.
 Reading option '-b:a' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '96k'.
 Reading option '-vcodec' ... matched as option 'vcodec' (force video codec
 ('copy' to copy stream)) with argument 'copy'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'flv'.
 Reading option 'rtmp://OutputIP:10000/live/ars' ... matched as output
 file.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument debug.
 Successfully parsed a group of options.
 Parsing a group of options: input file http://InputIP:8042/InputStream.
 Successfully parsed a group of options.
 Opening an input file: http://InputIP:8042/InputStream.
 [http @ 0x31a0460] request: GET /InputStream HTTP/1.1
 User-Agent: Lavf/56.15.102
 Accept: */*
 Range: bytes=0-
 Connection: close
 Host: InputIP:8042
 Icy-MetaData: 1


 [http @ 0x31a0460] header='HTTP/1.0 200 OK'
 [http @ 0x31a0460] http_code=200
 [http @ 0x31a0460] header='Content-Type: application/octet-stream'
 [http @ 0x31a0460] header='Server: Icecast 2.3.2-kh29'
 [http @ 0x31a0460] header='Cache-Control: no-cache'
 [http @ 0x31a0460] header='Expires: Mon, 26 Jul 1997 05:00:00 GMT'
 [http @ 0x31a0460] header='Pragma: no-cache'
 [http @ 0x31a0460] header=''
 [mpegts @ 0x31a0e00] Format mpegts probed with size=2048 and score=100
 [mpegts @ 0x31a0e00] stream=0 stream_type=f pid=4a prog_reg_desc=
 [mpegts @ 0x31a0e00] stream=1 stream_type=1b pid=4b prog_reg_desc=
 [mpegts @ 0x31a0e00] Before avformat_find_stream_info() pos: 0 bytes
 read:9872 seeks:0
 [h264 @ 0x31a71a0] non-existing PPS 0 referenced
     Last message repeated 1 times
 [h264 @ 0x31a71a0] decode_slice_header error
 [h264 @ 0x31a71a0] no frame!
 [h264 @ 0x31a71a0] non-existing PPS 0 referenced
     Last message repeated 1 times
 [h264 @ 0x31a71a0] decode_slice_header error
 [h264 @ 0x31a71a0] no frame!
 [h264 @ 0x31a71a0] non-existing PPS 0 referenced
     Last message repeated 1 times
 [h264 @ 0x31a71a0] decode_slice_header error
 [h264 @ 0x31a71a0] no frame!
 [h264 @ 0x31a71a0] no picture
 [mpegts @ 0x31a0e00] max_analyze_duration 5000000 reached at 5013333
 microseconds
 [mpegts @ 0x31a0e00] After avformat_find_stream_info() pos: 1182896 bytes
 read:1184272 seeks:0 frames:362
 Input #0, mpegts, from 'http://InputIP:8042/InputStream':
   Duration: N/A, start: 54069.750767, bitrate: 149 kb/s
   Program 1
     Stream #0:0[0x4a](rus), 237, 1/90000: Audio: aac (LC) ([15][0][0][0] /
 0x000F), 48000 Hz, stereo, fltp, 149 kb/s
     Stream #0:1[0x4b], 125, 1/90000: Video: h264 (High) ([27][0][0][0] /
 0x001B), yuv420p(left), 704x576 [SAR 16:11 DAR 16:9], 1/50, 25 fps, 25
 tbr, 90k tbn, 50 tbc
 Successfully opened the file.
 Parsing a group of options: output file rtmp://OutputIP:10000/live/ars.
 Applying option acodec (force audio codec ('copy' to copy stream)) with
 argument aac.
 Applying option ar (set audio sampling rate (in Hz)) with argument 44100.
 Applying option ac (set number of audio channels) with argument 2.
 Applying option b:a (video bitrate (please use -b:v)) with argument 96k.
 Applying option vcodec (force video codec ('copy' to copy stream)) with
 argument copy.
 Applying option f (force format) with argument flv.
 Successfully parsed a group of options.
 Opening an output file: rtmp://OutputIP:10000/live/ars.
 [rtmp @ 0x31a7620] Handshaking...
 [rtmp @ 0x31a7620] Type answer 3
 [rtmp @ 0x31a7620] Server version 3.0.1.1
 [rtmp @ 0x31a7620] Proto = rtmp, path = /live/ars, app = live, fname = ars
 [rtmp @ 0x31a7620] Server bandwidth = 2500000
 [rtmp @ 0x31a7620] Client bandwidth = 2500000
 [rtmp @ 0x31a7620] New incoming chunk size = 4096
 [rtmp @ 0x31a7620] Releasing stream...
 [rtmp @ 0x31a7620] FCPublish stream...
 [rtmp @ 0x31a7620] Creating stream...
 [rtmp @ 0x31a7620] Sending publish command for 'ars'
 Successfully opened the file.
 detected 4 logical cores
 [graph 0 input from stream 0:0 @ 0x31a0940] Setting 'time_base' to value
 '1/48000'
 [graph 0 input from stream 0:0 @ 0x31a0940] Setting 'sample_rate' to value
 '48000'
 [graph 0 input from stream 0:0 @ 0x31a0940] Setting 'sample_fmt' to value
 'fltp'
 [graph 0 input from stream 0:0 @ 0x31a0940] Setting 'channel_layout' to
 value '0x3'
 [graph 0 input from stream 0:0 @ 0x31a0940] tb:1/48000 samplefmt:fltp
 samplerate:48000 chlayout:0x3
 [audio format for output stream 0:1 @ 0x318ca00] Setting 'sample_fmts' to
 value 'fltp'
 [audio format for output stream 0:1 @ 0x318ca00] Setting 'sample_rates' to
 value '44100'
 [audio format for output stream 0:1 @ 0x318ca00] Setting 'channel_layouts'
 to value '0x3'
 [audio format for output stream 0:1 @ 0x318ca00] auto-inserting filter
 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the
 filter 'audio format for output stream 0:1'
 [AVFilterGraph @ 0x31a0500] query_formats: 4 queried, 6 merged, 3 already
 done, 0 delayed
 [auto-inserted resampler 0 @ 0x3288a60] ch:2 chl:stereo fmt:fltp r:48000Hz
 -> ch:2 chl:stereo fmt:fltp r:44100Hz
 Output #0, flv, to 'rtmp://OutputIP:10000/live/ars':
   Metadata:
     encoder         : Lavf56.15.102
     Stream #0:0, 0, 1/1000: Video: h264 ([7][0][0][0] / 0x0007),
 yuv420p(left), 704x576 (0x0) [SAR 16:11 DAR 16:9], 1/90000, q=2-31, 25
 fps, 1k tbn, 90k tbc
     Stream #0:1(rus), 0, 1/1000: Audio: aac ([10][0][0][0] / 0x000A),
 44100 Hz, stereo, fltp, 96 kb/s
     Metadata:
       encoder         : Lavc56.13.100 aac
 Stream mapping:
   Stream #0:1 -> #0:0 (copy)
   Stream #0:0 -> #0:1 (aac (native) -> aac (native))
 Press [q] to stop, [?] for help
 [flv @ 0x31c9a20] Failed to update header with correct
 duration.ate=1726.5kbits/s
 [flv @ 0x31c9a20] Failed to update header with correct filesize.
 frame=  758 fps= 30 q=-1.0 Lsize=    6413kB time=00:00:30.48
 bitrate=1723.0kbits/s
 video:6017kB audio:358kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.581407%
 Input file #0 (http://InputIP:8042/InputStream):
   Input stream #0:0 (audio): 1430 packets read (498746 bytes); 1430 frames
 decoded (1464320 samples);
   Input stream #0:1 (video): 761 packets read (6174587 bytes);
   Total: 2191 packets (6673333 bytes) demuxed
 Output file #0 (rtmp://OutputIP:10000/live/ars):
   Output stream #0:0 (video): 758 packets muxed (6161396 bytes);
   Output stream #0:1 (audio): 1313 frames encoded (1344512 samples); 1314
 packets muxed (367077 bytes);
   Total: 2072 packets (6528473 bytes) muxed
 1430 frames successfully decoded, 0 decoding errors
 [AVIOContext @ 0x328b7e0] Statistics: 0 seeks, 2097 writeouts
 [rtmp @ 0x31a7620] UnPublishing stream...
 [rtmp @ 0x31a7620] Deleting stream...
 [AVIOContext @ 0x31a06e0] Statistics: 7114428 bytes read, 0 seeks
 }}}

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


More information about the FFmpeg-trac mailing list