スマートリ圧縮を使用してコンテンツをトランスコードするには
[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーとシンク ライターに置き換わりました。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
Windows Media Format SDK を使用して、あるビット レートから別のビット レートにコンテンツをトランスコードできます。 通常、コンテンツをデコードし、目的のビット レートに再度エンコードするだけで済みます。 Windows Media Audio 9 コーデックは、通常よりも高品質を実現するトランスコーディングを可能にするスマートな再圧縮をサポートしています。
スマート再圧縮の場合、元のオーディオ ストリームは Windows Media Audio コーデックでエンコードする必要があります。 コーデックのすべてのバージョンがサポートされていますが、特殊なオーディオ コーデック (Windows Media Audio 9 Professional と Windows Media Audio 9 Voice) はサポートされていません。 元のオーディオが Windows Media Audio 9 のロスレス コーデックでエンコードされている場合は、元のエンコードで情報が失われなかったため、スマート再圧縮を使用する必要はありません。
スマート再圧縮を使用するには、次の手順を実行します。
- 読み取り用のソース ファイルを使用してリーダー オブジェクトを設定します。 詳細については、「 ASF ファイルの読み取り」を参照してください。
- ファイルのコード変換に使用するライター オブジェクトを設定します。 新しいファイルのファイル名を設定します。 新しいファイルに使用するプロファイルを選択します。 writer オブジェクトで選択したプロファイルを設定します。 詳細については、「 ASF ファイルの書き込み」を参照してください。
- IWMReader::QueryInterface を呼び出して、リーダー オブジェクトの IWMProfile インターフェイスへのポインターを取得します。
- IWMProfile::GetStream を呼び出して、トランスコードされるオーディオ ストリームの IWMStreamConfig インターフェイスを取得します。
- IWMStreamConfig::QueryInterface を呼び出して、ストリーム構成オブジェクトの IWMMediaProps インターフェイスを取得します。
- IWMMediaProps::GetMediaType を 2 回呼び出して、ストリームのWM_MEDIA_TYPE構造を取得します。 最初の呼び出しで構造体のサイズを取得し、2 番目の呼び出しで渡すバッファーにメモリを割り当てます。
- IWMWriter::GetInputProps を呼び出して、ライター内の入力の IWMInputMediaProps インターフェイスへのポインターを取得します。
- IWMInputMediaProps::QueryInterface を呼び出して、入力メディア プロパティ オブジェクトの IWMPropertyVault インターフェイスを取得します。
- IWMPropertyVault::SetProperty メソッドを使用して、g_wszOriginalWaveFormat プロパティを設定します。 手順 6 で取得した WAVEFORMATEX 構造体を プロパティの値として使用します。
- IWMWriter::SetInputProps を呼び出し、IWMInputMediaProps インターフェイスへのポインターを渡すことによって、入力メディア プロパティに加えられた変更を含めます。
- 元のファイルからサンプルの読み取りを開始し、 IWMWriter::WriteSample を呼び出してライターに渡します。
関連トピック