我在堆栈溢出中发现了许多关于FFmpeg的使用和DFURTSPPlayer的github链接的建议,但它没有编译。但是在整合FFmpeg之后我还要编写什么?假设我有HTTP网址,那么我写道:
码
moviePath = "http:/path.mp4"
movieURL = NSURL.URLWithString(moviePath!)
moviePlayer = MPMoviePlayerController(contentURL: movieURL)
moviePlayer!.play()
因此,对于使用RTSP网址,我应该编写哪种代码?
答案 0 :(得分:1)
Here是另一个帖子,其中有一个示例FFmpeg代码,用于接收RTSP流(此流也将流解码为YUV420,将其存储在pic
中,然后将帧转换为RGB24,存储在picrgb
并将其写入文件)。因此,要实现类似于HTTP的功能,您应该:
1)为FFmpeg C代码编写一个包装器Objective-C类,或者只将代码包装在您将直接从Objective-C代码调用的函数/函数中。您应该有办法将RTSP URL传递给类或函数,并为新帧提供回调。在类/函数中启动一个新线程,它将实际执行与示例中的代码类似的内容,并为每个新的解码帧调用回调。 注意: FFmpeg有一种方法可以通过使用您自己的自定义IO上下文来执行异步I / O,这实际上可以让您避免创建线程,但如果您是FFmpeg的新手,可以从基础开始然后你可以在以后改进你的代码。
2)在回调更新视图或您用于显示解码帧数据的任何内容。