Медиа Фонд SinkWriter (MP4 FastStart)

0

Я использую Media Foundation для создания выходного файла MP4 (H264 + AAC) из входного MP4 после серии фильтров. Создание видео отлично работает, и видео воспроизводится без проблем локально. Проблема заключается в том, что при удаленном выполнении (через веб-плеер или даже VLC) видео не запускается до полной загрузки.

Я проверил и подтвердил, что http-сайт, на котором размещен файл, поддерживает поле заголовков Accepts-Ranges, и через некоторое время выяснилось, что проблема возникает из-за того, что файл не был создан с флагом "быстрого старта", который позволяет осуществлять прогрессивную загрузку видео.

Я попытался найти в Интернете решение, но мне не удалось найти способ применить этот флаг к Media Foundation Sinkwriter. Есть идеи? (Я не могу использовать какое-либо внешнее приложение для этого, поскольку этот код будет запущен в среде Windows Store)

Теги:
video
winapi
com
ms-media-foundation

1 ответ

2
Лучший ответ

Для прогрессивной загрузки требуется, moov ящик moov перед mdat в файле MPEG-4, что обычно требует дополнительных усилий при создании файла и которое не является поведением по умолчанию в Media Foundation.

Media Foundation представил атрибут MF_MPEG4SINK_MOOV_BEFORE_MDAT для обработки этого:

Поведение mpeg4 по умолчанию по умолчанию - писать "moov" после поля "mdat". Установка этого атрибута заставляет сгенерированный файл писать "moov" перед полем "mdat".

Чтобы приемник mpeg4 использовал этот атрибут, поток байтов, который был передан, не должен быть медленным поиском или удаленным.

Эта функция включает в себя дополнительное копирование/ремуксирование файлов.

Обратите внимание на минимальные требования. Или вам нужно выполнить пост-обработку файла, чтобы переместить поле moov в начало.

Смотрите также:

  • 0
    Спасибо, этот флаг не работал в моем случае, и я закончил тем, что написал небольшой парсер MP4 и переместил MOOV перед MDAT вручную (также изменив смещения STCO)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню