Ownedmedia ウェブ制作に役立つコンテンツを発信中!

動画作成・編集 2018.04.01

ffmpegで動画を時間単位で切り出したり繋げたりする

Tags: ,
最終更新日:Update

動画データのエンコードやファイルフォーマットの変更に使うffmpegですが、動画データ自体も編集することができます。今回はffmpegで動画を時間単位で切り出したり、複数の動画をつなげる方法についてまとめていきたいと思います。

 

時間単位で指定して動画を切り出す

まずは時間単位での動画の切り出しです。オプションで開始から何秒のところから、何秒間切り取るか、という方法で指定してきます。コマンドは下記のようになります。

 

ffmpeg -i INPUT_FILE -t [second] -ss [second] OUTPUT_FILE

 

オプションについて詳しくはこちらをご参考ください

 

-t 動画の切り出す時間を秒数で指定します
-ss 切り出す部分の開始地点を動画の先頭からの秒数で指定します

 

 

複数の動画を繋ぎ合わせる

次は複数の動画を繋ぎ合わせ1つの動画データにしていきます。ffmpegのバージョンによって違いがあって少しややこしいのですが、今回は現状の最新版で対応している方法になります。

 

まずはテキストファイル(.txt)を用意して、その中に下記のような感じで繋ぎ合わせる動画データのファイルパスをリスト状に並べていきます。そして適当なファイル名をつけて保存します。

【concat.txt】

file '/PATH/sample_01.mp4'
file '/PATH/sample_02.mp4'
file '/PATH/sample_03.mp4'

 

このテキストファイルの作成が終わったら、下記のコマンドで動画を繋ぎ合わせることができます。(テキストファイルと動画は同じディレクトリに用意しておいた方がわかりやすいです)この時、各動画のコーデックが異なる場合は必要なものを指定し、同じコーデックの場合は「-c copy」でコーデックを引き継ぐことができ、書き出しも短時間で終わります。

 

ffmpeg -f concat -safe 0 -i [FILE_NAME] -c copy OUTPUT_FILE

 

また、書き出しが完了して確認すると、音声データ、もしくは映像データが反映されていないというケースもあるようです。これは動画の情報がうまく解析できないために起こるようです。その場合は「-analyzeduration」と「-probesize」オプションを使うことで対応できます。

 

-analyzeduration 動画情報の解析時間をマイクロ秒で指定、整数値(int)で指定します。
-probesize 解析範囲の容量をバイトで指定、整数値(int)で指定します。

 

これらのオプションを使ったコマンドは下記のような感じになります。

 

ffmpeg -analyzeduration [µs] -probesize [byte] -f concat -safe 0 -i [FILE_NAME] -c copy OUTPUT_FILE

 


 

動画のエンコードやフォーマット変換だけでなく、こんな感じで動画編集もできてしまうffmpegはかなり便利なツールですね。これ以外にもまだまだできることがあるようなので、また後日まとめていきたいと思います。

 

(参考にさせて頂いたサイト)
Concatenate – FFmpeg
ffmpegのオプション -analyzeduration と -probesize

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?