2

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

我想要什么:将 3-30 秒的视频从客户端上传到服务器,并使用 WAMS 对其进行编码,然后尽快通过 HLSv3 进行流式传输。理想情况下,也会生成视频预览图像。尽可能快地转身一分钟。这可能不现实,我意识到,但越快越好。

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

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

4

1 回答 1

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 资产中,以便可以将它们配置为作业的输入。如果这是正确的,您可以通过直接上传到资产来节省一些时间。

希望对您有所帮助,祝您好运!

于 2014-10-31T15:24:41.373 回答