2011年8月19日金曜日

地デジをffmpegして、出来上がった無声ムービーをどうにかする件

その後、

mkvextract --rawで、強引に取り出せることが判りました。

いや正確には、判っていて、既に試していたのですが、
コマンドラインの順番を間違えてたとか
出来上がったaacがvlcで再生できないファイルとかで、
諦めてたのですが、mplayerでaac単体ストリームなら再生できることが発覚。

とは言え、元のmkvは、やはりmplayerでも音声は出ず。
いやはや、危うく迷宮入りするところでしたが。

であれば?

  1. mplayerのaoでpcm書き出して、
  2. 再度ffmpegに突っ込んで、問題のmkv/m2tの音声トラックを差し替える。
  3. 差し替える、という方法は無いので、vcodec copyとmapで、音声トラックだけをpcmから再エンコーディング。

でどうにか、音の出るmkvが出来ました。

全部ひっくるめると

  1. ffmpeg -i TS -vodec mpeg4 -acodec ac3 -f matroska
  2. 音声ストリームのエラーが出る場合は
    1. ffmpeg -acodec copyで問題の先送り
    2. mkvextract tracks -rawで、aacストリームの取り出し。
    3. mplayer -aoでpcm変換
    4. ffmpegで音声だけ再エンコーディング&mkvの映像とmux

面倒くさくね?

https://gist.github.com/kamawanu/4538a7d073e584dbdef1#file-ffmpeg-nosound-sh
という訳で、半自動スクリプトを書きました。