python - 如何使用这个 ffmpeg python 脚本正确剪切视频

标签 python ffmpeg subprocess video-processing python-3.8

我正在尝试编写一个 python 脚本,将视频分成每个小于 64 mb 的 block 。这是我的 for 循环,用于转换分解视频的每个 block :

for part in range(parts):
    print(start, end)
    subprocess.run(f"ffmpeg -i {filename} -vcodec copy -acodec copy -ss {start} -t {end} {newfile}\OutputPart{part}.mp4", shell=True)
    start = end
    end += partlength

我原本定义start为0,end标记为各部分的长度。

例如,如果视频文件大小为 139 mb,长度为 20 分钟,则将大小除以 64 [2.171875] 将其转换为整数加 1以便在最后 64 mb 标记之后为任意数量的视频添加第三部分。然后,它采用该部分数,并将视频长度(在我们的例子中为 20 分钟 = 1200 秒)除以部分数(之前设置为 parts 的变量>) 这将得到 (1200 秒除以 3 个部分 = ) 400,这是每个部分应该的长度 (partlength)。现在,它运行一个针对部分数量的循环,以转换起始点(在 ffmpeg 命令中表示为 -ss)最初为 0、结束点的视频点 (-t),最初为 1 part 的长度(在我们的例子中为 400)。第一次运行后,为了确保起点和终点正确,它会打印起点和终点。所有运行均显示正确的起点和终点(0-400;400-800;800-1200)。第一个和第三个文件完美转换,而三个文件中的第二个文件的转换速度为 400-1200(包括第三个文件)。

是否有原因导致它无法复制正确的段?

最佳答案

第一个和第三个文件完美转换,而三个文件中的第二个文件的转换结果为 400-1200(包括第三个文件)。

-t 是持续时间,而不是最终时间戳。因此,-ss 400 -t 800 告诉 ffmpeg 从 t=400 开始复制 800 秒。使用 -to 而不是 -t

关于python - 如何使用这个 ffmpeg python 脚本正确剪切视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279463/

相关文章:

python - 将 PyTorch CUDA 张量转换为 NumPy 数组

ffmpeg - 无法在 ffmpeg 视频转换中保留元数据

windows - subprocess.Popen args 的编码问题

python - 通过python脚本调用ProxyCommand时“No such file or directory”

python - 具有多列的 GtkTreeView 和具有单一自定义类型的 GtkListStore(在 Python 中)

Python子集和切片 [index, :] format

python - Pandas 高级索引分配

c++ - ffmpeg:对 'uncompress' 的 undefined reference

javascript - 如何使用 FFmpeg.wasm 验证视频文件

python - 从/usr/bin/* 执行命令时,来自 subprocess.run 的 FileNotFoundError - Python