-1

iPhone カメラから RTMP サーバー (Wowza サーバー) にライブ ビデオ ストリームを公開する必要があります。ビデオ ストリームは h.264 形式である必要があります。AVFoundation がビデオを h.264 圧縮でファイルに保存することは知っていますが、ビデオをファイルに保存する必要はありません。キャプチャしてサーバーに送信したいだけです。私は次のデリゲートメソッドを使用しています:

    - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{
             if (connection == videoConnection) {
             //I want something like this
             NSData* h264VideoData=[self h264Data:sampleBuffer];
        }

}

サーバーにオーディオを送信する必要はありません。ビデオを送信したいだけです。

4

1 に答える 1

1

2017 年の更新:

VideoToolboxAPIを使用して、ビデオとオーディオのストリーミングを今すぐ実行できます。こちらのドキュメントをお読みください: VTCompressionSession

元の回答(2013年から):

ファイルに書き込むか、ビデオ ストリームをソフトウェア エンコーダーで圧縮する必要があります (ただし、HD は得られず、バッテリー時間も非常に長くなります)。ハードウェアエンコーダーを操作する可能性はすべて、ディスクに書き込む必要があります。これは、デバイスのメモリ不足が原因だと思います。

ハードウェア アクセラレーションによる h264 圧縮を取得する方法:

どちらもファイルへの書き込みが見られるように、フレームまたは GOP が完全に書き込まれた後にエンコーダーがヘッダー情報を更新するため、パイプへの書き込みは機能しません。したがって、エンコーダーがヘッダー情報をランダムに書き換えるため、エンコーダーがファイルに書き込みを行っている間はファイルに触れないでください。このヘッダー情報がないと、ビデオ ファイルは再生できません (サイズ フィールドが更新されるため、書き込まれた最初のヘッダーはファイルが 0 バイトであることを示します)。

ただし、5 秒間記録してから出力ファイルを切り替え、現在は「古い」5 秒間のスニペットを送信し、後で削除することはできます。ただし、送信する h264 ビデオ データを取得するには、*.mov または *.mp4 コンテナーを分離する必要があります。

オーディオが必要な場合: ファイルを切り替えると、いくつかのオーディオ サンプルが失われるため、独自のバッファ管理を行う必要があります (または、オーディオを個別に録音するだけです)。

于 2013-06-10T13:37:08.540 に答える