Hi, FFmpeg supports multiple outputs created out of the same input in the same process like ffmpeg -i input -filter_complex '[0:v]yadif,split=3[out1][out2][out3]' \ -map '[out1]' -s 1280x720 -acodec … -vcodec … output1 \ -map '[out2]' -s 640x480 -acodec … -vcodec … output2 \ -map '[out3]' -s 320x240 -acodec … -vcodec … output3 In ffmpeg.c, multiple outputs are processed sequentially like for (i = 0; i < nb_output_streams; i++) encoding one frame;
As below wiki noted, the slowest encoder will slow down the whole process. Some encoders (like libx264) perform their encoding "threaded and in the background", but x264_encoder_encode still cost some time. And it is noticeable when multiple x264_encoder_encodes run in the same thread. https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs For API users, they can use separate thread for multiple encoding in their own code. But is there any way to rescue command line users? I want to request for your comments on separation of multiple outputs' encoding in ffmpeg. Refactoring ffmpeg.c seems not a tiny task. Is it acceptable to create a pseudo encoder which run the actual encoding in the separate thread? Best Regards _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".