2010-12-17 14 views
9

これによると、What Techniques Are Best To Live Stream iPhone Video Camera Data To a Computer?はiphoneカメラから圧縮データを取得することは可能ですが、私がAVFoundationリファレンスで読んでいるので、圧縮されていないデータしか取得できません。iphoneカメラをメディアサーバーにライブストリーミングする最善の方法は何ですか?

だから、質問は以下のとおりです。

1)iPhoneのカメラから圧縮されたフレームと音声を取得する方法は?

2)ffmpegのAPIを使用して圧縮されていないフレームをエンコードすると、リアルタイムストリーミングには十分速くなりますか?

本当にありがとうございます。

ありがとうございました。

+1

これをどのように解決しましたか? – DivineDesert

+0

AVFoundationから非圧縮データ(フレームとオーディオ)を取得し、FFmpegのAPIを使用してエンコード+ストリーミングを終了しました。それは、iPhone 4で192x240の解像度で30FPSまで上手く動作します。高解像度では、フレーム数が多すぎます。 –

+0

@AlexandreOSこれを行う方法は、それを共有してください、それは私たちにとって有益です – Ron

答えて

8

あなたは、ほとんどの場合、すでにiPhoneのカメラから圧縮されたフレームと音声を取得する方法)....

1を知っていますか?

これはできません。 AVFoundation APIはあらゆる角度からこれを防ぎました。私は名前付きパイプと、他の卑劣なunix fooを試しました。そのような運はありません。ファイルに書き込む以外に選択肢はありません。リンクされた投稿では、エンコードされたフレームを配信するためにコールバックを設定することをおすすめします。私が知る限り、これはH.264ストリームでは不可能です。キャプチャデリゲートは、特定のピクセル形式でエンコードされたイメージを配信します。エンコーディングを行うのはムービーライターとAVAssetWriterです。

2)ffmpegのAPIを使用して圧縮されていないフレームをエンコードするのは、リアルタイムストリーミングには十分速いのですか?

はいです。しかし、あなたはGPLの領域にあなたを得るlibx264を使用する必要があります。それはアプリストアと正確には互換性がありません。

効率性の理由からAVFoundationとAVAssetWriterを使用することをお勧めします。

+3

実際には1が部分的に間違っています。私は、プライベートAPIを使用せずにエンコードされているので、H.264データをリアルタイムで配信するライブラリを作成しました。 –

+1

このライブラリを私たちと共有できますか? libx264を使わずにこのH.264ストリームを取得する別の方法があるのは良いことです。だから私はFFmpegのmpegコーデックを使い終わったのです。 –

+0

@AlexandreOS残念ながら、私の図書館は商用ライセンスしかありません。私は将来、デュアルライセンスの下でそれをリリースするかもしれません。 –

4

私はスティーブに同意します。 AppleのAPIを試してみると、深刻な厄介なハッキングをしなければならないだろうと付け加えたい。デフォルトでは、AVAssetWriterはそのバッファをファイルに書き出す前に1秒を費やします。私は設定でそれを変更する方法を発見していない。その周りの方法は、複数のAVAssetWritersを使用して小さなファイルの書き込みとファイルを強制的に閉じることです。しかしそれは多くのオーバーヘッドをもたらします。それはかなりではありません。

Apple(iOSデベロッパーの場合)には、確実に新しい機能リクエストを提出してください。私たちの多くは、バッファやストリームに書き込むことができるようなライターを追加する可能性が高くなります。

スティーブがx264 GPLの問題について言ったことは、GPLより優れているものの商用ライセンスを得ることができると思うということです。しかし、それはあなたがまだそれを使用してかなり良い結果を得ることができ、独自のアプリソースを開く必要がないことを意味します。 Apple社のハードウェアコーデックを使用して拡張されたApple APIほど良くないが、悪くない。

関連する問題