我要使用Azure Blob存储进行视频托管。这些视频通过HTML视频播放器集成到我的网站中:
<video controls>
<source src="blobstorageurl" type="video/mp4">
Your browser does not support HTML video.
</video>因此,我创建了一个blob容器,在其中上传视频。Azure函数(Blob触发器)正在观察此容器。上传新视频时,Azure函数应启动AMS作业,并将新文件作为源。
我使用了官方示例(https://github.com/Azure-Samples/media-services-v3-node-tutorials/blob/main/AMSv3Samples/StreamFilesSample/index.ts)的逻辑。
下面是我的代码的一小部分:
const blobTrigger: AzureFunction = async function (context: Context, myBlob: any): Promise<void> {
...
mediaServicesClient = new AzureMediaServices(creds, subscriptionId, clientOptions);
let job = await mediaServicesClient.jobs.create(resourceGroup, accountName, transformName, jobName, { input: context.bindingData.uri, outputs: jobOutputs });
}这基本上创建了一个包含编码文件的新blob容器。
我的问题是,如何将此文件提供给我的HTML视频播放器。在本教程中,他们创建了一个流定位器,我不能将其用于HTML5播放器。我可以直接使用blob吗?或者这不是一个好主意吗?如果是,我如何在没有访问密钥的情况下提供它。
发布于 2021-07-01 02:05:44
首先,您应该确保理解所谓的“渐进式加载”带有标记的视频文件与使用HLS或DASH流协议和“自适应流”的真正流解决方案之间的技术差异。有很多资源可以解释两者和客户体验之间的区别。
基本上,渐进式下载对于网络较差的客户来说需要很长的缓冲期,如果网络条件发生变化(例如在蜂窝网络上),播放体验就不会那么快或流畅。
只需在存储帐户容器中的MP4上创建一个SAS定位器(将其设置为公共),您就可以轻松获得渐进式下载URL,或者,如果您将流策略名称设置为:'Predefined_DownloadAndClearStreaming‘,您也可以通过流定位器交付它。这将允许您列出HLS、DASH和SAS (渐进式下载)路径。您也可以在AMSE工具中更轻松地看到这一点。有关内置策略类型的详细信息,请参阅此内容(您还可以为流定义自定义策略类型。) https://docs.microsoft.com/en-us/rest/api/media/streaming-locators/create
https://stackoverflow.com/questions/68199275
复制相似问题