0

我需要在我的 http web 服务器上存储大量视频文件(每个视频必须最多 3 分钟)。这些视频将在 android/ios 应用程序(类似于 instagram)上播放。

但现在我不知道格式会是最佳的。我绝对希望拥有自适应比特率流(如 hls 或 dash)。但我不知道使用编解码器(例如 H.264 或 H.265),使用容器(mp4?),我需要以什么不同的比特率对视频进行编码,等等......

4

1 回答 1

1

“适当的”OTT 视频流服务的常用架构是将 ABR 流以“轮播”格式存储在前端或服务器端,并使用 JIT(即时)打包器根据需要将流提供给终端设备,在用户请求它们时,通常是通过 CDN。

JIT 打包程序可即时将轮播格式转换为终端设备所需的流格式,通常是 HLS 或 DASH。

Apple 设备和浏览器通常更喜欢 HLS 和 Windows 以及 Google 衍生产品,而浏览器现在通常更喜欢 DASH。过去 Windows 设备使用 SmoothStreaming,Flash 使用 HDS,但现在这些 ABR 流式传输协议已经不太常见了。

假设您希望您的 JIT 打包程序在从轮播格式转换为流式格式、存储在分段 MP4、CMAF 中时尽可能少做工作(https://mpeg.chiariglione.org/standards/mpeg-a/ common-media-application-format),现在可能是正确的方法。直到最近,HLS 仅支持视频片段的 TS ( https://en.wikipedia.org/wiki/MPEG_transport_stream ) 格式,但它现在支持分段 MP4,这意味着它与 DASH 对齐。

如果您的视频要加密,那么 JIT 打包程序通常也会进行 JIT 加密。目前,加密模式(AES 加密的“风味”)在 DRM 系统/设备之间是不同的,因此即使通用加密(CENC - https://en.wikipedia.org/wiki/MPEG_Common_Encryption)意味着单个流可以包含任何主要 DRM 的密钥信息,实际上此时 iOS 设备与其他设备相比,加密流通常会有所不同。随着每个人都在朝着相同的加密模式发展,这种情况正在发生变化,但用户设备需要一段时间才能更换/或更新。

关于比特率问题,它确实取决于您想要支持的设备以及您准备拥有多少流。

例如,在目标设备的显示能力之外支持比特率是没有意义的。

大型运营商倾向于支持 5-9 比特率,但如果您主要针对移动设备上的短视频,您可能不需要这么多。

于 2018-01-26T17:28:06.397 回答