通过命名管道向FFmpeg传输音视频数据时,FFmpeg仅接收1帧视频后就读取音频管道的问题求助
通过命名管道向FFmpeg传输音视频数据时,FFmpeg仅接收1帧视频后就读取音频管道的问题求助
嘿,我最近碰到个棘手的问题,想跟大家请教下:
我原本可以通过命名管道逐个把视频帧传给FFmpeg,顺利生成视频文件。但当我尝试同时把音频数据传到第二个命名管道,让FFmpeg同时处理音视频时,怪事发生了——FFmpeg只接收了1帧视频数据,就立刻开始读取音频管道,后续的视频帧好像根本没被处理,整个音视频合成流程完全乱套了。
我用的FFmpeg命令如下:
ffmpeg.exe -loglevel debug -hwaccel auto -f:v rawvideo -r 25 -pix_fmt bgra -video_size 782x601 -i \\.\pipe\video_to_ffmpeg -f:a s16le -ac 2 -ar 48000 -i \\.\pipe\audio_to_ffmpeg -c:v libx264 -preset fast -pix_fmt yuv420p -vf "scal
(注:命令后半段的滤镜参数未完整粘贴,实际使用时为完整参数)
目前我自己摸索了一些方向但还没解决,想问问有没有朋友遇到过类似情况,或者能给点排查建议?比如:
- 是不是音视频数据的推送时序出了问题?比如得先推送足够量的视频帧作为缓冲,再启动音频推送?
- FFmpeg有没有可调整的参数,能优化多输入的缓冲大小或者优先级,避免它因为视频输入暂时断流就立刻切换到音频输入?
- 会不会是命名管道的写入逻辑有问题?比如视频管道的写入操作有没有持续稳定地进行,而非只推送1帧就暂停?
备注:内容来源于stack exchange,提问作者Nicke Manarin




