On 4/21/15 2:51 AM, Marton Balint wrote:


On Mon, 20 Apr 2015, Deron wrote:

On 4/20/15 4:22 PM, Marton Balint wrote:

On Mon, 20 Apr 2015, Deron wrote:

On 4/20/15 1:48 PM, Marton Balint wrote:
On Mon, 20 Apr 2015, Deron wrote:

Another user has contacted me with the exact same problem hoping that I stumbled on a solution for the below problem. I did not, so I am adding some more extensive log output in hopes that someone might recongize the source of the problem.


I have also experienced this problem. Depending on your use case you can face a similar situation with only one input and one output as well and a few cores. There is no buffering between the various stages of the ffmpeg encoder/filter/decoder pipeline, so even if the stages by themselves are multi threaded, you won't be able to scale up, because passing data between the stages is done in a single thread.

Or at least that is what I think is going on. So as far as I know you can only scale up properly by running multiple ffmpeg instances. E.g: create a multicast and encode that.

Regards,
Marton


What would be the best way to solve this then? I'm not sure I understand what you mean by multicast. Having multiple ffmpeg's decoding the same original mpegts input would be pretty slow.

If that overhead is unacceptable, then I don't see any other way. You wrote you had plenty of free CPU :)

Speaking of CPU and having been away from the problem for many weeks, I forget about the important part. The encoding process for the data runs at better than real time (nearly 2x) when pulling from a file instead of the /dvb device. So I don't think that this is thread bound for me but something else.

I'm still missing a piece of the puzzle. Something else is causing me grief.


In that case have you tried using the threaded input read support of ffmpeg? You have to specify more than one inputs (add an extra dummy input source) and play with -thread_queue_size option.

Regards,
Ma


I've resolved this problem and would like to report my solution. The error evidently was coming from some part of azap/dvb device. When I increased the buffer size as per http://panteltje.com/panteltje/dvd/ the problem went away. I can now capture and encode 6 channels simultaneously, outputting 2 video,1 audio, and images for each on this computer. I presume the problem was simply that setup time in ffmpeg increased enough that it (temporarily) exceeded real time encoding and overflowed the buffer between azap and ffmpeg.

I've considering writing an azap-like input module for ffmpeg. I'm sure this is generally frowned on, but in this case I see a couple of advantages. One is obviously this problem with too small a buffer. The other is when interference causes the stream to be degraded, ffmpeg will start consuming huge amounts of cpu until it actually freezes up the computer. Since azap knows when the signal tanks, it would appear to me it could deal with the encoding issue if it had access into the encoder itself. Maybe some way exists already to deal with it, or ffmpeg should simply be made more robust to deal with this problem?

Anyway, thanks for the help!

Deron

_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

Reply via email to