web-dev-qa-db-ja.com

ビデオを複数の部分に分割する

いくつかの大きなビデオをいくつかに分割したいのですが。私が知っている唯一の方法は、OpenShotで一度に1つのパーツを分割することです。私は分割しなければならず、長い間待ち、パーツを削除し、次のパーツを分割します...

もっと良い方法はありますか?私はグーグルしようとしましたが、すべての方法は一度に1つの部分を分割する必要があるようです。各ビデオを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
3
fadiak

ここに私のために働いた解決策があります。

例えば:

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の値を取得し、式とドラッグで追跡します。

3
fadiak

これを頻繁に行う場合は、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

非常にいコードであり、おそらく多くのエラーと空のファイルを生成し、入力ファイルの長さが1時間を超える場合は適切に動作しないことに注意してください。

1
v010dya