首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios中的视频编码

ios中的视频编码
EN

Stack Overflow用户
提问于 2015-03-20 22:25:58
回答 3查看 7.2K关注 0票数 3

因此,我已经知道在StackOverflow上存在关于在ios设备上将实时视频传输到服务器的问题,但我将询问编码部分。

我有点不知所措,哪种软件编码服务可以对ios设备上的原始(实时)视频片段进行编码,然后发送给像AWS这样的服务器。在使用AVCam捕获视频之后,我会使用像ffmpeg这样的东西动态地对原始视频进行编码,然后使用HTTPRTSP将编码的视频发送到服务器吗?还是我的概念搞错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-20 23:10:54

当视频存储在iOS设备上时,视频已经被编码--编码只是一种数字表示视频的方式,在大多数情况下,捕获一些值来表示视频每帧中每个像素的颜色和亮度等。

大多数编码还包括压缩视频以节省空间的技术。这些技术包括使用一些帧作为后续帧的参考(在出现的情况下是在帧之前)。例如,第一帧可以是参考帧(通常称为I帧),对于以下五个帧,而不是存储所有像素数据,只存储有变化的像素。这是很容易理解的,这可能会节省大量的存储,特别是在任何场景中没有什么移动或变化。

通常情况下,压缩时会丢失一些质量,压缩越多,质量损失越多。在iOS上,您可以在设置视频捕获时指定所需的质量级别-请参见下面一行中的“配置会话”:

除非您需要将本地存储在与发送到服务器的不同的质量级别上,否则您应该只记录您想要的质量级别,并避免在手机上进行压缩,因为如果您可以避免的话,这对手机来说是一项相当大的工作。如果您确实希望将更高的质量存储在电话上,而将更低的质量(以加快传输速度或节省带宽)发送到服务器,请查看以下答案:

票数 1
EN

Stack Overflow用户

发布于 2015-04-11 14:11:03

从iOS8到硬件支持的编码器/解码器api是可用的。要想了解如何做到这一点,请观看2014年"直接访问视频编解码“会议。简单地说,您可以从摄像机中获取像素缓冲区,将它们输入编码器,然后得到编码块,然后您可以依次将其输入到用于网络流的任何库中。您可能必须先进行一些数据转换,然后才能直接使用它。据我所知,ffmpeg确实有rtsp支持,所以您应该能够在访问编码帧之后使用.

票数 3
EN

Stack Overflow用户

发布于 2015-03-21 00:24:30

iOS设备在MOV或MP4中捕获视频。

可以捕获原始数据(YUV、BGRA等)iOS设备摄像头使用AVFoundation (请参阅等)。

然而,手动对原始数据进行编码并不有效,因为在设备上使用硬件加速的唯一方法显然是通过AVAssetWrite来输出文件。

有一种方法可以通过读取文件并使用RTSP和RTMP等协议对文件进行打包来实现实时流,但它不是非常直接。

您可以查看以下几个实现:

用于RTSP的http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html

用于RTMP的Livu应用程序的流支持库 (Livu的旧库)

Livu应用程序的作者也在StackOverflow上,查看他的问答:https://stackoverflow.com/users/227021/steve-mcfarlin

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29176746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档