python - 在python中使用ffmpeg合并音频和视频

标签 python ffmpeg audio-video-sync

我正在尝试将两个文件(.mp3 和 .mp4)合并到一个 .mp4
视频和音频与我的 main.py 位于同一文件夹中,并且没有损坏
这是似乎产生错误的代码:

    if (haveAudio):
        infile1 = ffmpeg.input(title+"_video.mp4")
        infile2 = ffmpeg.input(title+"_audio.mp3")

        merged  = ffmpeg.concat(infile1, infile2, v=1, a=1)
        output  = ffmpeg.output(merged[0], merged[1], title+".mp4")

我在最后一行收到错误:
Traceback (most recent call last):
  File "C:\Users\...\projectName\main.py", line 67, in <module>
    output  = ffmpeg.output(merged[0], merged[1], title+".mp4")
  File "C:\Users\...\Python\Python39\lib\site-packages\ffmpeg\nodes.py", line 70, in __getitem__
    raise TypeError("Expected string index (e.g. 'a'); got {!r}".format(index))
TypeError: Expected string index (e.g. 'a'); got 0
我的猜测是调用 ffmpeg.output() 时缺少一个参数,但根据文档,它似乎是正确的。

最佳答案

我从这个教程中学到了:https://github.com/JNYH/pytube/blob/master/pytube_sample_code.ipynb
我使用了以下两种方法,它们都对我有用:

audio = ffmpeg.input('audio.mp3')
video = ffmpeg.input('video.mp4')

ffmpeg.output(audio, video, 'my_file.mp4').run()
或者
ffmpeg.concat(video, audio, v=1, a=1).output('my_file.mp4').run(overwrite_output=True)

关于python - 在python中使用ffmpeg合并音频和视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72584462/

相关文章:

当我上传 mp4 文件时,PHP FFMPEG 不工作

FFmpeg - 非单调递增的 dts 是什么意思?

python - 在嵌套的 For 循环中查找元素

python - 出现错误 : TemplateAssertionError: no filter named 'n' when printing report?

android - 如何在单个.mp4 ffmpeg android中合并多个.mp4文件

bash - 尝试使用 ffmpeg 在文件夹中循环播放列表

java - Xuggler 是否有更高级别的 API?

Python - 从导入 PostgreSQL 的 csv 文件中删除特殊字符

python - 将许多小图像连接成一个大图像