Перекодирование содержимого с помощью смарт-рекомпрессии
[Функция, связанная с этой страницей, 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, нет необходимости использовать интеллектуальную рекомпрессию, так как в исходной кодировке данные не были потеряны.
Чтобы использовать интеллектуальную рекомпрессию, выполните следующие действия.
- Настройте объект чтения с исходным файлом для чтения. Дополнительные сведения см. в разделе Чтение ФАЙЛОВ ASF.
- Настройте объект записи для использования для перекодирования файла. Задайте имя нового файла. Выберите профиль, который будет использоваться для нового файла. Задайте выбранный профиль в объекте записи. Дополнительные сведения см. в разделе Запись ASF-файлов.
- Получите указатель на интерфейс IWMProfile объекта чтения, вызвав IWMReader::QueryInterface.
- Получите интерфейс IWMStreamConfig для перекодированного аудиопотока, вызвав IWMProfile::GetStream.
- Получите интерфейс IWMMediaProps для объекта конфигурации потока, вызвав IWMStreamConfig::QueryInterface.
- Получите структуру WM_MEDIA_TYPE для потока, выполнив два вызова IWMMediaProps::GetMediaType. Получение размера структуры при первом вызове и выделение памяти буферу для передачи во втором вызове.
- Получите указатель на интерфейс IWMInputMediaProps для входных данных в записи, вызвав IWMWriter::GetInputProps.
- Получите интерфейс IWMPropertyVault для объекта входных свойств мультимедиа, вызвав метод IWMInputMediaProps::QueryInterface.
- Используйте метод IWMPropertyVault::SetProperty , чтобы задать свойство g_wszOriginalWaveFormat. Используйте в качестве значения свойства структуру WAVEFORMATEX , полученную на шаге 6.
- Включите изменения, внесенные во входные свойства мультимедиа, путем вызова IWMWriter::SetInputProps и передачи ему указателя на интерфейс IWMInputMediaProps .
- Начните считывать примеры из исходного файла и передавать их в модуль записи с помощью вызовов IWMWriter::WriteSample.
Связанные темы