【问题标题】:Video streaming in MPMoviePlayerController embedded in UIWebView嵌入在 UIWebView 中的 MPMoviePlayerController 中的视频流
【发布时间】:2014-11-07 11:05:17
【问题描述】:

我想知道如何在 iOS 的 UIWebView 中嵌入的 MPMoviePlayerController 中执行网络流式传输。它是使用套接字还是任何其他方法执行的?

首先请理解我的问题,我正在 UIWebView 中播放 youtube 视频。当视频加载并开始播放时,MPMoviePlayerController(或类似的东西)会自动实例化。现在问题是我想通过我的代理服务器传递所有 url 以及一些私人消息。我正在使用以下方法:

方法 1

创建我自己的自定义 NSURLProtocol 类并拦截每个请求,然后打开一个套接字,编写我的私人消息,然后编写 GET/POST 消息并将响应传递给 webview。一切正常。但是当视频开始播放时,我们没有收到 url 请求,所以很难追踪 url 正在通过我的代理。

我在 SO 中读到 MPMoviePlayerController 不符合 NSURLProtocol,因此我们无法拦截流经视频控制器的请求。这是链接:

How to play movie with a URL using a custom NSURLProtocol?

方法 2

我覆盖 connect()、write() 和 read() 方法,然后打印日志以查看视频数据是否流经 read() 和 write() 方法。但我仍然没有得到想要的结果。我的所有其他网络请求都通过这些覆盖的方法,但只有 VideoData 没有显示,这意味着 MPMoviePlayerController 没有使用套接字和读取、写入方法。或者 Webview 在内部启动另一个进程来实例化 Player。

如何确保 MPMoviePlayerController 没有在内部创建新进程。

如果有人知道如何实现这一点,请分享。任何帮助表示赞赏。我陷入了困境。

【问题讨论】:

    标签: ios uiwebview video-streaming mpmovieplayercontroller nsurlprotocol


    【解决方案1】:

    您可以通过实现本地服务器来做到这一点。与其直接播放网络流,不如让它通过您的本地服务器并重定向它。这样,您也可以使用自己的自定义NSURLProtocol。 我也在使用这种方法为 HLS 流实现缓存协议。你可以试试here .另见CocoaHTTPServer

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2018-04-16
      • 2017-05-11
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多