我有一个Android应用程序(客户端),asp.net web api web服务器(服务器)和Windows Azure媒体服务(WAMS)帐户。
我想要的内容:要将3-30秒的视频从客户端上传到服务器并使用WAMS进行编码,然后尽快通过HLSv3进行流式传输。理想情况下,也会生成视频预览图像。尽可能快的是 sub一分钟转身。我意识到,这可能不太现实,但越快越好。
我在哪里:我们将视频作为流上传到服务器,然后将其存储在Azure blob存储中。服务器返回客户端指示上载成功。服务器有一个动作,可以启动编码,然后调用它。我根据修改后的H264 Adaptive Bitrate MP4 Set 720p预设运行自定义编码任务,以获取640x480视频并在编码的同时将其裁剪为480x480。然后我运行一个缩略图作业,生成一个480x480的缩略图。根据保留的编码器质量,这可能需要约5分钟到约2分钟。编码作业时间仅为30-60秒,其余的则是队列时间,发布时间和通信延迟的混合。
我可以做些什么来改善客户端上传到视频流媒体转换时间?编码过程中瓶颈在哪里?是否可以达到合理的最大速度?是否有可以调整的配置设置以提高过程性能?
答案 0 :(得分:1)
减少工作数量
首先想到的是,您只对单个缩略图感兴趣,您应该能够通过向您的编码预设的MediaFile元素添加类似这样的内容来合并您的编码和缩略图作业:
<MediaFile ThumbnailTime="00:00:00"
ThumbnailMode="BestFrame"
ThumbnailJpegCompression="75"
ThumbnailCodec="Jpeg"
ThumbnailSize="480, 480"
ThumbnailEmbed="False">
缩略图将与视频流一起在输出资源中结束。
减少任务中的预设数量
要考虑的另一件事是,您链接到的预设在其中定义了多个预设,以便以不同的比特率生成音频流。我目前的理解是这些预设中的每一个都由编码单元顺序处理。
第一个预设定义视频流,并指定每个视频流应具有96kbps的音频复用。这意味着您的视频文件将比它们可能需要的大,并且一些时间将在多路复用过程中占用。
第二个和第三个预设只定义要输出的音频流 - 这些不包含任何视频。其中第一个以96kbps输出音频,第二个以56kbps输出。
假设您对96kbps的固定音频质量感到满意,我建议从视频流和最后一个音频流(56kbps)中删除音频 - 这样可以保存两次编码的相同音频流,以及音频正在与视频混合。 (根据你的用法我可以告诉你,你可能不需要那个)
这样做的另一个好处是编码器输出文件大小会略微下降,因此编码成本也会降低。
工作流程优化
我唯一的另一点是关于您首先将视频文件导入Azure的工作流程。你说你正在将它们上传到blob存储中 - 我假设你随后将它们复制到AMS资产中,这样它们就可以配置为作业的输入。如果这是正确的,您可以通过直接上传到资产来节省一些时间。
希望有所帮助,祝你好运!