mpegtsについて調査してみたいと思います。
今回僕のやりたいことは、mpegtsのファイルを分割することではなく、mpegtsのファイルをコーデックで求められたバイトデータから生成することなので、ちょっと難易度高め?な気がします。
とりあえずgoogle先生に尋ねます。
[mpegts specification]でぐぐります。
http://en.wikipedia.org/wiki/MPEG_transport_stream
http://nomanganolife.blogspot.jp/2009/12/mpeg2-ts.html
http://allegro.dtiblog.com/blog-entry-185.html
とりあえず前知識としてこの3つくらいは読んでおきました。
わかったことは、最小単位は188バイトで構成されている。
いろんなヘッダが存在する。といったところ。
データを解析するにあたって、いつもつかっているマリオギャラクシー2のPVに対して次の変換を実行しました。
$ ffmpeg -i orgMario.flv -acodec libmp3lame -ab 64 -ar 44100 -vcodec libx264 -vpre default2 -s 320x240 -f mpegts mario.ts
$ ffmpeg -i orgMario.flv -acodec libmp3lame -ab 64 -ar 44100 -vcodec libx264 -vpre default2 -s 320x240 -f flv mario.flv
オリジナルデータもh264 + aacだったのでそのままvcodec copyとacodec copyでtsファイル化できるかなとおもったのですが、h264 bitstream malformatedというエラーがでてしまったので、今回red5 + xuggleで生成しようとおもっている h.264 + mp3の形式でとりあえず出力するようにしました。
なお、ffpresetのdefault2は前回の記事のxuggleで利用したもののsetProperty値の元ネタとなったものです。
2つつくった理由はflv側は動画データ、音声データの入り方を理解済みなのでデータがどのようにmpegtsに代入されているか理解するのに使える。
かつ同じ変換方法をつかえば出力される動画データ、音声データは一致する。
というのを期待しています。
あと、javaのプログラムをささっと書いて、188バイトずつのデータを取得し、文字列にしたテキストデータも準備しました。メモ書き用みたいなものです。
flvデータ
tsデータ(幅を調節して、4行が1つのまとまりになるようにしてます。)
txt形式に直したデータ
ではちまちま解析していくか・・・
0 件のコメント:
コメントを投稿