使用Windows Azure媒体服务编码最大化编码速度

使用Windows Azure媒体服务编码最大化编码速度,azure,encoding,azure-storage,azure-media-services,Azure,Encoding,Azure Storage,Azure Media Services,我有一个android应用程序(客户端)、asp.net web api web服务器(服务器)和Windows Azure媒体服务(WAMS)帐户 我想要的:将3-30秒的视频从客户端上传到服务器,并使用WAMS进行编码,然后尽快通过HLSv3进行流媒体传输。理想情况下,也会生成视频预览图像。尽可能快的速度就像在一分钟内掉头。我意识到这可能不现实,但越快越好 我的位置:我们将视频作为流上传到服务器,然后服务器将其存储在Azure blob存储中。服务器返回到客户端,指示上载成功。服务器有一个启

我有一个android应用程序(客户端)、asp.net web api web服务器(服务器)和Windows Azure媒体服务(WAMS)帐户

我想要的:将3-30秒的视频从客户端上传到服务器,并使用WAMS进行编码,然后尽快通过HLSv3进行流媒体传输。理想情况下,也会生成视频预览图像。尽可能快的速度就像在一分钟内掉头。我意识到这可能不现实,但越快越好

我的位置:我们将视频作为流上传到服务器,然后服务器将其存储在Azure blob存储中。服务器返回到客户端,指示上载成功。服务器有一个启动编码的操作,然后调用get。我运行了一个自定义编码任务,该任务是根据预设值修改的,用于拍摄640x480视频,并在编码的同时将其裁剪为480x480。然后我运行一个缩略图作业,生成一个480x480的缩略图。根据保留编码器的质量,这可能需要约5分钟到约2分钟。编码作业时间仅为30-60秒,其余时间是队列时间、发布时间和通信延迟的混合


我可以做些什么来提高客户端上传到视频流的周转时间?编码过程中的瓶颈在哪里?是否可以达到合理的最大速度?是否可以调整配置设置以提高流程性能?

减少作业数量

首先想到的是,如果您只对一个缩略图感兴趣,您应该能够通过在编码预设的MediaFile元素中添加类似的内容来整合编码和缩略图作业:

  <MediaFile ThumbnailTime="00:00:00"
    ThumbnailMode="BestFrame"
    ThumbnailJpegCompression="75"
    ThumbnailCodec="Jpeg"
    ThumbnailSize="480, 480"
    ThumbnailEmbed="False">

缩略图将与视频流一起出现在输出资源中


减少任务中的预设数量

另一个要考虑的是,你连接到的预设有多个预设在其内,以便在不同的比特率下产生音频流。我目前的理解是,这些预设中的每一个都是由编码单元按顺序处理的

第一个预设定义了视频流,并且还指定每个视频流应以96kbps的速率混入音频。这意味着您的视频文件将比它们可能需要的大,并且在muxing过程中将占用一些时间

第二个和第三个预设只定义要输出的音频流-这些流不包含任何视频。其中第一个以96kbps的速度输出音频,第二个以56kbps的速度输出音频

假设您对96kbps的固定音频质量感到满意,我建议将音频从视频流和最后一个音频流(56kbps)中删除,这样可以将同一音频流保存两次编码,并将音频与视频混合。(从您的使用情况我可以看出,您可能根本不需要)

这样做的副作用是编码器输出文件的大小将略微减小,因此编码的成本也将降低

工作流优化

我唯一想说的另一点是关于首先将视频文件放入Azure的工作流程。您说您正在将它们上载到blob存储中—我假设您随后将它们复制到AMS资产中,以便将它们配置为作业的输入。如果这是正确的,您可以通过直接上传到资产中来节省一些时间

希望这有帮助,祝你好运