如何使用Azure Media Services v3生成从.mp3(或其他仅音频)文件编码的.mp4的空白视频层?

时间:2019-04-23 17:16:51

标签: c# azure video-streaming audio-streaming azure-media-services

问题总结

我们正在使用Azure Media Services v3通过Azure Media Player流媒体文件。目前,我正在尝试添加一个选项以使用AES加密流式传输.mp3。 上载和编码文件工作正常,我可以看到生成的.mp4文件,而且如果我从Blob下载它,甚至可以播放它。问题是,当我尝试在Azure Media Player中对其进行流传输时,播放器中出现以下错误: image 这是因为Azure Media Player不支持其documentation中所述的仅流音频文件:

  

在某些技术中可能适用于Adaptive Streaming,但目前不受支持,并且在AzureHtml5JS中不起作用。

我尝试过的

因此,我尝试将空白/空的h264Layer添加到转换作业中,以便编码后的文件不会仅是音频。我发现了有关like this这个问题的一些问题,但是我的问题仍然没有解决。 我还发现了this suggestion,这使我进入了Azure Media Services v2文档页面,但我认为这不是我所需要的。 我也看到了这个笔记:

  

媒体编码器标准的许多高级媒体服务v2功能当前在v3中不可用。有关更多信息,请参见功能差距。

我将编码预设设置为“ EncoderNamedPreset.AACGoodQualityAudio” 。然后转到“ EncoderNamedPreset.H264SingleBitrate720p” 只是看看它是否创建了一个空的视频层,但结果是相同的:该视频文件是在其自己的资产中创建的,但我无法对其进行流传输。

我试图用空的H264Layer创建自己的编码器预设,如下所示:

new StandardEncoderPreset(
    codecs: new Codec[]
    {
        new AacAudio(
            channels: 2,
            samplingRate: 48000,
            bitrate: 128000,
            profile: AacAudioProfile.AacLc
            ),
        new H264Video(
            keyFrameInterval: TimeSpan.FromSeconds(2),
            sceneChangeDetection: true,
            layers: new H264Layer[]
            {
                new H264Layer (
                    bitrate: 1, // Units are in bits per second
                    width: "1",
                    height: "1",
                    label: "SD" // This label is used to modify the file name in the output formats
                )                            }
            )
    },
    formats: new Format[]
    {
        new Mp4Format(filenamePattern:"Video-{Basename}-{Label}-{Bitrate}{Extension}")
    }
)

创建转换时的结果:

  

异常:操作返回了无效的状态码'BadRequest'

带有空白层

new H264Layer (
    bitrate: 0, // Units are in bits per second
    width: "0",
    height: "0",
    label: "SD" // This label is used to modify the file name in the output formats
)  

创建转换时的结果:

  

异常:操作返回了无效的状态码'BadRequest'

没有构造函数参数的H264Layer

new H264Layer()

结果: 转换已创建。 尝试流式传输时,AMP中出现相同的错误。

  

由于损坏问题或使用的视频不支持您的浏览器功能,视频播放被中止。 (0x20400003)

预期结果

预期结果将是Azure Media Player可以流式传输的任何类型的文件。我想应该以某种方式实现此目的,即在编码文件中添加空白/空的H264层,但是我不知道如何在Azure Media Services v3中做到这一点。

1 个答案:

答案 0 :(得分:0)

将离线传达的回复添加到该帖子:

  1. 您是正确的,Azure Media Player当前需要一个视频 跟踪
  2. 使用v2 API时,有一种方法可以在对纯音频源进行编码时插入视频轨道
  3. 该标记当前未在我们的v3模式中公开

但是,应该能够使用AdaptiveStreaming之类的v3预设–它对音频进行编码,并生成“空白视频”音轨

谢谢

Anil