Обобщенная задача
Мы используем Azure Media Services v3 для потоковой передачи мультимедийных файлов с помощью Azure Media Player. В настоящее время я пытаюсь добавить опцию для потоковой передачи .mp3 с шифрованием AES.
Загрузка и кодирование файла работает нормально, я вижу сгенерированный файл .mp4 и могу даже воспроизвести его, если загружу его из BLOB-объекта. Проблема заключается в том, что при попытке потоковой передачи в проигрывателе мультимедиа Azure в проигрывателе появляется следующая ошибка:
изображение
Это связано с тем, что Azure Media Player не поддерживает потоковую передачу только аудиофайлов, как указано в его документации :
Может работать в некоторых технологиях для адаптивной потоковой передачи, но в настоящее время не поддерживается и не работает в AzureHtml5JS.
Что я пробовал
Итак, я попытался добавить пустой / пустой h264Layer в задание преобразования, чтобы закодированный файл не был только аудио. Я нашел несколько вопросов, касающихся этой проблемы, , например , но моя проблема все еще не решена.
Я также нашел это предложение , которое привело меня на страницу документации Azure Media Services v2, но я думаю, что это не то, что мне нужно.
Я также видел эту заметку:
Многие из расширенных функций Media Services v2 стандарта Media Encoder в настоящее время недоступны в v3. Для получения дополнительной информации см. Пробелы в функциях.
Я установил предустановку кодирования на "EncoderNamedPreset.AACGoodQualityAudio" . Затем "EncoderNamedPreset.H264SingleBitrate720p" , чтобы посмотреть, создает ли он пустой слой видео, но результат тот же: видеофайл был создан в его собственном ресурсе, но я не смог его воспроизвести.
Я пытался создать свой собственный пресет энкодера с пустым слоем H264 следующим образом:
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}")
}
)
Результат при создании Transform:
Исключение: операция вернула недопустимый код состояния "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.