[PR]

[PR]


はじめに

これからの動画ファイルはmp4だ!ということで、今回は地デジチューナーから取り出したTSファイルをffmpegでエンコードする方法についてまとめます。

環境

CentOS 5.4 (ProLiantML115)
アースソフト PT2
ソースファイル・・・PT2から出力されたTSファイル

ffmpegのインストール

yumにてffmpeg-develをインストールします。通常版だとmp4を出力する際にオーディオのエンコードでエラーを出して無音のmp4ファイルが出来上がってしまうため、devel版を用います。
私は無音のmp4ができる問題はエンコードの設定で回避するものと思い込み、ハマってしまいました。

yum install ffmpeg-devel.i386

参考(通常版でエンコード中にでてくるエラー)

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

この問題は、ぱぱネット(仮)(2009-07-01)さんの所で説明されており、解決するための差分パッチも用意されているようです。
しかし、わざわざソースからコンパイルする事は避けたかったので採用しません。

mp4エンコードの設定

mp4の設定はがべこれログ - Garbage Collection Logさんの設定でいけちゃいました。

プログラムIDの指定について

チューナーから取り出したTSファイル(生TS)は、何も加工しなければフルセグの他に、ワンセグや文字情報のデータも入ったままの状態で、これらはprogram idという値で分けられています。ffmpegでprogramidを簡単に調べることができます。

$ ffmpeg -y -i [生TSファイル]

上記コマンドを実行すると、以下のような結果が出力されます。(エンコードは行われません。)

    Last message repeated 1 times
[h264 @ 0x85aab10]decode_slice_header error
[h264 @ 0x85aab10]no frame!
 
Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (30000/1001)
 
Seems stream 2 codec frame rate differs from container frame rate: 29.97 (30000/1001) -> 14.99 (15000/1001)
Input #0, mpegts, from 'GR16_20100807215400_20100807220000.mp4_tmp.ts':
  Duration: 00:06:00.23, start: 85253.616078, bitrate: 14806 kb/s
  Program 2064 ~ÍÂÓKhF|J|Aw
    Stream #0.0[0x111]: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x112]: Audio: aac, 48000 Hz, stereo, s16, 193 kb/s
  Program 2065 ~ÍÂÓKhF|J|Aw²
    Stream #0.0[0x111]: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x112]: Audio: aac, 48000 Hz, stereo, s16, 193 kb/s
  Program 2066 ~ÍÂÓKhF|J|Aw³
    Stream #0.0[0x111]: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x112]: Audio: aac, 48000 Hz, stereo, s16, 193 kb/s
  Program 2448 ~ÍÂÓKhF|J|Aw7HBS
    Stream #0.2[0x281]: Video: h264, yuv420p, 320x180, 14.99 tbr, 90k tbn, 29.97 tbc
    Stream #0.3[0x283]: Audio: aac, 24000 Hz, stereo, s16, 46 kb/s
  Program 2199 ~Ç|¬¤É
At least one output file must be specified

上記結果より、Program 2448がワンセグ、Program 2199が文字データである事がわかります。
TSファイルを扱う他のHPなどでは、目的のフルセグをエンコードするために、わざわざフルセグデータをtssplitterで分離してからエンコードするように解説している所もありましたが、実際は生TSをそのままエンコードしても問題ありませんでした。

参照元URL

ぱぱネット(仮)(2009-07-01)faacの問題について


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS