Help us understand the problem. What is going on with this article?

おさえておきたいffmpeg高速化のまとめ:CPU使用率100%、Load Averageがぁあぁぁぁというときに ヽ(゚ー゚*ヽ)(ノ*゚ー゚)ノわぁい

More than 5 years have passed since last update.

みなさんこんにちは :smile: 日々やばい動画処理エンジンをつくっておりますがコマンドラインから動画処理ができるffmpegを使うことがかなりありまス :movie_camera:

重い :bowling: 処理させるので、CPU使用率100%でLoad Averageは常に1を超えてるとかそんな感じです :scream:

わたし:「lachesis (ホスト名) のLoad Average がぁっぁぁ」
lachesis:「マスター!」

そんな感じ :exclamation: にしても lachesis が馬名になってるなんて、そして、レディオスコーポレーションって・・・将来、馬主 :horse: になって、バッハトマコーポレーションとして、G Iで勝てる馬を買うんだ :money_with_wings:

「レディオスコーポレーションはボクが倒す」

この前はうっかり、連続処理をスケジュールした後、気づいたら Load Average が44とかになってました。4.4だったかもですが、いずれにせよ、ひどい。ラーメン屋 :ramen: の行列に並ぶ感じでなかなかログインできなくなります :sweat_drops:

ひとりで来たのに

店員:「お次の4名でお待ちの方お先にテーブル席にどうぞー」

とか言われたときの、何とも言えない感じ :broken_heart: で二度と来るかと思いつつ、翌日も並ぶわけです :ramen:

本題

ffmpeg には使えるオプションがありすぎです。使いこなせば、AdobeのPremireとかいう動画処理ソフトも不要 :yum: なんだけど、オプションの使い方で、結果は同じなのに、処理速度 :horse_racing: が全然違うことが良くあります

というわけで

高速になる事例をまとめます

役立つことがあるかわかりませんが、Load Averageと住まい :office: は低い方がいいよねということで

:octopus: 動画を切り抜くときの -ss の場所

用途:例えば、動画の20分のところから、1分切り出したいときとか

ポイント:-i の前に -ss を書く

ffmpeg -ss 1200 -i input.mp4 -t 60 out.mp4

という感じがGood :thumbsup:

-i より後に書くのは :thumbsdown:

ffmpeg -i input.mp4 -ss 1200 -t 60 out.mp4

-i より前に書くことで、ffmpegが該当箇所まで適当に読み込みをスキップします

:octopus: 再エンコード、再サンプリングが不要な場合のコーデック指定

用途:切り抜きとか、音はそのままとか、絵はそのままとか

ポイント:コーデック指定に copy で -c:v copy -c:a copy

ffmpeg は頑張り屋で、何でもやります :ghost: でも、そのままでいい所は時間 :watch: の無駄

上の切り抜く場合だと

ffmpeg -ss 1200 -i input.mp4 -t 60 -c:v copy -c:a copy out.mp4

とすると速くなります(速くなるときがあります)

:octopus: フレーム画像の抜き出し

http://qiita.com/scleen_x_x/items/0ba0bc8d34350c5e285b

↑にも書いたのですが、nフレーム毎に画像を抽出する処理をワンラインで書くと超遅いです

用途:30秒ごとに画像を抽出したいときとか

ポイント:ワンラインでできる(select)は使わず、1枚ごと別コマンドにする

遅い例:

ffmpeg -i input.mp4 -filter:v "select=not(mod(n\,1800)),setpts=N/(30*TB)" -qscale:v 2 -y thumbnail-%03d.png

速い例:

ffmpeg -ss 30 -i input.mp4 -r 1 -vframes 1 -f image2 thumbnail-001.png
ffmpeg -ss 90 -i input.mp4 -r 1 -vframes 1 -f image2 thumbnail-002.png
ffmpeg -ss 150 -i input.mp4 -r 1 -vframes 1 -f image2 thumbnail-003.png

随時更新予定

というわけで、 enjoy your ffmpeg life :beer:

おまけ

VPSでリセマラ

ソシャゲで初回ガチャで良い結果が出るまでリセットし続けるのがリセマラ

VPSで良いIPアドレスになるまで引き直すのもリセマラ

scleen_x_x
是非フォローをお願いいたします。ruby/ubuntu/ffmpeg/node.js/Android 関連の投稿が主 ヽ(゚ー゚*ヽ)(ノ*゚ー゚)ノわぁい 。無所属新人。現在放浪・休憩中。動画コンテクストを分析して意味付け、面白さを解釈するエンジン(scleen)をつくってます。Deep-Learningの少し先です。自分が好きな動画が簡単に見つかるといいよね♪
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away