ラベル ffmpeg の投稿を表示しています。 すべての投稿を表示
ラベル ffmpeg の投稿を表示しています。 すべての投稿を表示

2011年10月14日金曜日

ffmpegをどうしても通らない地デジファイル (未解決)

mpeg2tsで、どうしてもffmpegを通らない奴がありまして、エラーのメッセージを見ると、どうも映像と音声のストリームを途中でとりちがえてるらしい。何を言ってるんだって?筆者もそう思います。ええ。

具体的にはこうなります

[mpeg2video @ 0x17c4620] mpeg_decode_postinit() failure
    Last message repeated 12 times
[mpegts @ 0x17bc400] probed stream 2 failed
[mpeg2video @ 0x17c4620] mpeg_decode_postinit() failure
[NULL @ 0x19d9f60] start time is not set in av_estimate_timings_from_pts
Input #0, mpegts, from '仮面ライダーフォーゼ 第02話 「宇_宙_上_等」 @0^20110911^0800^0830_HD-1.m2t.BAD':
  Duration: 00:30:00.07, start: 59680.934033, bitrate: 13790 kb/s
  Program 1064
  No Program
    Stream #0.0[0x112]: Audio: aac, 48000 Hz, stereo, s16, 184 kb/s
    Stream #0.1[0x111]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 34.25 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.2[0x114]: Data: [0][0][0][0] / 0x0000
    Stream #0.3[0x115]: Data: [0][0][0][0] / 0x0000
At least one output file must be specified
最後に注目。

  • #0.0が音声で
  • #0.1が映像だ、と言ってますが、

そんな筈はありませんし、上手く言ってる奴はこんな事は言いません。

これはひょっとして、mpeg-ts のdrop frameとやらが悪さしているのか?
一旦 TsSplitter.exeには掛けてますが、もう一度通してみる。

EITフラグ:オフ/ECMフラグ:オフ/EMMフラグ:オフ/HD○,SD○○○,1SEG×
0.m2t
  ( 3,103 MB/ 3,103 MB) 100%
  0_HD.m2t
    pid=0x0000, total=   18020, drop=  0, scrambling=0, biterror=0
    pid=0x0100, total=   31119, drop=  0, scrambling=0, biterror=0
    pid=0x0111, total=16160639, drop=  0, scrambling=0, biterror=0
    pid=0x0112, total=  256124, drop=  0, scrambling=0, biterror=0
    pid=0x0114, total=    3143, drop=  0, scrambling=0, biterror=0
    pid=0x0115, total=     360, drop=  0, scrambling=0, biterror=0
    pid=0x0428, total=   36038, drop=  0, scrambling=0, biterror=0
    size=3,030,296 KB, scrambling=0
なんともないなあ。
drop frameが悪さしてるなら、噂のmpeg2repair.exeとやらを試そうと思っていたのですが。って言うかmpeg2repairも動きません。もちろん ubuntu10.10のwine1.3で、ですが。
  1. localspl.dllが無い。と言われる → ~/.wineを一旦削除するしかないらしい。
  2. 一旦削除する。やはり動かない。→ 今度は plugplay.exe が無いと言われる。
  3. 検索してみると、悩んでいる人は多いらしい。 http://forum.winehq.org/viewtopic.php?p=57746&sid=a8caa2db441ab5796ccb46266b7eb013 fool appsがどーたらこうたら、regeditでどーたらこーたら。
  4. 挫折。←いまココ
vlcで再生する分には全く問題ありません。何かが起こってるのでしょう。しかもffmpegのdemuxと相性が悪い何か。
一旦 demux してみるか?とmpegtxとやらをビルドしてみます。

どっち道駄目な感じ。
$ /usr/local/bin/mpgtx -d 仮面ライダーフォーゼ\ 第02話\ 「宇_宙_上_等」\ @0\^20110911\^0800\^0830_HD-1.m2t.BAD
仮面ライダーフォーゼ 第02話 「宇_宙_上_等」 @0^20110911^0800^0830_HD-1.m2t.BAD is not a valid mpeg file
根本的に何かを間違えてる臭い。

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
という訳で、半自動スクリプトを書きました。

ffmpegで地デジの音声が扱えない件。問題の先送り

結局、ffmpegをリビルドしたものでも解決はせず。

何故か、acodec copyだけは成功するし、出来上がったmkv(matroska派なんで)は、
一旦音声トラックを外して再選択すれば(元のm2tと同じく)音は出るようになります。

http://d.hatena.ne.jp/RobinEgg/comment?date=20090420#c
によれば、aacトラックを取り出せれば、そのファイルを加工して、
音が出るようには出きるらしい。

ここまで来れば、mkvの中身をなんとかすればなんとかなる?m2tはようやく消しても可。という状態にはなりました。なったのですが。
mkvの加工ツールと言えば、mkvtoolnixが有名ですが、
http://www.bunkus.org/videotools/mkvtoolnix/index.html
ubuntu 10.04のパッケージはやや古い4.0.0のが気になります。

ffmpegのacodec copyを使ったのが気に要らないらしく。
codec privateとやらのデータが無いので、mkvtoolnixでは取り出せない。らしい。

エラー:コーデックID 'A_AAC'のトラック2は"codec private"要素がなく、抽出することができません。

それでは仕方ない。とffmpegで音声トラックを取り出そうとするが、
ファイルサイズはそれっぽくなるも、
出来たはずのaacを、vlcで再生しようとする限りは無音声状態に。
音声トラックを再選択しても駄目です。

ここでハマリ中。

2011年8月12日金曜日

続、エンコードが無音声

地デジをffmpegで変換すると、音が無くなる件。
依然として解決してません。

現象と放送局との相関では、NHKとTOKYO MXがかなり多発しますね。

VLC等のプレイヤーでは、音声トラックを選択し直せば、また音声が出るようになります。
ということは、あくまでストリームの「一部」の問題である。それは確実。

ところがそれをそのままffmpegで変換すると、音が出なくなったらそのまま。
出来上がったmkvをvlcに突っ込んでも、音声トラック=undとか成ってるので、
完全に無音になっちゃってる模様。

対処療法的には、TsSplitter.exeで、プログラム単位で切っておくと、
運良く「aacの問題の一部」を通らなくて済むことがあるらしい。
分割してみたけど、やっぱり無音声になっちゃうこともままあり、
確実ではないらしい。GOP単位の分割だからっぽい。

0.8.1からビルドしたffmpegでも発生しました。

最悪の自体では、先頭の数分だけエンコード出来て、途中から前編音声のみ。
aacの一部を読み飛ばした時に、映像トラックを見失うらしい。
メッセージを見ると、映像と音声を取り違えてるらしい。あり得るのかソレ。
ですがこれはTsSplitterで、プログラム分割をしておけば激減しますね。

日本の放送は、CM間で解像度がパツンパツン切り替わる事があるので、
その前後で邪悪な(もしくはffmpegのお気に召さない)ストリームを出してる。
ということなのでしょう。

2011年7月31日日曜日

地デジをffmpegすると、無声ムービーが出来上がる件

結構有名かつ、一応解決策は既に出てるらしい。

Error while decoding stream #0.1
Error while decoding stream #0.1
Error while decoding stream #0.1
Error while decoding stream #0.1
Error while decoding stream #0.1

困ってる人は多いと思われます。

結論からいうと、海外製であるffmpegは、aacストリームのサポートが甘いらしい。

ぱぱネット(仮)氏が色々調べた結果、
単純に、内蔵aacデコーダを使わなければ良いらしいので、
--enable-libfaadで試したがうまくいかず、
さらに、--disable-decoder=aacでリビルド中。

氏のパッチ済みソースは https://github.com/kamawanu/FFmpeg/tree/badstream に有ります。

しかし、これも上手くいかず。こうなりました