FFmpeg.AutoGen多进程解码视频时CPU占用率异常升高问题求助
FFmpeg.AutoGen多进程解码CPU占用率异常飙升问题
我正在使用FFmpeg.AutoGen API解码视频流,遇到关键问题:单进程运行时CPU占用率约0.5%,但开启约20个同类进程后,每个进程的CPU占用率最高可达3%。
任务管理器截图:

线程架构
读包与解码操作分别在不同线程执行。
读包相关代码
private static unsafe void Read(VideoStreamReader reader) { while (true) { reader.TryReadNextPacket(); } }
public void TryReadNextPacket() { ffmpeg.av_read_frame(_pFormatContext, _pPacket); if (_pPacket->stream_index == _streamIndex) Program.packets.Enqueue(*_pPacket); else ffmpeg.av_packet_unref(_pPacket); }
解码相关代码
private static unsafe void Decode(VideoStreamDecoder decoder) { while (true) { Console.WriteLine($"{packets.Count} BEFORE"); if (packets.Count > 0) { packets.TryDequeue(out var packet); Console.WriteLine($"{packets.Count} AFTER"); decoder.TryReadNextFrame(out var frame, packet); _frame = frame; } else { Thread.Sleep(40); } } }
public void TryReadNextFrame(out AVFrame frame, AVPacket packet) { ffmpeg.avcodec_send_packet(_pCodecContext, &packet); ffmpeg.av_packet_unref(&packet); ffmpeg.avcodec_receive_frame(_pCodecContext, _pFrame); ffmpeg.av_hwframe_transfer_data(_receivedFrame, _pFrame, 0); frame = *_receivedFrame; }
已排查的方向
- 禁用基于Vulkan的渲染后,CPU占用率仍随进程数量增长,排除渲染环节的影响;
- 禁用解码仅保留渲染时,CPU占用率保持稳定,明确问题根源在解码流程中。
内容的提问来源于stack exchange,提问作者faith0058
相关产品推荐
相关产品推荐

