使用Python-FFmpeg实现图片循环至音频结束失败,程序疑似无限运行
解决图片循环与音频合成视频的无限运行问题
问题原因
你当前代码使用concat滤镜的方式错误,concat是用于拼接多个完整的音视频片段,而非合并单独的视频流(循环图片)和音频流。无限循环的图片流通过concat与音频流合并后,输出流仍会保持无限时长,导致-shortest参数无法生效,程序陷入无限运行。
修正后的代码
audio = ffmpeg.input("test/audios/1.mp3") image = ffmpeg.input("test/images/1.jpg", loop=1) video = ffmpeg.output(image, audio, "test/test.mp4", shortest=True, vcodec="mjpeg", acodec="mp3") ffmpeg.run(video)
代码说明
- 移除
concat滤镜,直接将循环图片的视频流与音频流传入ffmpeg.output() shortest=True会让输出视频的长度自动匹配较短的输入流(即音频的时长),图片会循环播放直到音频结束- 生成的FFmpeg命令参数为:
['-loop', '1', '-i', 'test/images/1.jpg', '-i', 'test/audios/1.mp3', '-shortest', '-vcodec', 'mjpeg', '-acodec', 'mp3', 'test/test.mp4']
内容的提问来源于stack exchange,提问作者Nguyen Nguyen
相关产品推荐
相关产品推荐

