私は、iOS8 の VTCompressionSession から H.264 でエンコードされたフレームを取得し、マイクからのライブ AAC または PCM オーディオを使用してそれらを再生可能な MPEG2-TS に多重化し、最小の遅延でリアルタイムでソケットを介してストリーミングするプロジェクトに取り組んでいます (すなわち: (ほとんど) バッファリングなし)。
iOS8 の新しい VideoToolbox のプレゼンテーションを見て、いくつかの調査を行った後、次のことを想定しても安全だと思います。
VTCompressionSession から取得したエンコードされたフレームは Annex B 形式ではないため、何らかの方法で変換する必要があります (これまでに見た説明はすべてあいまいすぎるため、どのようにこれを行うのかよくわかりません (つまり、 : 「3 または 4 バイトのヘッダーを長さヘッダーに置き換えます」))。
VTCompressionSession から取得するエンコードされたフレームは、実際にはエレメンタリ ストリームです。そのため、最初にそれらを多重化する前にパケット化されたエレメンタリ ストリームに変換する必要があります。
マイク データからの AAC または PCM エレメンタリ ストリームも必要です (エンコーディングが含まれていないため、PCM の方が簡単だと思います)。私もやり方がわかりません。
パケット化されたエレメンタリ ストリームを多重化するには、libmpegts などのライブラリも必要です。または、おそらく ffmpeg (libavcodec および libavformat ライブラリを使用)。
私はこれにかなり慣れていません。これを達成するための正しいアプローチについてアドバイスをいただけますか?
Apple API (AVFoundation など) を使用してこれを実装する簡単な方法はありますか?
参考にすることができる同様のプロジェクトはありますか?
前もって感謝します!