携帯動画変換君とか使えばいいのかなと思いましたが、自宅サーバ上で一気にやりたかったのでffmpegを使ってやってみました。便利ですねffmpeg。めっちゃ便利。ubuntu10.04でやった。
- ffmpegが入ってなければaptitudeで入れる。
- 音声をmp3で再エンコードしたいので、libmp3lameを入れる。単にlibmp3lameと指定しても見つからないけど、以下のパッケージを入れると使える。
# aptitude install libavcodec-unstripped-52
- 対象の動画の音声だけを2chにしてサンプリングレートを48kHzにして書き出す。ビットレートは適宜(デフォルト64kb/s)。
# ffmpeg -i hoge.avi -vcodec copy -acodec libmp3lame -ab 128k -ar 48000 -ac 2 hoge.mod.avi
-vcodec copy: ビデオは同じ設定で書き出す。
-acodec libmp3lame: 音声コーデック指定。
-ab: 音声ビットレート指定。kをつける。
-ar: 音声サンプリングレート指定。
-ac: 音声チャンネル数指定。2chに。
# for i in *.avi ; do ffmpeg -i $i -vcodec copy -acodec libmp3lame -ab 128k -ar 48000 -ac 2 $i.mod.avi ; done実は最初はこうやって一発でできるってわからなくて、一度mp3だけ設定変えて書き出し→音声消した動画だけ書き出し→両者を結合、とか3回も処理させてました。なんでかって、まずmp3だけ書き出し→元の動画と結合、ってやってみたら元の動画の音声がそのままになっちゃったからでした。じゃあ一度音消して結合すればいいや、というわけですね。色々試してみたら、先に読み込ませた方の音声が有効になる(?)みたいでした。つまり、音の入っている動画ファイルに音声かぶせるときは、
# ffmpeg -i hoge.avi -vcodec copy -i hoge.mp3 -acodec copy hoge.mod.aviだとダメで、
# ffmpeg -i hoge.mp3 -acodec copy -i hoge.avi -vcodec copy hoge.mod.aviだとOK。なんだかそういう事みたい。ふーん。紆余曲折っと。
とりあえずこれで特に音ズレとかも無しでXBMCから再生できる動画になりました。ホントffmpeg便利なのねえ。