javaのnetty用のrtmp実装である、flazrをつかっていて気づいた小ネタ。
小ネタ1
音声データや映像データが流れてくるわけですが、取得データのtimestamp値がたまに入れ替わることがあります。rtmpで流れてきたデータをffmpeg等でエンコードするときには、この入れ替わりを治してやってから変換かける方が負荷的に有利になります。
小ネタ2
flashに実装されたh.264映像出力を利用したときとFlashMediaLiveEncoderやXsplitを利用してh.264を流したときで疎通データがちょっと違います。h.264(映像)とaac(音声)にはMediaSequenceHeader(以下msh)と呼ばれる特殊データがあるのですが、Flash実装のx.264エンコーダーを利用している場合は、このmshが定期的に流れてきます。
mshが大量に挿入されている状態でも、ffmpeg等のコンバートに影響はありません。
小ネタ3
red5で映像データをやりとりしているときに、映像でh.263を利用している場合は、映像データのdisposableInnerFrameは捨てた方がまともなデータになる。(red5の1.0.0βのころの話)
今でも慣例的にこのフレームは捨てるのが習慣づいています。