4

私は、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 など) を使用してこれを実装する簡単な方法はありますか?

参考にすることができる同様のプロジェクトはありますか?

前もって感謝します!

4

1 に答える 1