2007年6月16日土曜日

FFmpegで動画を分割 苦戦メモ

 Web上を漁ってもなかなか解決策が見つからずに思いつき&トライ&エラーで少しずつ前進。まだ壁があるけど、とりあえず分かったことをメモ。

  • -ssは先頭に・・・開始時間を指定するパラメータ"-ss"はパラメータの中の先頭にするといいみたい。(でも静止画を切り出すときは先頭でなくても問題ないんだけど・・・?)
  • 3GPPの音声コーデックはAACで・・・出力ファイルをDoCoMoなどで使う3GPPにする場合、音声コーデックを指定しないと音声コーデックはAMR(ナローバンド)になるみたい。これだと動画の分割がうまくいかない(映像と音声のずれが大きくなるから?)。なので音声コーデックにはAACを指定する。(-acodec aac)
  • (2007/06/18 追記)-fsは小さめに・・・出力ファイルのファイルサイズを制限するパラメータ"-fs"を指定しても、その値より大きなファイルができてしまうので少し小さめの値を指定する必要あり。どのくらい小さめにするかは動画の内容次第。
  • (2007/06/18 追記 その2)-fsと-ssは仲が悪い?・・・パラメータ"-fs"と"-ss"を両方指定しようとするとうまくいかないことがある。一般的な動画から3GPPに変換するときなんか、うまくいかない。でも3GPPから3GPPを作るときは両方指定しても大丈夫みたい。
  • (2007/06/19 追記)3GPPでステレオ音声にするには・・・3GPPで音声コーデックを指定しないとステレオ(-ac 2)にできない。ステレオにしたかったら音声コーデックとしてmp3かaacを指定する必要がある。
  • (2007/06/19 追記 その2)3GPPから3GPPへの変換・・・3GPPから3GPPに変換する場合、元の3GPPの音声コーデックがACCだとエラーになる。元の音声コーデックはMP3とかにしておくこと。
 FFmpegのバージョンによっては使えるパラメータも違うみたい。日本語資料も少ないし、なかなか険しい道だ。

関連記事:
 DoCoMoのFlash Lite3用動画を作るための覚え書き
 コマンドラインから使えるMPEG4エンコーダ
 現在のWebサイトに求められるUIとは?
 「無料動画サービスまとめ」に追加

5 件のコメント:

KAMEYAMA さんのコメント...

はじめまして!!

この情報、参考になりました。
私も今、rubyからffmpegをコントロールする必要がある案件に関わっていて、悪戦苦闘しています。
他の方の技術情報を参考に頑張ろうとしていますが、ナカナカ大変です。PHPやPerlならライブラリがあるようですが…でも環境設定が大変みたいです。

今後は時々ブログを拝見させていただきます。私のブログは他の方の情報の寄せ集めのメモと化しています。loatingdays ブログも貼らせていただきました。

それでは、また!!

floatingdays さんのコメント...

 こんにちは。参考になったのなら嬉しいです。Rubyですか、いいですね!仕事でRuby使えないかなぁと思っている今日この頃なので少し羨ましいです。
 sennaなんかも扱ってるようで、そのうち参考にさせてもらうかもしれません。

kameyama さんのコメント...

PHPの方が情報が多くて選択肢としては、ベストな言語だったのですが、社内では誰もが出来ないため前回使用したRubyを使うことになりました(Pythonチームも有るのですが、別案件で対応不可)。

ffmpegは、Rubyからバイナリを直接実行する方式で考えているのですが、結果が取得できません。正常終了したのか否か、時間は何秒であるかなどの情報が取れなくて困っています。

sennaは使っていないんです。あるプロジェクトでは、単独でMeCabを使っていますけど。

floatingdays さんのコメント...

 なるほどなるほど。動画の時間ならMediaInfoとかでも取得できるかも。
 FFmpegの実行結果は標準出力ではなく標準エラー出力に出ているかも。
 頑張ってください!

kameyama さんのコメント...

アドバイスをいただき有難うございます!!
調べてみます~

ブログ アーカイブ

tags