[FFmpeg-devel] questions about multi-thread issues for ffmpeg

qw applemax82 at 163.com
Mon Sep 12 11:30:10 EEST 2016


hi Ronald,


>does ffmpeg support multi-thread in this case? If not, which ffmpeg
>> functions should be synchronized by application developer?
>
>
>Yes, ffmpeg supports multi-threading (internally), it is tested
>continuously and is considered very safe.
>
>Can you show some code? I'm wondering if your use is unusual.



In my side, ffmpeg 2.8.6 is used to make the simple transcoding program, while x264 as video encoder with 2 pass rate control algorithm.


Because of using 2-pass rate control, AVFormatContext is created with setting AVFMT_NOFILE for 1st pass, which just encodes video stream. After encoding the total video stream, video and audio streams are encoded for 2nd pass. If two transocding tasks are started simultaneously, and each corresponds to one thread, AVFormatContext::oformat->flags is changed to unset AVFMT_NOFILE at the end of 1st pass encoding, i.e. flushing bufferred video from x264 encoder.


If AVFMT_NOFILE is unset in AVFormatContext::oformat->flags for 1st pass, there is no crash issue any more.


Thanks!


Regards


Andrew



At 2016-09-08 17:56:07, "Ronald S. Bultje" <rsbultje at gmail.com> wrote:
>Hi Andrew,
>
>On Thu, Sep 8, 2016 at 3:59 AM, qw <applemax82 at 163.com> wrote:
>
>> I have made one simple transcoding program by using ffmpeg lib, where
>> several av transcoding tasks are done in one process and each task
>> corresponds to one thread.
>>
>> But some ffmpeg function will report error, and sometimes the multi-thread
>> version of transcoding program will crash abnormally.
>>
>> For example, av_guess_format("mp4", NULL, NULL) returns error accidentally
>> with several concurrent tasks. And transcoding program will crash, when
>> calling av_interleaved_write_frame ().
>>
>
>Have you tried running this under valgrind? It is typically very helpful to
>see what causes the crash.
>
>does ffmpeg support multi-thread in this case? If not, which ffmpeg
>> functions should be synchronized by application developer?
>
>
>Yes, ffmpeg supports multi-threading (internally), it is tested
>continuously and is considered very safe.
>
>Can you show some code? I'm wondering if your use is unusual.
>
>Ronald
>_______________________________________________
>ffmpeg-devel mailing list
>ffmpeg-devel at ffmpeg.org
>http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


More information about the ffmpeg-devel mailing list