0

iOS の UIWebView に埋め込まれた MPMoviePlayerController でネットワーク ストリーミングがどのように行われるかを知りたいです。ソケットまたはその他のアプローチを使用して実行されますか?

まず、私の問題を理解してください。UIWebView で YouTube ビデオを再生しています。ビデオが読み込まれて再生が開始されると、MPMoviePlayerController (またはそのようなもの) が自動的にインスタンス化されます。ここで、すべての URL をプロキシ サーバー経由でプライベート メッセージと共に渡したいと考えています。私は次のアプローチを使用しています。

アプローチ 1

独自のカスタム NSURLProtocol クラスを作成し、すべてのリクエストをインターセプトしてからソケットを開き、プライベート メッセージを書き込んでから、GET/POST メッセージを書き込んで応答を webview に渡します。すべてうまくいっています。しかし、ビデオの再生が開始されたときに URL リクエストを取得できなかったため、URL を追跡するのが困難で、プロキシを通過しています。

MPMoviePlayerController が NSURLProtocol に準拠していないことを SO で読みました。そのため、ビデオ コントローラーを介したリクエスト フローをインターセプトできません。リンクは次のとおりです。

カスタム NSURLProtocol を使用して URL でムービーを再生するには?

アプローチ 2

connect()、write()、および read() メソッドをオーバーライドしてから、ログを出力して、ビデオ データが read() および write() メソッドを介して流れているかどうかを確認します。しかし、それでも私は望ましい結果を得ていません。私の他のすべてのネットワーク要求はこれらのオーバーライドされたメソッドを通過しますが、VideoData のみが表示されません。つまり、MPMoviePlayerController はソケットと読み取り、書き込みメソッドを使用していません。または、Webview が別のプロセスを内部で開始して、Player をインスタンス化します。

MPMoviePlayerController が新しいプロセスを内部的に作成していないことを確認するにはどうすればよいですか。

そして、これを達成する方法を知っている人がいたら、共有してください。どんな助けでも大歓迎です。私はこれに行き詰まっています。

4

1 に答える 1

0

これは、ローカル サーバーを実装することで実行できます。ネットワーク ストリームを直接再生する代わりに、ローカル サーバーを経由してリダイレクトします。このように、独自のカスタムも使用できますNSURLProtocol。このアプローチを使用して、HLS ストリームのキャッシング プロトコルも実装しています。ここで試すことができます。 CocoaHTTPServer も参照してください。

于 2014-12-10T10:38:36.660 に答える