For different profiles, your approach seems ok in my opinion. For same profiles, (ex: 480x270) you can use one input, for sending multiple outputs. (Just add -f flv BACKUPURL for primary source). If realtime is not important, or some delays, you can save as file, and re encode to rtmp then, thats more effective, when your "UDP" source might have packet loss, bad encoding..etc which will break ffmpeg proccess. One proccess (ffmpeg command) can do all those piped commands works, but the reason i mentioned, i advice you to keep proccesses seperated like you do.
------------------------------------------------------------------------ Cem İbrahim ARI http://www.creativeblack.net | http://twitter.com/cemibrahimari On Thu, Sep 4, 2014 at 9:05 PM, Soner CAN <[email protected]> wrote: > Hello there, > > Firstly, here is my command (a more colorful view exists here > <http://pastebin.com/NvVpVfYA>): > > ffmpeg -y -i udp://172.16.11.111:2011 -pix_fmt yuv420p -c:a libfdk_aac > > -c:v libx264 -b:v 5000k -aspect 16:9 -ar 44100 -b:a 48k -ac 1 -vf > > crop=in_w-2*16:in_h-2*18 -f flv - | ffmpeg -re -f flv -i - > > -c:a copy -c:v libx264 -b:v 665k -s 640x360 -force_key_frames > > "expr:gte(t,n_forced*2)" -f flv "rtmp:// > > xx:[email protected]/EntryPoint/zzzz_360@11111" > > -c:a copy -c:v libx264 -b:v 412k -s 480x270 -force_key_frames > > "expr:gte(t,n_forced*2)" -f flv "rtmp:// > > xx:[email protected]/EntryPoint/zzzz_270@11111" > > -c:a copy -c:v libx264 -b:v 158k -s 320x180 -force_key_frames > > "expr:gte(t,n_forced*2)" -f flv "rtmp:// > > xx:[email protected]/EntryPoint/zzzz_180@11111" > > -c:a copy -c:v libx264 -b:v 665k -s 640x360 -force_key_frames > > "expr:gte(t,n_forced*2)" -f flv "rtmp:// > > xx:[email protected]/EntryPoint/zzzz_360@11111" > > -c:a copy -c:v libx264 -b:v 412k -s 480x270 -force_key_frames > > "expr:gte(t,n_forced*2)" -f flv "rtmp:// > > xx:[email protected]/EntryPoint/zzzz_270@11111" > > -c:a copy -c:v libx264 -b:v 158k -s 320x180 -force_key_frames > > "expr:gte(t,n_forced*2)" -f flv "rtmp:// > > xx:[email protected]/EntryPoint/zzzz_180@11111" > > > I'm sending a UDP stream to 2 different entry points: First one is PRIMARY > and second on is BACKUP. The command I'm using is above. Nevertheless I > think that this command may be way more optimized? > > 1. Is my piping strategy something acceptable? Because some of my > colleagues claim that "using pipe is a bad practice". If it's bad, any > better options? > > 2. Is there a way to send a "-" output without encoding it EACH time > sending to a different entry point? I think with an optimized command, > ffmpeg should transcode each profile (there are 180p, 270p and 360p) only > ONCE. Because currently it's encoding the source even for BACKUP. However > it previously encodes video for PRIMARY entry point. > > Thank you in advence! > > Soner CAN > _______________________________________________ > ffmpeg-user mailing list > [email protected] > http://ffmpeg.org/mailman/listinfo/ffmpeg-user > _______________________________________________ ffmpeg-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-user
