我想在短时间内合并 2 个或更多视频。
我认为concat-demuxer是最好的,但它需要TXT文件。
在python中,是否可以在没有TXT文件的情况下使用ffmpeg concat-demuxer?
运行程序并向包含所有视频的目标目录提供输入。
视频将按其姓名的字母数字顺序排序,并按顺序合并。
输入最终视频的名称,合并后的视频将保存在目标目录中。
# Video Merging Code using FFMPEG in python using ffmpeg concat-demuxer in safe mode
# Mimicing the linux command : ffmpeg -f concat -safe 0 -i video_list.txt -c copy output.mp4
# Un-install and re-install correct python supported ffmpeg
# !pip uninstall ffmpeg
# !pip uninstall ffmpeg-python
# !pip install ffmpeg-python
import os
import re
import glob
import ffmpeg
video_files_path = input("Enter path of directory for video list")
video_file_list = glob.glob(f"{video_files_path}/*.mp4")
loaded_video_list = []
def sorted_nicely(l):
""" Sort the given iterable in the way that humans expect."""
def convert(text): return int(text) if text.isdigit() else text
def alphanum_key(key): return [convert(c)
for c in re.split('([0-9]+)', key)]
return sorted(l, key=alphanum_key)
video_file_list = sorted_nicely(video_file_list)
merged_video_name = input("Enter name for the new video")
merged_video_path = os.path.join(
video_files_path, f"{merged_video_name}.mp4")
merged_video_list_name = os.path.join(
video_files_path, f"{merged_video_name}_video_list.txt")
with open(merged_video_list_name, 'w') as f:
for video in video_file_list:
print(f"file {video}", file=f)
print(f"file {video}")
f.close()
ffmpeg.input(merged_video_list_name,
format='concat', safe=0).output(merged_video_path, c='copy').run()
请参阅以下链接了解更多信息:
https://github.com/kkroening/ffmpeg-python/issues/137
https://stackoverflow.com/a/11175851/14950576
在python中,是否可以在没有TXT文件的情况下使用ffmpeg concat-demuxer?
不,自 2024 年起(ffmpeg-python 版本 0.2),如果不显式创建驱动 concat demuxer 的文本文件,就不可能使用 ffmpeg-python 来 concat-demux。
另请参阅: