2011-01-10 4 views
4

これはちょっと難しいものです...ソケットから手動でロードされたiOSでビデオを再生する方法は?

iOSのネットワークを介してビデオ(H264)をストリーミングしようとしています。しかし、私はAVASsetまたはMPMoviePlayerを作成するために使用できるビデオへのURLを持っていないので、(CocoaAsyncSocketを使用して)リモートサーバーへのオープンソケット経由でバッファにビデオデータを取得しています。動画はライブストリームなので、差があればデータはそのまま継続されます(つまり、設定されていない期間)。

サーバーがRTSPサーバーであるため、この方法で対応する必要があります。私は、コマンドの送信と応答の受信のために私自身のRTSPクライアントを書いています。そして今、私は、接続を介して来るビデオデータに有用な何かをしようとしています。

この動画をどのように再生することができますか?私が考えることのできる唯一のことは、何らかの形でファイルに保存してロードしていることです(しかし、私は新しいデータを継続的にロードしていくので、どのように動作するのか分かりません)。 ffmpegのように。残念ながら、代わりにHTTPライブストリーミングをサーバーに実行させることはできません。

ご協力いただければ幸いです!

+0

RTSPサーバーからバッファリングしたビデオデータを処理する独自のNSURLProtocolを実装できるかどうかは、今現在考えています。そのタイプのURLを持つAVAssetを作成することができますか? –

+0

また、ローカルの.M3U8を作成し、ストリームをローカルファイルシステムに分割することで、HTTPライブストリームを偽造することもできます。ちょっとハッキリしているように聞こえますが、それはうまくいくかもしれません... –

+0

このタイプのストリームを再生する方法も不思議です。 – RSully

答えて

0

AVFoundationにこれを深く掘り下げる必要はありませんでしたが、AVAssetWriterを使ってAVAssetを作成すると、それを取り除くことができます。 AVAssetWriterにはAVAssetWriterInputのインスタンスがあり、CMSampleBufferというデータを受け取り、AVAssetWriterのデータをパッケージします。

AVAssetWriterInputdocsに基づいて、「リアルタイムソース」からデータを取得するように設計されています。

私はもっと助けになることがしたい、うまくいけば、これは正しい方向にあなたを指します。

+0

助けてくれてありがとう - AVAssetWriterInputは有望ですね!しかし、AVAssetWriterを使ってAVAssetを作成する方法がないことはわかりません。 AVAssertはロードするためにURL(リモートまたはファイル)を必要とし、AVAssetWriterは指定されたURLでファイルを生成することができますが、書き込まれているAVAssetにファイルをロードしないでください(おそらくはできません)に。それはライブストリームなので、常に書き込まれています。 –

関連する問題