Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konuda, bir medya dosyasını kodlamak için dönüştürme API'sinin nasıl kullanılacağı açıklanmıştır.
- Genel Bakış
- Medya Kaynağı oluşturma
- Transcode Profili Oluşturma
- Kod dönüştürme topolojisi oluşturma
- Kodlama Oturumunu Çalıştırma
- İlgili konular
Genel bakış
Kod dönüştürme API'sini kullanmadan önce uygulamanın aşağıdaki bilgi parçalarına sahip olması gerekir:
- Yeniden kodlanacak mevcut bir medya dosyasının yolu veya URL'si.
- Çıkış dosyasının adı.
- Mp4 veya Gelişmiş Akış Biçimi (ASF) gibi çıkış dosyasının kapsayıcı türü.
- Kodlama biçimi. Bu bilgiler, kodlanmış ses ve video akışlarını açıklayan medya türlerini içerir.
Kod dönüştürme API'sini kullanmak için bir uygulama aşağıdaki adımları gerçekleştirir.
- Kaynak dosyayı okumak için bir medya kaynağı oluşturun.
- Bir transcode profili oluşturun. Ses akışını, video akışını ve dosya kapsayıcısını açıklayan öznitelikler ekleyin.
- Kodlama topolojisi oluşturmak için kod dönüştürme profilini kullanın. (Topolojiler hakkında daha fazla bilgi için bkz. Topolojiler Hakkında.)
- Medya Oturumutopolojisini ayarlayın.
- Medya Oturumu'na başlayın ve MESessionEnded olayını bekleyin.
Bu konunun geri kalanında bu adımlar daha ayrıntılı olarak açıklanmaktadır.
Medya Kaynağı Oluşturma
Medya kaynağı, kaynak dosyayı okuyan ve ayrıştıran bir nesnedir. Medya kaynağı oluşturmak için Kaynak Çözümleyicisikullanın. Örnek kodu Kaynak Çözümleyicikullanma konusunda bulabilirsiniz.
Transkod Profili Oluşturma
transcode profili çıkış dosyasını kodlamak için kullanılan biçimi ve ayarları açıklar. Kod dönüştürme profili üç öznitelik kümesi içerir:
- Ses öznitelikleri: Hedef ses biçimini ve ses kodlayıcı ayarlarını açıklayın.
- Video öznitelikleri: Hedef video biçimini ve video kodlayıcı ayarlarını açıklayın.
- Kapsayıcı öznitelikleri: Dosya kapsayıcısının türünü ve bazı genel kodlama ayarlarını tanımlayın.
Bir transcode profili oluşturmak için MFCreateTranscodeProfile işlevini çağırın. Bu işlev, IMFTranscodeProfile arabirimine bir işaretçi döndürür. İlk profil nesnesi boş; öznitelik içermiyor. Sonraki adım, profili tanımlayan öznitelikleri eklemektir.
Ses Öznitelikleri
Ses akışına öznitelik eklemek için IMFTranscodeProfile::SetAudioAttributesçağrısı gerçekleştirin. Bu öznitelikler ses akışının nasıl kodlanacağını belirtir. Çıkış dosyası bir ses akışı içermeyecekse, bu öznitelikleri atla.
Ses öznitelikleri iki kategoriye ayrılır:
- Kodlanmış akışın biçimini belirten öznitelikler
- Diğer kodlama parametrelerini belirten öznitelikler.
Format öznitelikleri, ses medya türleri bölümünde açıklandığı gibi yalnızca medya türü özniteliklerdir. Tam biçim öznitelikleri kümesi kodlayıcıya bağlıdır. (Bkz. Media Foundation Desteklenen Medya Biçimleri.) Tipik ses biçimi özniteliklerinin listesi aşağıda verilmiştir:
| Biçim Özniteliği | Açıklama |
|---|---|
| MF_MT_SUBTYPE | Alt tür. Bkz. Ses Alt Türü GUID'leri. |
| MF_MT_AUDIO_NUM_CHANNELS | Ses kanallarının sayısı. |
| MF_MT_AUDIO_SAMPLES_PER_SECOND | Saniyedeki ses örnekleri sayısı. |
| MF_MT_AUDIO_BLOCK_ALIGNMENT | Blok hizalaması. |
| MF_MT_AUDIO_AVG_BYTES_PER_SECOND | Saniye başına ortalama bayt sayısı (kodlanmış bit hızı). |
Aşağıdaki kodlama parametreleri tanımlanır.
| Kodlama Parametresi | Açıklama |
|---|---|
| MF_TRANSCODE_DONOT_INSERT_ENCODER | Transcode API'sinin ses akışı için bir kodlayıcı eklemesini engeller. |
| MF_TRANSCODE_ENCODINGPROFILE | Cihaz uyumluluğu şablonunu belirtir. (Yalnızca ASF dosyaları için geçerlidir.) |
| MF_TRANSCODE_QUALITYVSSPEED | Kodlama kalitesi ile hız arasındaki dengeyi belirtir. |
Biçim özniteliklerini ayarlamanız gerekir. Kodlama parametreleri isteğe bağlıdır.
Kodlayıcıyla uyumlu bir biçim bulmanın bir yolu, MFTranscodeGetAudioOutputAvailableTypes işlevini çağırmaktır. İstenen kodlayıcı alt türe göre belirtilir. işlevi, bu kodlayıcı için bir medya türleri koleksiyonu döndürür. Listeden bir tür seçebilir ve öznitelikleri profile kopyalayabilirsiniz. Bu yaklaşımı kullanan kodlar için bkz. Öğretici: WMA Dosyası kodlama.
Video Öznitelikleri
Video akışına öznitelik eklemek için IMFTranscodeProfile::SetVideoAttributesçağrısı gerçekleştirin. Bu öznitelikler video akışının nasıl kodlanacağını belirtir. Çıkış dosyası video akışı içermeyecekse, bu öznitelikleri atla.
Ses özniteliklerinde olduğu gibi video öznitelikleri de iki kategoriye ayrılır:
- Kodlanmış akışın biçimini belirten öznitelikler
- Diğer kodlama parametrelerini belirten öznitelikler.
Biçim öznitelikleri, Video Medya Türleribölümünde açıklandığı gibi medya türü özniteliklerdir. Tipik video biçimi özniteliklerinin listesi aşağıda verilmiştir:
| Biçim Özniteliği | Açıklama |
|---|---|
| MF_MT_SUBTYPE | Alt tür. Bkz. Video Alt Türü GUID'leri. |
| MF_MT_FRAME_RATE | Kare hızı. |
| MF_MT_FRAME_SIZE | Çerçeve boyutu. |
| MF_MT_AVG_BITRATE | Ortalama bit hızı. |
| MF_MT_PIXEL_ASPECT_RATIO | Piksel görüntü oranı. |
Aşağıdaki kodlama parametreleri tanımlanır.
| Kodlama Parametresi | Açıklama |
|---|---|
| MF_TRANSCODE_DONOT_INSERT_ENCODER | Kod dönüştürme API'sinin video akışı için bir kodlayıcı eklemesini engeller. |
| MF_TRANSCODE_ENCODINGPROFILE | Cihaz uyumluluğu şablonunu belirtir. (Yalnızca ASF dosyaları için geçerlidir.) |
| MF_TRANSCODE_QUALITYVSSPEED | Kodlama kalitesi ile hız arasındaki dengeyi belirtir. |
Biçim özniteliklerini ayarlamanız gerekir. Kodlama parametreleri isteğe bağlıdır.
Kapsayıcı Öznitelikleri
Kapsayıcı öznitelikleri, çıkış dosyasının dosya düzeyi özelliklerini tanımlar. Kapsayıcı özniteliklerini ayarlamak için IMFTranscodeProfile::SetContainerAttributesçağrısı gerçekleştirin. Aşağıdaki öznitelikler tanımlanır.
| Öznitelik | Açıklama |
|---|---|
| MF_TRANSCODE_ADJUST_PROFILE | Kod dönüştürme topolojisi için kullanılacak akış ayarlarını tanımlar. Giriş kaynağı ayarlarını kullanmak için bayrakları ayarlayabilir veya özel akış özniteliklerini kullanabilirsiniz. |
| MF_TRANSCODE_CONTAINERTYPE | Çıkış dosyasının MP4 veya ASF gibi dosya biçimini belirtir. Bu değere bağlı olarak, topolojiye uygun medya havuzu eklenir. |
| MF_TRANSCODE_SKIP_METADATA_TRANSFER | Kaynaktan meta verilerin çıkış dosyasına kopyalanıp kopyalanmayacağını belirtir. |
| MF_TRANSCODE_TOPOLOGYMODE | Kod dönüştürme sırasında donanım tabanlı codec'lerin kullanılıp kullanılamayacağını belirtir. |
| MFT_FIELDOFUSE_UNLOCK_Attribute | Kullanım alanı kısıtlamaları olan bir codec bileşeninin kilidini açar. Daha fazla bilgi için bkz. Kullanım Alanı Kısıtlamaları. |
MF_TRANSCODE_CONTAINERTYPE özniteliği gereklidir. Diğer kapsayıcı öznitelikleri isteğe bağlıdır.
Kod Dönüştürme Topolojisi Oluşturma
Kod dönüştürme topolojisi, medya kaynağını, uygun codec bileşenlerini ve medya havuzu içeren kısmi bir topolojidir. Kod dönüştürme topolojisini oluşturmak için MFCreateTranscodeTopology işlevini çağırın. Bu işlev giriş olarak aşağıdaki parametreleri alır:
- Medya kaynağının IMFMediaSource arabirimine bir işaretçi.
- Çıkış dosyasının adı.
- Transcode profilinin IMFTranscodeProfile arabirimine bir işaretçi.
İşlev, IMFTopology arabirimine bir işaretçi döndürür.
Kodlama Oturumunu Çalıştırma
Topolojiyi oluşturduktan sonra dosyayı kodlamaya hazırsınız. Profili bu noktada atabilirsiniz.
- Medya Oturumu oluşturmak için MFCreateMediaSessionçağırın.
- Medya Oturumu'nda topolojiyi ayarlamak için IMFMediaSession::SetTopology çağrısı.
- Kodlama oturumunu başlatmak için IMFMediaSession::Start çağırın.
- MESessionEnded olayını bekleyiniz.
- Medya Oturumu'nu kapatmak için IMFMediaSession::Close öğesini arayın.
- MESessionClosed etkinliğini bekleyin.
- ÇAĞRISI IMFMediaSource::Shutdown.
- Çağrı IMFMediaSession::Shutdown.
Kodlama için harcanan zamanın çoğu 3. ve 4. adımlar arasında gerçekleşir.
İlgili konular