FFMPEG 导出的视频全黑

问题描述 投票:0回答:1

我正在尝试使用 ffmpeg 生成 4 个视频的视频墙,如给定图像

我正在执行下面的脚本以获得所需的结果

def merge_videos(output_file):
    command = [
        'path_to_ffmpeg/ffmpeg.exe',
        '-i', 'path/playblasts/front.mp4',
        '-i', 'path/playblasts/side.mp4',
        '-i', 'path/playblasts/persp1.mp4',
        '-i', 'path/playblasts/persp2.mp4',
        '-filter_complex', '[0:v][1:v][2:v][3:v]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[v]',
        '-map', '[v]',
        output_file
    ]
    subprocess.run(command)

将输出文件路径作为参数传递,但我得到的结果如下

如有任何帮助,我们将不胜感激。 谢谢并致以最诚挚的问候

python ffmpeg
1个回答
0
投票

我能够使用您提供的确切脚本(ffmpeg 6.1.1)获得所需的结果,因此Python脚本和给定的ffmpeg参数工作正常。问题可能出在输入视频和/或您的设置上,因此您必须在您的计算机上对此进行更多研究。以下是一些可能有帮助的建议:

  • 一般来说,在调试涉及许多组件(例如Python、ffmpeg、编码器、解码器、视频播放器等)的问题时,它有助于“尽可能地隔离问题”。您在这里通过 Python 运行 ffmpeg。如果直接在命令行运行 ffmpeg 时问题仍然存在,那么这不是与 Python 相关的问题。头痛已经减轻了:)如果它在任何输入视频上持续存在,那么它与输入无关,等等。 首先检查您的 ffmpeg 版本。尝试更新。这可能是一个不久前已修复的错误。
  • 可能是播放器兼容性问题。尝试通过添加
  • -r 10
  • (在输出之前,而不是输入之前 - 顺序对于 ffmpeg 很重要)来强制输出帧速率,因为某些播放器无法处理太低的 fps。尝试使用
    -pix_fmt yuv420p
    并使用
    -vf scale=1920:-2
    缩小视频(输出分辨率可能太高)。
    这帮助了其他人
    注意 ffmpeg 输出中的警告/错误,尝试搜索它们。
  • 尝试其他编码器,如 libx265、libvpx-vp9 等。如果这有帮助,但编码速度太慢,并且您更喜欢编码速度而不是每比特/秒的感知质量,请检查是否有任何可用的硬件编码器,例如 hevc_nvenc。
  • 希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.