如何在ffmpeg-python中合并视频和音频文件

时间:2019-07-10 14:43:16

标签: python ffmpeg

我正在尝试将视频(无声音)与其单独的音频文件合并

我已经尝试过ffmpeg junction 而且效果很好。

我正在尝试从ffmpeg-python实现相同的输出,但是没有运气。有关如何执行此操作的任何帮助?

4 个答案:

答案 0 :(得分:0)

您可以使用subprocess

import subprocess    
subprocess.run("ffmpeg -i video.mp4 -i audio.mp4 -c copy output.mp4")

您还可以使用fstrings将变量名用作输入:

videofile = "video.mp4"
audiofile = "audio.mp4"
outputfile = "output.mp4"
codec = "copy"
subprocess.run(f"ffmpeg -i {videofile} -i {audiofile} -c {codec} {outputfile}")

答案 1 :(得分:0)

我有同样的问题。

在您的环境中放入pip install ffmpeg-python之后,这是python代码:

import ffmpeg

input_video = ffmpeg.input('./test/test_video.webm')

input_audio = ffmpeg.input('./test/test_audio.webm')

ffmpeg.concat(input_video, input_audio, v=1, a=1).output('./processed_folder/finished_video.mp4').run()

v=1: 设置输出视频流的数量,即每个段中的视频流的数量。默认值为1。

a=1:设置输出音频流的数量,也就是每个段中的音频流的数量。默认值为0。

有关ffmpeg.concat的详细信息,请查看:https://ffmpeg.org/ffmpeg-filters.html#concat

您可以在此处查看更多示例:https://github.com/kkroening/ffmpeg-python/issues/281

希望这会有所帮助!

PS。 如果您使用的是MacOS并出现错误: FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg'在运行代码时,仅在您的终端机中brew install ffmpeg

答案 2 :(得分:0)

import ffmpeg
input_video = ffmpeg.input("../resources/video_with_audio.mp4")
added_audio = ffmpeg.input("../resources/dance_beat.ogg").audio.filter('adelay', "1500|1500")
merged_audio = ffmpeg.filter([input_video.audio, added_audio], 'amix')
(ffmpeg
.concat(input_video, merged_audio, v=1, a=1)
.output("mix_delayed_audio.mp4")
.run(overwrite_output=True))

您可以查看此链接https://github.com/kkroening/ffmpeg-python/issues/281#issuecomment-546724993

答案 3 :(得分:-1)

添加如下代码: https://github.com/russellstrei/combineViaFFMPEG

它遍历目录,找到“.mp4”文件,将其添加到 ffmpeg 要使用的文件中,然后执行命令。

for name in glob.glob(directory +"\\"+ '*.mp4'):
    print(name)
    file1 = open(processList, "a")  # append mode
    file1.write("file '" + name + "'\n")
    file1.close()
    execute()

def execute():
    cmd = "ffmpeg -f concat -safe 0 -i " + processList + " -c copy "+ dir + "output.mp4"
    os.system(cmd)