我试图使用Azure MediaService API
与一起Azure Storage API
在API Service
中主持Azure
.
用户将视频流发送到服务HttpPost
,服务将视频保存为我的存储帐户中的blob,媒体服务对视频进行编码,当视频链接准备就绪时,将其返回给用户.
但是,当我试图创建Asset
一个System.NotSupportedException
被抛出与消息:
抛出异常:Microsoft.Data.Services.Client.dll中的'System.NotSupportedException'抛出异常:mscorlib.dll中的'System.NotSupportedException'iisexpress.exe错误:0:Exception = System.NotSupportedException:此目标框架不支持您直接枚举数据服务查询.这是因为枚举会自动向数据服务发送同步请求.由于此框架仅支持异步操作,因此必须调用BeginExecute和EndExecute方法来获取支持枚举的查询结果.
我使用以下版本的所需依赖项:
Microsoft.Data.Services.Client - 5.6.2.0
Microsoft.WindowsAzure.MediaServices.Client - 3.0.0.8
Microsoft.WindowsAzure.Storage - 3.1.0.1
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
CloudMediaContext _context;
IAsset asset;
using (MemoryStream Ms = new MemoryStream(data.Data))
{
_context = new CloudMediaContext("accountName", "accountKey");
asset = await _context.Assets.CreateAsync("blobContainerName",
AssetCreationOptions.None,CancellationToken.None);
...
...
}
Run Code Online (Sandbox Code Playgroud)
在data.Data
包含byte[]
视频.CreateAsync
调用时抛出异常.我试着_context.Assets.Create
没有运气.
重要编辑
我创建了一个新的控制台应用程序,使用了我在API服务中使用的代码并且它已成功执行.所以问题出在API服务中.
这是我的类和方法定义
public class UploadController : ApiController
{
[HttpPost]
public …
Run Code Online (Sandbox Code Playgroud) c# azure azure-storage-blobs async-await azure-media-services
我正在尝试使用此处的说明创建服务主体帐户
但是当我运行命令时
az ams account sp create --account-name *media_service_account_name* --resource-group *resource_group_name*
Run Code Online (Sandbox Code Playgroud)
其中media_service_account_name是我创造和媒体服务中显示的名称resource_group_name在同一页上显示的资源组的名称。
问题是我收到消息ResourceGroupNotFound
:
找不到资源组“ resource_group_name ”。
我只是看不出我做错了什么。任何帮助表示赞赏。
我们正在设计一个 Azure 网站,它允许用户上传内容(MP4、Docx...MSOffice 文件),然后可以访问这些内容。
在流式传输(使用Azure 媒体服务)之前,我们将对某些视频内容进行编码以提供多种不同质量的格式。
我们需要添加一个中间步骤,以便我们可以扫描上传的文件是否存在潜在的病毒风险。是否有内置于 azure(或第三方)的功能允许我们在处理内容之前调用 API 来扫描内容?理想情况下,我们正在寻找 API 而不仅仅是 VM 上的后台服务,因此我们可以获得可能用于 Web 或辅助角色的反馈。
快速浏览了 Symantec Endpoint 和 Windows Defender,但不确定它们是否提供 API
我正在阅读新的Azure媒体播放器(https://aka.ms/ampdocs)的文档,但我仍然无法弄清楚如何关闭AMS徽标.我应该设置
amp.Player.LogoConfig.enabled = false
?这对我不起作用.我在<video>
标签上设置了什么吗?我找不到一个能告诉我如何的样本.
我想解析一个.AIB文件,我从Azure媒体索引器作业的输出形式,我可以读取文件中的数据,并可以取出所需的信息.
我们使用ASP.NET MVC 4允许用户通过我们的网站上传视频和音频.我想使用Azure Media Service作为后端.
在遵循Azure的教程时,我遇到的问题是Azure Media Services SDK似乎不允许上传原始数据流.相反,我能找到的唯一上传方法使用路径字符串参数.
我想避免将文件保存到磁盘(默认情况下它已经流式传输到磁盘),并且能够将请求发布的文件直接流式传输到Azure.
这是我到目前为止的代码:
public void SaveMedia(string fileName, System.IO.Stream stream)
{
CloudMediaContext mediaCloud = new CloudMediaContext("account", "key");
AssetCreationOptions assetOptions = new AssetCreationOptions();
var asset = mediaCloud.Assets.Create(fileName, assetOptions);
var assetFile = asset.AssetFiles.Create(fileName);
var accessPolicy = mediaCloud.AccessPolicies.Create(fileName, TimeSpan.FromDays(3), AccessPermissions.Write | AccessPermissions.List);
var locator = mediaCloud.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy);
assetFile.Upload("????????????");
locator.Delete();
accessPolicy.Delete();
}
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标?这会与使用ASP.NET MVC 4和Azure媒体服务处理上传的任何"最佳实践"冲突吗?
默认的直播流端点无法启动,我无法停止或取消.摆脱它的唯一方法是删除整个资源组.我做了它并再次尝试相同的结果.我添加了1个流媒体单元,并在尝试第二次启动之前启用了CDN.知道问题是什么和/或如何使终点正常启动?
我从2015年开始研究MVC中的开源社区项目Azure Media Services上传和播放视频.我之前没有使用任何交付加密,所以我开始研究AES.
在Azure媒体服务团队的所有源代码/示例中,我注意到在上传内容后正在生成测试令牌,这在我的情况下也很有效.但是,下一次如何生成测试令牌以进行播放?
我的理解是,每次玩家请求播放时我们都需要令牌.从技术上讲,播放器向关键服务提供商创建请求并接收更新的令牌.
因此,为了获得更新的令牌,我尝试了几种无法解决此问题的方法,我看到错误"A ContentKey(Id ='...',Type ='EnvelopeEncryption'),其中包含已链接到此资产的相同类型" .
这看起来像是一个有效的错误消息,因为EnvelopeEncryption类型的密钥已经添加并在上传内容后与资产相关联,并在再次请求此弹出窗口时.
下面给出的代码是从这里复制的.
public ActionResult Index()
{
var model = new List<VideoViewModel>();
var videos = db.Videos.OrderByDescending(o => o.Id).ToList();
foreach (var video in videos)
{
var viewModel = new VideoViewModel();
viewModel.Id = video.Id;
viewModel.EncodedAssetId = video.EncodedAssetId;
viewModel.IsEncrypted = video.IsEncrypted;
viewModel.LocatorUri = video.LocatorUri;
// If encrypted content, then get token to play
if (video.IsEncrypted)
{
IAsset asset = GetAssetById(video.EncodedAssetId);
IContentKey key = CreateEnvelopeTypeContentKey(asset);
viewModel.Token = GenerateToken(key);
} …
Run Code Online (Sandbox Code Playgroud) 我们在 iPhone 6 (A1586) 上播放受 AES(使用 JWT 令牌身份验证)保护的视频时遇到问题。欠费错误如下:
\n\n\n\n\n0x50300000 - 视频播放因损坏问题而中止\n或因为视频使用了您的浏览器不支持的功能
\n
当禁用加密时,播放相同的视频不会出现任何问题。
\n\n问题是,Azure Media Player 团队发布的复制此类场景的示例也不起作用,并且失败并出现完全相同的错误!此处提供: https: //ampdemo.azureedge.net/。该样本命名如下:
\n\n\n\n\nAES(JWT 令牌)\xe2\x80\x93 点播 [钢铁之泪预告片]
\n
如何通过 iPhone 上的 Azure 媒体服务/播放器进行受保护的视频流?它完全支持场景吗?
\n\n以下是设置传递策略的相关代码:
\n\n deliveryPolicy = context.AssetDeliveryPolicies.Create(\n DeliveryPolicyName,\n AssetDeliveryPolicyType.DynamicEnvelopeEncryption,\n AssetDeliveryProtocol.SmoothStreaming | AssetDeliveryProtocol.Dash | AssetDeliveryProtocol.HLS,\n new Dictionary<AssetDeliveryPolicyConfigurationKey, string>\n {\n { AssetDeliveryPolicyConfigurationKey.EnvelopeKeyAcquisitionUrl, contentKey.GetKeyDeliveryUrl(ContentKeyDeliveryType.BaselineHttp).ToString() }\n }\n );\n
Run Code Online (Sandbox Code Playgroud)\n 文档在这里:
https://learn.microsoft.com/en-us/azure/media-services/latest/streaming-locators-concept
不过,我完全忽略了概念方面的内容。
为什么我们需要它,它象征着什么?
任何有 Azure 媒体服务经验的人都可以像我五岁一样向我解释流定位器是什么,这样我不仅知道自己在做什么,还知道为什么。