Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a témakör azt ismertette, hogyan kódolhat médiafájlokat a transcode API használatával.
- Áttekintés
- Médiaforrás létrehozása
- Transcode-profil létrehozása
- Transcode Topológia létrehozása
- Kódolási munkamenet futtatása
- Kapcsolódó témakörök
Áttekintés
A transcode API használata előtt az alkalmazásnak a következő információkkal kell rendelkeznie:
- Egy újrakódolt meglévő médiafájl elérési útja vagy URL-címe.
- A kimeneti fájl neve.
- A kimeneti fájl tárolótípusa, például MP4 vagy Advanced Streaming Format (ASF).
- A kódolási formátum. Ezek az információk tartalmazzák a kódolt hang- és videostreameket leíró médiatípusokat.
A transcode API használatához egy alkalmazás végrehajtja a következő lépéseket.
- Hozzon létre egy médiaforrást a forrásfájl olvasásához.
- Hozzon létre egy transzkódprofilt. Adjon hozzá a hangstreamet, a videostreamet és a fájltárolót leíró attribútumokat.
- Kódolási topológia létrehozásához használja a transzkódprofilt. (További információ a topológiákról: About Topologies.)
- Állítsa be a media sessiontopológiát.
- Indítsa el a media session-t, és várja meg a MESessionEnded eseményt.
A témakör többi része részletesebben ismerteti ezeket a lépéseket.
Médiaforrás létrehozása
A médiaforrás olyan objektum, amely beolvassa és elemzi a forrásfájlt. Médiaforrás létrehozásához használja a Forrásmegoldó. A forrásfeloldó használatávaltémakörben talál példakódot.
Transcode-profil létrehozása
A transzkódprofil ismerteti a kimeneti fájl kódolásához használt formátumot és beállításokat. A transzkódprofil három attribútumkészletet tartalmaz:
- Hangattribútumok: A cél hangformátum és a hangkódoló beállításainak leírása.
- Videoattribútumok: A cél videóformátum és a videokódoló beállításainak leírása.
- Tárolóattribútumok: Definiálja a fájltároló típusát, valamint néhány globális kódolási beállítást.
Transzkódprofil létrehozásához hívja meg a MFCreateTranscodeProfile függvényt. Ez a függvény a IMFTranscodeProfile felületére mutató mutatót ad vissza. A kezdeti profilobjektum üres; nem tartalmaz attribútumokat. A következő lépés a profilt meghatározó attribútumok hozzáadása.
Hangattribútumok
A hangstream attribútumainak hozzáadásához hívja meg IMFTranscodeProfile::SetAudioAttributes. Ezek az attribútumok határozzák meg a hangstream kódolását. Ha a kimeneti fájl nem tartalmaz hangstreamet, hagyja ki ezeket az attribútumokat.
A hangattribútumok két kategóriába sorolhatók:
- A kódolt stream formátumát meghatározó attribútumok
- Más kódolási paramétereket meghatározó attribútumok.
A formátumattribútumok egyszerűen média típusú attribútumok, a Hanghordozó-típusokcímű szakaszban leírtak szerint. A formátumattribútumok pontos készlete a kódolótól függ. (Lásd: Media Foundationtámogatott médiaformátumai.) Íme a tipikus hangformátum-attribútumok listája:
| Attribútum formátuma | Leírás |
|---|---|
| MF_MT_SUBTYPE | Az altípus. Lásd Audio altípusú GUID-ok. |
| MF_MT_AUDIO_CHANNELS_SZÁMA | A hangcsatornák száma. |
| MF_MT_AUDIO_SAMPLES_PER_SECOND | A hangminták száma másodpercenként. |
| MF_MT_AUDIO_BLOCK_ALIGNMENT | A blokk igazítása. |
| MF_MT_AUDIO_AVG_BYTES_PER_SECOND | A másodpercenkénti bájtok átlagos száma (a kódolt bitsebesség). |
A következő kódolási paraméterek vannak definiálva.
| Kódolási paraméter | Leírás |
|---|---|
| MF_TRANSCODE_DONOT_INSERT_ENCODER | Megakadályozza, hogy a transcode API kódolót szúrjon be a hangstreamhez. |
| MF_TRANSCODE_ENCODINGPROFILE | Megadja az eszközmegfelelőségi sablont. (Csak az ASF-fájlokra vonatkozik.) |
| MF_TRANSCODE_QUALITYVSSPEED | Megadja a kódolás minősége és sebessége közötti kompromisszumot. |
Meg kell adnia a formátumattribútumokat. A kódolási paraméterek megadása nem kötelező.
A kódolóval kompatibilis formátum megkeresésének egyik módja az MFTranscodeGetAudioOutputAvailableTypes függvény meghívása. A kívánt kódolót altípus határozza meg. A függvény a kódolóhoz tartozó médiatípusok gyűjteményét adja vissza. Kiválaszthat egy típust a listából, és átmásolhatja az attribútumokat a profilba. Például az ezt a megközelítést használó kód, lásd oktatóanyagot: WMA-fájl kódolása.
Videoattribútumok
A videóstream attribútumainak hozzáadásához hívja meg IMFTranscodeProfile::SetVideoAttributes. Ezek az attribútumok határozzák meg a videostream kódolását. Ha a kimeneti fájl nem tartalmaz videostreamet, hagyja ki ezeket az attribútumokat.
A hangattribútumokhoz hasonlóan a videoattribútumok két kategóriába sorolhatók:
- A kódolt stream formátumát meghatározó attribútumok
- Más kódolási paramétereket meghatározó attribútumok.
A formátumattribútumok média típusú attribútumok, a Video médiatípusokcímű szakaszban leírtak szerint. Az alábbi lista a tipikus videoformátum-attribútumokat tartalmazza:
| Attribútum formázása | Leírás |
|---|---|
| MF_MT_SUBTYPE | Az altípus. Lásd: Videó altípus GUID-ek. |
| MF_MT_FRAME_RATE | A képkockasebesség. |
| MF_MT_FRAME_SIZE | A keret mérete. |
| MF_MT_AVG_BITRATE | Az átlagos bitsebesség. |
| MF_MT_PIXEL_ASPECT_RATIO | A képpont méretaránya. |
A következő kódolási paraméterek vannak definiálva.
| Kódolási paraméter | Leírás |
|---|---|
| MF_TRANSCODE_DONOT_INSERT_ENCODER | Megakadályozza, hogy a transcode API kódolót szúrjon be a videóstreamhez. |
| MF_TRANSCODE_ENCODINGPROFILE | Megadja az eszközkonformitási sablont. (Csak az ASF-fájlokra vonatkozik.) |
| MF_TRANSCODE_QUALITYVSSPEED | Megadja a kódolás minősége és sebessége közötti kompromisszumot. |
Meg kell adnia a formátumattribútumokat. A kódolási paraméterek megadása nem kötelező.
Tárolóattribútumok
A tárolóattribútumok a kimeneti fájl fájlszintű jellemzőit határozzák meg. A tárolóattribútumok beállításához hívja meg IMFTranscodeProfile::SetContainerAttributes. A következő attribútumok vannak definiálva.
| Attribútum | Leírás |
|---|---|
| MF_TRANSCODE_ADJUST_PROFILE | Meghatározza a transzkódtopológiához használandó streambeállításokat. Beállíthatja a jelzőket a bemeneti forrás beállításainak használatára, vagy egyéni streamattribútumok használatára. |
| MF_TRANSCODE_CONTAINERTYPE | A kimeneti fájl fájlformátumát adja meg, például MP4 vagy ASF. Ezen érték alapján a rendszer hozzáadja a megfelelő adathordozó-fogadót a topológiához. |
| MF_TRANSCODE_SKIP_METADATA_TRANSFER | Megadja, hogy a forrásból származó metaadatok át lesznek-e másolva a kimeneti fájlba. |
| MF_TRANSCODE_TOPOLOGYMODE | Megadja, hogy hardveralapú kodekek használhatók-e az átkódolás során. |
| MFT_FIELDOFUSE_UNLOCK_Attribute | Felold egy olyan kodek zárolását, amely használati korlátozásokkal rendelkezik. További információ: Használati korlátozások. |
A MF_TRANSCODE_CONTAINERTYPE attribútum megadása kötelező. A többi tárolóattribútum nem kötelező.
Transcode-topológia létrehozása
A transzkódoló topológia egy részleges topológia, amely tartalmazza a médiaforrást, a megfelelő kodekeket és a médiacélt. A transzkódtopológia létrehozásához hívja meg az MFCreateTranscodeTopology függvényt. Ez a függvény a következő paramétereket veszi bemenetként:
- Egy mutató a médiaforrás IMFMediaSource felületére.
- A kimeneti fájl neve.
- Mutató az IMFTranscodeProfile transzkódprofil interfészére.
A függvény egy mutatót ad vissza az IMFTopology felületére.
A kódolási munkamenet futtatása
A topológia létrehozása után készen áll a fájl kódolására. Ezen a ponton elvetheti a profilt.
- Hívja meg MFCreateMediaSession a media session létrehozásához.
- A IMFMediaSession::SetTopology hívásával állítsa be a topológiát a Média munkamenetben.
- Hívja meg IMFMediaSession::Start a kódolási munkamenet elindításához.
- Várja meg a MESessionEnded eseményt.
- Hívja meg IMFMediaSession::Close a média munkamenet bezárásához.
- Várja meg a MESessionClosed eseményt.
- Hívás IMFMediaSource::Shutdown.
- Hívás IMFMediaSession::Shutdown.
A kódolással töltött idő nagy része a 3. és a 4. lépés között történik.
Kapcsolódó témakörök