Opened 3 years ago

Last modified 3 years ago

#4270 new defect

tee muxing problem when -vcodec copy

Reported by: arsen Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: muxing, tee
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

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

Change History (2)

comment:1 Changed 3 years ago by BlackDream

Tee mux seems to be a bit buggy to me as well ( https://trac.ffmpeg.org/ticket/4096 )

comment:2 Changed 3 years ago by arsen

guys, when we can expect this issue fixing ?

Note: See TracTickets for help on using tickets.