我正在尝试将视频(无声音)与其单独的音频文件合并
我已经尝试过ffmpeg junction
而且效果很好。
我正在尝试从ffmpeg-python实现相同的输出,但是没有运气。有关如何执行此操作的任何帮助?
答案 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)