如何使用此ffmpeg python脚本正确剪切视频

问题描述 投票:1回答:1

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

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

我最初定义为0,结束标记为每个部分的长度。

例如,如果视频文件为139 mb且长度为20分钟,则将其大小除以64 [2.171875]会将其转换为整数plus 1,以便为最后64 MB标记后的任何视频量。然后,使用该数量的[[parts,然后将视频的长度(在我们的示例中为20分钟= 1200秒)除以要获取的视频的部分数(之前设置为parts的变量) (1200秒除以3的部分=)400,这是每个部分的长度(部分长度)。现在,它运行一个循环以转换零件的数量,以转换视频,其起点(在ffmpeg命令中表示为-ss)最初为0,终点(-t)最初为长度的1 part(在我们的情况下为400)。第一次运行后,为确保起点和终点正确,它将打印起点和终点。所有运行都说明正确的起点和终点(0-400; 400-800; 800-1200)。第一个和第三个文件可以完美转换,而三个文件中的第二个文件具有400-1200(包括第三个文件)。

有没有理由不复制正确的句段?
python ffmpeg subprocess video-processing python-3.8
1个回答
0
投票

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

-t是持续时间,而不是最终时间戳。因此,-ss 400 -t 800告诉ffmpeg从t = 400开始复制800秒。使用-to代替-t
© www.soinside.com 2019 - 2024. All rights reserved.