如何在ffmpeg-python中使用concat-demuxer?

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

我想在短时间内合并 2 个或更多视频。

我认为concat-demuxer是最好的,但它需要TXT文件。

在python中,是否可以在没有TXT文件的情况下使用ffmpeg concat-demuxer?

python ffmpeg
2个回答
1
投票

运行程序并向包含所有视频的目标目录提供输入。

视频将按其姓名的字母数字顺序排序,并按顺序合并。

输入最终视频的名称,合并后的视频将保存在目标目录中。

# 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

https://stackoverflow.com/a/2669120/14950576

https://trac.ffmpeg.org/wiki/Concatenate


0
投票

在python中,是否可以在没有TXT文件的情况下使用ffmpeg concat-demuxer?

不,自 2024 年起(ffmpeg-python 版本 0.2),如果不显式创建驱动 concat demuxer 的文本文件,就不可能使用 ffmpeg-python 来 concat-demux。

另请参阅:

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