我知道StackOverflow上已经有关于将iOS设备上的实时视频流传输到服务器的问题,但我想问一下编码部分。
我对可用的软件编码服务不太了解,这些服务可以对从iOS设备捕获的原始(实时)视频素材进行编码,然后发送到像AWS
这样的服务器。在使用AVCam
捕获视频后,我是否应该使用类似ffmpeg
的工具来实时编码原始视频,然后使用HTTP
或RTSP
将编码后的视频发送到服务器?还是我的理解有误?
我知道StackOverflow上已经有关于将iOS设备上的实时视频流传输到服务器的问题,但我想问一下编码部分。
我对可用的软件编码服务不太了解,这些服务可以对从iOS设备捕获的原始(实时)视频素材进行编码,然后发送到像AWS
这样的服务器。在使用AVCam
捕获视频后,我是否应该使用类似ffmpeg
的工具来实时编码原始视频,然后使用HTTP
或RTSP
将编码后的视频发送到服务器?还是我的理解有误?
iOS设备以MOV或MP4的格式捕获视频。
使用AVFoundation(请参见this和this等)可以从iOS设备相机中捕获原始数据(YUV、BGRA等)。
但手动编码原始数据并不高效,因为似乎在设备上使用硬件加速的唯一方法是通过AVAssetWrite进行输出文件。
有一种方法可以通过读取文件并使用RTSP和RTMP等协议对其进行分组来实现实时流传输,但这并不是非常直观。
您可以查看一些实现,例如:
http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html 用于RTSP
和
Livu iPhone应用的流媒体支持库 用于RTMP(Livu的旧版库)
Livu应用程序的作者也在StackOverflow上,可以查看他的问题和回答:https://stackoverflow.com/users/227021/steve-mcfarlin
除非你需要在本地存储不同于发送到服务器的质量级别,否则你应该只记录你想要的质量级别,并避免在手机上进行压缩,因为这对手机来说是相当费力的,如果可以避免就避免。如果你确实希望在手机上存储更高质量的内容,并且发送到服务器的质量较低(以加快传输或节省带宽),请查看此答案: