我需要在我的http网络服务器上存储大量视频文件(每个视频最长3分钟)。这些视频将在android / ios应用程序(类似于instagram)上播放。
但现在我不知道格式是最优的。我绝对希望有自适应比特率流(如hls或dash)。但我不知道使用编解码器(例如H.264或H.265),使用容器(mp4?),我需要以不同的比特率对视频进行编码等等......
答案 0 :(得分: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比特率,但如果你主要针对移动设备上的短视频,你可能不需要这么多。