iphone - 如何在 iOS 上播放从套接字手动加载的视频?

标签 iphone objective-c ios avfoundation rtsp

这个比较棘手......

我正在尝试在 iOS 上通过网络流式传输视频 (H264)。但是,我通过远程服务器的开放套接字(使用 CocoaAsyncSocket)将视频数据放入缓冲区,因此我没有可用于创建 AVAsset 或 MPMoviePlayer 的视频 URL。该视频是实时流,因此如果有任何不同,数据将不断出现(即没有设置持续时间)。

我必须这样做,因为服务器是 RTSP 服务器。我已经编写了自己的 RTSP 客户端来发送命令和接收响应,现在我正在尝试对来自连接的视频数据做一些有用的事情。

关于如何播放此视频有什么想法吗?我目前唯一能想到的就是以某种方式保存到文件并加载它(但我不知道它是如何工作的,因为我将不断加载新数据),或者诉诸于以某种方式手动进行操作像 ffmpeg。不,不幸的是我不能让服务器改为执行 HTTP 实时流式传输。

如有任何帮助,我们将不胜感激!

最佳答案

我还没有深入研究 AVFoundation,但您可以通过使用 AVAssetWriter 创建一个 AVAsset 来完成它。您向 AVAssetWriter 提供一个 AVAssetWriterInput 实例,它获取 CMSampleBuffer 数据并将其打包用于 AVAssetWriter

基于docs对于 AVAssetWriterInput,它旨在从“实时源”获取数据。

我希望我能提供更多帮助,但希望这能为您指明正确的方向。

关于iphone - 如何在 iOS 上播放从套接字手动加载的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4652632/

相关文章:

iOS 企业开发者帐户和公共(public)测试版?

iphone - 我如何在给定时间段内运行任务?

ios - 另一个 Xcode 配置文件查询

iphone - 加入多个 ALAC 文件。

objective-c - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : NSArrayM objectForKey

ios - SpriteKit 得分是随机的

ios - 如何将 UIActivityIndi​​catorView 添加到 UITableView 的底部,并在加载时切换它

iphone - 如何删除所有项目并向 UICollectionView 添加新项目?

ios - 动态更改静态单元格上的节标题文本

iphone - 核心数据结构 - 避免循环引用?