16

iPhoneから別のデバイス(デスクトップブラウザまたは別のiPhone、たとえばポイントツーポイント)にリアルタイムのビデオを取得したいのですが。

注:現時点では、1対多ではなく、1対1です。オーディオは、ストリームの一部にすることも、iPhoneの電話を介して行うこともできます。

私が考えることができる4つの方法があります...

  1. iPhoneでフレームをキャプチャし、メディアサーバーにフレームを送信し、メディアサーバーにホストWebサーバーを使用してリアルタイムビデオを公開させます。

  2. iPhoneでフレームをキャプチャし、画像に変換し、httpserverに送信し、ブラウザのjavascript/AJAXでサーバーから画像をできるだけ速く再読み込みします。

  3. iPhoneでhttpServerを実行し、iPhoneで1秒間の映画をキャプチャし、iPhoneでM3U8ファイルを作成し、他のユーザーにiPhoneのhttpServerに直接接続してライブストリーミングを行います。

  4. iPhoneで1秒間の映画をキャプチャし、iPhoneでM3U8ファイルを作成し、httpServerに送信し、他のユーザーをhttpServerに接続してライブストリーミングを行います。これは良い答えです、誰かがそれを機能させることができましたか?

より良い、より効率的なオプションはありますか?iPhoneからデータを取得する最速の方法は何ですか?ASIHTTPRequestですか?

みんな、ありがとう。

4

3 に答える 3

14

生のフレームまたは個々の画像の送信は、(データの量とフレームの数のために)十分に機能することはありません。また、電話から合理的にサービスを提供することもできません(WWANネットワークにはあらゆる種類のファイアウォールがあります)。ビデオをエンコードしてサーバーにストリーミングする必要があります。ほとんどの場合、標準のストリーミング形式(RTSP、RTMP)を使用します。iPhone>=3GSにはH.264エンコーダチップがあります。問題は、ストリーム指向ではないことです。つまり、ビデオを最後に解析するために必要なメタデータを出力します。これにより、いくつかのオプションが残ります。

  1. 生データを取得し、FFmpegを使用して電話でエンコードします(大量のCPUとバッテリーを使用します)。
  2. H.264 / AAC出力用に独自のパーサーを作成する(非常に難しい)
  3. チャンクで記録および処理します(チャンクの長さに等しいレイテンシーを追加し、セッションを開始および停止するときに各チャンクの間に約1/4秒のビデオをドロップします)。
于 2011-04-19T23:33:46.360 に答える
5

「チャンクで記録および処理します(チャンクの長さに等しいレイテンシーを追加し、セッションを開始および停止するときに各チャンクの間に約1/4秒のビデオをドロップします)。」

私はそのようなコードを書いたばかりですが、2つのAVAssetWriterをオーバーラップさせることでそのようなギャップをなくすことはかなり可能です。ハードウェアエンコーダーを使用しているため、このアプローチを強くお勧めします。

于 2012-12-21T04:49:52.880 に答える
3

同様のニーズがあります。具体的には、iOSデバイスとWebUIの間にストリーミングビデオとオーディオを実装したいと考えています。目標は、これらのプラットフォームを使用して参加者間で高品質のビデオディスカッションを可能にすることです。これを実装する方法についていくつかの調査を行いました。

  • 私たちはOpenTokを使用することに決め、 OpenTok入門ガイドを使用して、iPadとWebサイトの間に概念実証スタイルのビデオチャットを非常に迅速に実装することができました。OpenTok用のPhoneGapプラグインもあります。これは、ネイティブiOSを使用していないため便利です。

  • Liblinphoneも潜在的な解決策のようでしたが、それ以上の調査は行いませんでした。

  • iDoubsも登場しましたが、ここでも、OpenTokが私たちのニーズにとって最も有望であると感じたため、iDoubsについて詳しくは説明しませんでした。

于 2012-12-20T21:48:09.230 に答える