Я в замешательстве и очень надеюсь, что кто-нибудь может указать мне правильное направление.
В настоящее время я снимаю видео в Windows Mobile и кодирую его с помощью WMV 9 DMO (CLSID_CWMV9EncMediaObject). Это все работает достаточно хорошо, но битрейт выходного видео слишком высок, в результате чего видеофайл слишком велик для моих нужд.
В конечном счете, моя цель состоит в том, чтобы имитировать настройки видео, которые Microsoft Camera Capture Dialog выводит в режиме качества обмена сообщениями (64kbps) из моего кода C ++. В настоящее время мой код вывод файла WMV с битрейтом 352 кбит / с.
Единственный пример, который я мог найти для определения битрейта захвата с DMO WMV9, был this . Идея в этом коде заключалась в том, чтобы использовать пакет свойств для записи битрейта в свойство DMO.
Обновление: В Windows Mobile самое близкое свойство кодека, которое я могу найти, которое, по-видимому, соответствует битрейту, это "g_wszWMVCVBRQuality". Документация Microsoft этого свойства меня крайне смущает: в основном кажется, что большее число соответствует более высокому качеству, но оно абсолютно не объясняет специфику каждого числа. Когда я пытаюсь установить для этого свойства значение «1» через пакет свойств для DMO WMV9, я сталкиваюсь с ошибкой -2147467259 (неизвестно).
Подводя итог: Какова основная стратегия для определения битрейта / качества видео, записываемого с помощью DirectShow (wmv9) на платформе Windows Mobile?
Я слышал (или задавался вопросом) следующие методы:
- Используйте пакет свойств, чтобы изменить свойство DMO кодера, соответствующее битрейту / качеству (в настоящее время не работает)
- Создайте свой собственный транскодер / кодировщик, чтобы указать его. Это кажется ненужным, поскольку кодировщик WMV работает достаточно хорошо - он просто на слишком высокой скорости передачи битов.
- VIDEOINFOHEADER имеет свойство битрейта, но я подозреваю, что указание здесь новых настроек не изменит фактического процесса кодирования, поскольку я не думаю, что атрибуты файла вступят в действие до окончания кодирования.
Есть предложения?
PS:
Я бы опубликовал конкретный исходный код, но на данный момент это может сбить с толку больше, чем помогает, так как я очень много путаюсь в том, как это сделать. На данный момент я просто пытаюсь проверить общую стратегию.
СПАСИБО!