1行のコマンドでビデオの一部を抽出する

1行のコマンドでビデオの一部を抽出する

通常はaviですが、どんな形式でも構いませんが、同じ形式で一部だけ別のビデオを作成したい場合、位置秒までビデオの開始から数秒後、これを実行するための 1 行のコマンドは何ですか?

答え1

mencoderこれはまたは を使用して実行できますffmpeg

メンコーダー

たとえば、元のファイルの 00:00:30 から始まる部分を 5 秒の長さで切り取り、再エンコードしたくないとします (再エンコードする場合は、copyオーディオ コーデックとビデオ コーデックに置き換える必要があります。使用可能なオーディオ コーデックの一覧については を参照してください。使用可能mencoder -oac helpなビデオ コーデックの一覧については を参照してmencoder -ovc helpください)。その場合は、次のように実行します。

mencoder -ss 00:30:00 -endpos 00:00:05 -oac pcm -ovc copy originalfile -o newfile

orginalfileと を実際のファイル名に置き換える必要がありますnewfile。後者は、切り取られた部分を保持するために作成されたファイルの名前です。

ffmpeg

たとえば、元のファイルの 00:00:30 から始まる部分を 5 秒の長さで切り取り、再エンコードしたくないとします (再エンコードする場合は、copyオーディオ コーデックとビデオ コーデックに置き換える必要があります。使用可能なコーデックのリストについては、 を参照ffmpeg -formats -Eしてください)。その場合は、次のように入力します。

ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile

orginalfileと を実際のファイル名に置き換える必要がありますnewfile。後者は、切り取られた部分を保持するために作成されたファイルの名前です。


参考:http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html「7. ビデオの一部だけをコピーする」http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

答え2

再エンコードモードでビデオをカットする必要がありますか、それとも再エンコードモードなしでビデオをカットする必要がありますか? 以下のコマンドを試してください。

概要: ffmpeg -i [入力ファイル] -ss [開始秒数] -t [継続時間秒数] [出力ファイル]

FFmpegを使用して再エンコードせずにmp4ビデオをカットする

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

FFmpegを使用してmp4ビデオを再エンコードしてカットする

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 cut_video.mp4

セクションを最初から切り取りたい場合は、-t 00:00:10コマンドからドロップするだけです

答え3

メディパックは、 のラッパーとしての非常にシンプルなコマンドライン アプリですffmpeg

次のコマンドを使用してビデオをトリミングできます。

medipack trim input.mp4 -s 01:04 -e 14:08 -o output.mp4
medipack trim input.mp4 -s 01:04 -t 13:04 -o output.mp4

trim サブコマンドのオプションは次のように表示されます。

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

他のオプションを調べることもできますmedipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Display version number

訪問することができますhttps://github.com/srbcheema1/medipackREADME の例を確認してください。

答え4

より正確に言うと、次の操作を実行できます。手動で、フレームごとに進むメディア プレーヤー (potplayer がお気に入りですが、MPC-HC でも動作します) でファイルを開き、次のようなデータを含む AVISynth ファイルを再生します。

DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)

ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)

次に、正確な時間形式でカットします。

ffmpeg -i "Path\do you want him.flv" -ss 00:00:05.240 -to 00:00:08.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him1.flv"

そして

ffmpeg -i "Path\do you want him.flv" -ss 00:00:10.240 -to 00:00:14.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him2.flv"

参加したい場合は、次のような内容のビデオファイルを含む txt ファイルを作成してください。

file 'C:\Downloads\Video\Do you want him1.flv'

file 'C:\Downloads\Video\Do you want him2.flv'

走るffmpeg

ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"

プログラム的にプログラムを書きましたが、それを示すレベル10がありません。申し訳ありません

関連情報