将视频分割成多个部分

将视频分割成多个部分

我有几个大视频需要分割成几部分。我知道的唯一方法是用 OpenShot 一次分割一个部分。我必须分割,等待很长时间,删除该部分,分割下一部分,...

有没有更好的方法?我尝试谷歌搜索,但似乎所有方法都需要一次分割一个部分。这真的很不方便,因为我需要将每个视频分割成 20-30 个部分。我希望能够标记所有分割点,然后稍后再回来发现一切都完成了。有人知道方法吗?

更新:现在我正在研究一个命令行解决方案。我尝试了这个命令,但唯一的问题是,在每个输出分割的开始(和结束)处,视频都会有几秒钟的冻结。

avconv -i x.mp4 -ss 00:00:00 -t 00:01:00 -c:v copy -c:a copy out.mp4  -ss 00:01:00 -t 00:01:00 -c:v copy -c:a copy out1.mp4  -ss 00:02:00 -t 00:01:00 -c:v copy -c:a copy out2.mp4  -ss 00:03:00 -t 00:04:00 -c:v copy -c:a copy out3.mp4

答案1

这是一个对我有用的解决方案。

例如:

avconv -ss 0 -i x.mp4 -t 180  -vcodec copy -acodec copy -metadata track="1" "Part I.mp4"              
avconv -ss 180 -i x.mp4 -t 164  -vcodec copy -acodec copy -metadata track="2" "Part II.mp4"              
avconv -ss 344 -i x.mp4 -t 185  -vcodec copy -acodec copy -metadata track="3" "Part III.mp4"   

我有 50 个条目,我把它们放在一个脚本里。我首先把骨架放在

avconv -ss  -i x.mp4 -t   -vcodec copy -acodec copy -metadata track="  " ".mp4"  

然后我填写了 -ss 并输入了标题。之后,我使用 libreoffice Calc 并以空格作为分隔符。我使用公式和拖动获得了 -t 和 track 的值。

答案2

如果你经常这样做,你可以尝试创建一个 bash 脚本。从以下脚本开始:

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

FILES=$(ls *.mp4|sort)

let START=0

for FILE in $FILES
do
    echo Processing $FILE
    mkdir "${FILE}-chop"
    for COUNT in {1..59}
    do
        exec avconv -i "${FILE}" -ss $START -t 60 -c:v copy -c:a copy "./${FILE}-chop/${COUNT} - ${FILE}"
        let START=$START+60
    done
done

IFS=$SAVEIFS

请记住,这是一个非常丑陋的代码,它可能会产生许多错误和空文件,并且如果输入文件超过一个小时,它将无法正常工作,但它可以帮助您入门。

相关内容