Как создать пустой или пустой видеослой в формате .mp4, который кодируется из файлов .mp3 (или других аудиофайлов), используя Azure Media Services v3? - PullRequest
1 голос
/ 23 апреля 2019

Обобщенная задача

Мы используем 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.

1 Ответ

0 голосов
/ 25 апреля 2019

Добавление ответа, который был передан в автономном режиме, к этому сообщению:

  1. Вы правы, что для проигрывателя мультимедиа Azure в настоящее время требуется видеодорожка
  2. При использовании API v2 существуетспособ вставить видеодорожку при кодировании источника только для аудио
  3. Этот флаг в настоящее время не отображается в нашей схеме v3

Однако следует иметь возможность использовать предустановку v3как AdaptiveStreaming - он кодирует аудио и генерирует «пустое видео» трек

Спасибо,

Anil

...