[FFmpeg-user] Maximum argument length for tee pseudo muxer

Marton Balint cus at passwd.hu
Wed Mar 22 11:38:46 EET 2017


On Wed, 22 Mar 2017, luke harrison wrote:

> I'm preparing a script to take a feed coming in over SDI and encode it into
> multiple video and audio streams, all for distribution to different stream
> paths using the tee muxer.
>
> I'm sending quite a few different mixes of the streams to an RTMP server
> which means that my tee muxer is taking quite a large argument. My command
> line is shown below.
>
> ffmpeg -threads 0 -f decklink -i 'UltraStudio Mini Recorder at 11' -loglevel
> debug \
>
> -filter_complex
> "[0:v]split=2[VID1][VID2];[0:a]channelsplit=channel_layout=stereo[AL][AR]"
> -map '[AR]' -map '[AL]' -map '[VID1]' -map '[VID2]' -flags +global_header
> -c:v libx264 -profile:v high -preset veryfast -pix_fmt yuv420p -r 25 -s:v:0
> 640x360 -s:v:1 426x240  -b:v:0 484k -b:v:1 215k -bufsize 1500k -coder 1 -g
> 125 -keyint_min 25 -c:a aac -b:a 64k -ar 44100 -async 1 -rtmp_flashver
> "FMLE/3.0(compatible;FMSc/1.0)" -rtmp_live live -f tee
> "[select=\'a:0,v:0\':f=flv]'${entrypoint}${streampath1}${datavid11}'|
> \
>
>    [select=\'a:1,v:0\':f=flv]'${entrypoint}${streampath2}${datavid11}'| \
>
>    [select=\'a:0,v:1\':f=flv]'${entrypoint}${streampath1}${datavid12}'| \
>
>    [select=\'a:1,v:1\':f=flv]'${entrypoint}${streampath2}${datavid12}'| \
>
>    [select=\'a:0\':f=flv]'${entrypoint}${streampath1}${dataaud11}'| \
>
>    [select=\'a:1\':f=flv]'${entrypoint}${streampath2}${dataaud11}'"
>
> All of the output streams up until the last one (with a:1) connect to the
> server and begin streaming. The issue comes when ffmpeg tries to connect to
> the final stream. The stream path is cut off for some reason. This results
> in ffmpeg trying to connect to a stream path that is incomplete and
> therefore failing.
>
> [tcp @ 0x7fa0dc414180] Failed to resolve hostname p.epXXXXXX.i.ak: nodename
> nor servname provided, or not known
>
> [rtmp @ 0x7fa0dc414100] Cannot open connection tcp://p.epXXXXX.i.ak:1935
>
> [tee @ 0x7fa0de801800] Slave
> '[select='a:1':f=flv]rtmp://XXXXXXX:XXXXXXX@p.epXXXXXX.i.ak': error
> opening: Input/output error
>
> [tee @ 0x7fa0de801800] Slave muxer #5 failed, aborting.
>
> I have confirmed that removing characters within the inverted commas ("")
> after the tee statement allows more of the stream path to be processed by
> ffmpeg and inversely adding characters within the "" results in less of the
> stream path being processed by ffmpeg. The characters can be related to any
> of the commands within the "" and don't need to specifically be any part of
> the stream paths.
>
> To me this looks as if the tee muxer has an undocumented, maximum character
> input limit for the argument that it takes within the inverted commas.
> Would any devs or users be able to confirm this based on experience/a
> deeper knowledge of the code?
>

I am afraid you are reaching the 1024 AVFormatContext->filename limit, 
which is unfortunately fixed in ffmpeg/libavcodec.

Regards,
Marton


More information about the ffmpeg-user mailing list