Поделиться через


Перекодирование содержимого с помощью смарт-рекомпрессии

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Вы можете перекодировать содержимое из одной скорости в другую с помощью пакета SDK для форматов Windows Media. Как правило, это включает в себя просто декодирование содержимого и его повторное кодирование с требуемой скоростью. Кодек Windows Media Audio 9 поддерживает интеллектуальную рекомпрессию, которая обеспечивает лучшее качество, чем обычно.

Для интеллектуальной повторной сжатия исходный аудиопоток должен быть закодирован с помощью кодека Windows Media Audio. Поддерживаются все версии кодека, но специализированные аудиокодеки (Windows Media Audio 9 Professional и Windows Media Audio 9 Voice) — нет. Если исходный звук был закодирован с помощью кодека Windows Media Audio 9 Lossless, нет необходимости использовать интеллектуальную рекомпрессию, так как в исходной кодировке данные не были потеряны.

Чтобы использовать интеллектуальную рекомпрессию, выполните следующие действия.

  1. Настройте объект чтения с исходным файлом для чтения. Дополнительные сведения см. в разделе Чтение ФАЙЛОВ ASF.
  2. Настройте объект записи для использования для перекодирования файла. Задайте имя нового файла. Выберите профиль, который будет использоваться для нового файла. Задайте выбранный профиль в объекте записи. Дополнительные сведения см. в разделе Запись ASF-файлов.
  3. Получите указатель на интерфейс IWMProfile объекта чтения, вызвав IWMReader::QueryInterface.
  4. Получите интерфейс IWMStreamConfig для перекодированного аудиопотока, вызвав IWMProfile::GetStream.
  5. Получите интерфейс IWMMediaProps для объекта конфигурации потока, вызвав IWMStreamConfig::QueryInterface.
  6. Получите структуру WM_MEDIA_TYPE для потока, выполнив два вызова IWMMediaProps::GetMediaType. Получение размера структуры при первом вызове и выделение памяти буферу для передачи во втором вызове.
  7. Получите указатель на интерфейс IWMInputMediaProps для входных данных в записи, вызвав IWMWriter::GetInputProps.
  8. Получите интерфейс IWMPropertyVault для объекта входных свойств мультимедиа, вызвав метод IWMInputMediaProps::QueryInterface.
  9. Используйте метод IWMPropertyVault::SetProperty , чтобы задать свойство g_wszOriginalWaveFormat. Используйте в качестве значения свойства структуру WAVEFORMATEX , полученную на шаге 6.
  10. Включите изменения, внесенные во входные свойства мультимедиа, путем вызова IWMWriter::SetInputProps и передачи ему указателя на интерфейс IWMInputMediaProps .
  11. Начните считывать примеры из исходного файла и передавать их в модуль записи с помощью вызовов IWMWriter::WriteSample.

Дополнительные разделы

Интерфейс IWMInputMediaProps

Интерфейс IWMMediaProps

Интерфейс IWMProfile

Интерфейс IWMPropertyVault

Интерфейс IWMStreamConfig