【问题标题】:Can we manually download/cache the transport stream while streaming m3u8 file我们可以在流式传输 m3u8 文件时手动下载/缓存传输流吗
【发布时间】:2020-02-15 12:26:53
【问题描述】:

我正在尝试从 m3u8 文件播放传输流。我的要求是在将下载的数据提供给 AVPlayer 之前对其进行处理。为此,我使用代理服务器 [GCDWebserver] 来拦截所有请求。在代理服务器中,我将下载数据处理并反馈给它。

我能够下载媒体文件并尝试使用 GCDWebServerDataResponse(data: apiData, contentType: apiResponse.mimeType ?? "") 返回数据。但是播放器没有播放媒体内容。

  1. 我使用 GCDWebserver 作为我的代理服务器。

  2. 我创建了一个带有以下 url 的 AVPlayerItem 实例 http://34.55.7.151:8080/ 这实际上是我的本地服务器 IP 和端口号。

    /// 初始化AVPlayer项目

    let url = URL(string: "http://10.155.177.151:8080/")!
    let playerItem = AVPlayerItem(url: url)
    player = AVPlayer(playerItem: playerItem)
    player.automaticallyWaitsToMinimizeStalling = false
    
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    
    DispatchQueue.main.async {
        self.present(playerViewController, animated: true) {
            playerViewController.player!.play()
        }
    }
    

/// Http 代理处理程序

    webServer.addDefaultHandler(forMethod: "GET", request: GCDWebServerRequest.self) { (request, completion) in

        let  mediaUrl = URL(string: "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")!

        if self.session == nil {
            self.session = URLSession(configuration: URLSessionConfiguration.default)
        }

        let dataTask = self.session?.dataTask(with: mediaUrl, completionHandler: { (data, response, error) in
            if let apiData = data, let apiResponse = response {
                completion(GCDWebServerDataResponse(data: apiData, contentType: apiResponse.mimeType ?? ""))
            } else {
                completion(GCDWebServerDataResponse(text: "Error"))
            }
        })
        dataTask!.resume()
    }

【问题讨论】:

标签: ios swift gcdwebserver


【解决方案1】:

这里已经实现了类似的东西:https://github.com/StyleShare/HLSCachingReverseProxyServer

它在流式传输时下载片段,如果片段在本地可用,它将使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多