変換できない集
03/01 2010 出力がDVD形式でMP2オーディオの場合、22050Hzが44100Hzになるようにしました。MP2はMPEG1/Layer2と言うことだと思いますが、この場合のサンプリングレートの下限は32KHzです。これはMPEGフレームヘッダのビット割り当ての話しなので、本来22050Hzは表現できません。おそらく、ffmpegはMPEG2/Layer2のフレームヘッダを付けてくれるのだと思います。これをわたしのDVDプレーヤが再生できないのだと思います。
02/25 2010 テレビで見ようとするると、音がおかしい(小さいガサガサ声)のファイルがありました。パソコンでは特におかしなことはありません。 これは、出力が22050Hzのmp2になっていて、規格外なのでDVDプレーやが正常に再生できないのだと判断しました。 これは、強制的に44100Hzになるのが、プログラムの意図ですが、漏れているようです。変換時に、手動で44100Hzを選択すれば変換できるのでこのまま放置します。 この元データですが、8ビットのPCMデータでした。始めて見ました。圧縮されていないので、AACなどにするより容量では大きくなるのになぜ?と思っています。何かの携帯端末で、再生時の負荷を下げるために採用しているのかと想像していますが。
11/16 2009 変換が終了しない。音声がもそもそ。 ffmepgが音声のサンプリングレートを誤認(48000Hzを24000Hzと誤認)している。 画像データが尽きても、音声データが残り、音声データの終了を待ち合わせるため、変換が止まっているように見える。 このファイルの音声は、MediaInfoで見ると、「AAC(Version 4)(LC)(SBR)」となる。 ■原因 ファイルヘッダに24000Hzと記されていることによる。 FAAD2は48000Hzでデコードする。 HE_AACと呼ばれる規格では、SBRとPSと言う方式が利用できる。SBRはサンプリングレートを、PSはチャネル数を減らしてエンコードする。それぞれ失われるデータは、聴覚の性質、相関により、より高圧縮が可能で別途格納する。旧来のデコード環境では、下げたサンプリングレート、チャネル数で再生される。前述の例なら、48000Hzを24000HzのAACに見えるように格納する。 したがって、ヘッダに24000Hzと記されているのは間違いではない。 faad2は、SBR、SPに対応している。faad2が受け取るデータには長さ以外に差はなく、24000Hzとして復号される。この後、残ったデータがあればSBRやSPの処理が行われ、48000HzのPCMデータが出力される。 デコーダにサンプリングレート24000Hzのデータを渡したとき、48000HzのPCMが出力される可能性を、ffmpegが予期していないことが問題。 ■対策 ffmpegの差し替えて、V2.1をアップ。
詳細を「MP4のAAC」、「AACのSBR」に書きました。
1.教訓
下記の「3.変換できない」で得た教訓を書きます。
- ファイル名はシンプルに
- aac 24000Hz は、48000Hzのことがある
2.上手くいかないときの調べ方
コンソール表示部分から、ffmpeg のコマンドをコピーします。

これを、「コマンドプロンプト」に貼り付けて実行します。 貼り付けは、タイトルバー上で、右ボタンメニュー、「編集」にあります。

現象に合わせて、オプションを変えながら、調べます。
3.変換できない
- ファイル名が問題
 と、表示され貼り付けられないファイルがありました。 「コマンドプロンプト」で、dir として見ると、
 と、表示されます。mp4の前に2か所、白い四角が描かれていて、この窓に表示できない文字が含まれています。 ファイルを単純な名前に変えて貼り付けられるようになりました。
- 最後まで変換されず、途中で変換が進まなくなる
あと、0.6%で、止まってしまいました。進捗を示すカウンタやbpsの表示などが更新されません。 これは、次の対策で無くなりました。
- 音がない
2.の件で、「コマンドプロンプト」で実行して見ました。 2.の現象の通り、ffmpeg がハングします。このときに作られた出力ファイルを再生してみると音がありません。音だけをmp2に変換してみました。もそもそゆっくり再生され、サンプリングレートが合っていないことがわかります。 音は aac で、ffmpeg の表示は、24000Hz になっています。他のツールで調べると48000Hzが正しいようです。理屈はわかりませんが、「行の詳細表示・編集」で、48000Hz を選ぶと正常に変換できました。2.の問題もなくなりました。
|