Задайте имена целевых потоков в IMFSinkWriter

#stream #windows-runtime #ms-media-foundation

#поток #windows-среда выполнения #ms-media-foundation

Вопрос:

Я кодирую видео через IMFSinkWriter с несколькими аудиопотоками.

Вопрос: Есть ли какой-либо способ задать имена целевых потоков, чтобы они отображались проигрывателями, поддерживающими эту функцию? Например, вот скриншот проигрывателя с поддержкой воспроизведения закодированного видео без заданных имен потоков.

Примечания: Мне не удалось найти какую-либо документацию по этому вопросу. В настоящее время я пишу в контейнер MP4, но если этого можно легко достичь с помощью других контейнеров, поддерживаемых MF, не стесняйтесь публиковать свои мысли. Наконец, код будет выполняться в приложении UWP, поэтому применяются ограничения WinRT (например, нет доступа к базовой топологии).

Комментарии:

1. Вы пытались установить MF_SD_STREAM_NAME? learn.microsoft.com/en-us/windows/win32/medfound /…

2. @Simon, да, моей первой попыткой было установить MF_SD_STREAM_NAME для атрибутов кодировки при вызове addStream, но это не работает (что неудивительно). Я пробовал много других вещей, таких как получение доступа к базовому потоку и установка там атрибута, но, похоже, ничего не работает. К сожалению, документации нет, и Google не очень помогает. Надеюсь, те, кто реализовал эту функцию, прочитали это и пролили некоторый свет.

3. Это только для дескриптора потока. У вас есть какой-либо воспроизводящий образец?

4. К сожалению, нет. Однако, как я уже сказал, это скорее проблема с документацией. Действительно, дескрипторы — это обычный механизм для предоставления реквизитов потока во время декодирования, но я не думаю, что есть какой-либо API для установки дескрипторов во время кодирования.

5. @pastelix у вас есть ссылка на WinRT IMFSinkWriter. addStream API? Я только когда-либо видел его как Win32, и, несмотря на довольно долгий поиск, я не смог его найти.