2010-01-26 19 views
6

Şu anda yüksek tanımlı WMV ve H264 videolarını oynatması gereken bir Windows .NET uygulaması prototipini hazırlıyor. Test dosyalarım tam 1080p.Donanımda hızlandırılmış video DirectShow/WinForms

hedef donanım zayıf Atom işlemciler ancak güçlü NVidia 9400 grafiklere sahip. Grafiklerin entegre olduğunu biliyorum ama benim anlayışım, video oynatma için iyi olmaları.

WPF benim test dosyalarını oynatmak eğer Test Windows 7, MediaElement denetimi kullanarak, benim CPU kullanımı Ancak 0.

olduğu hedef işletim sistemi Windows XP

ve biz .NET 3.0 olmayabilir . Bu nedenle uygulamanın WinForms'ta çalışması gerekiyor. Çeşitli nedenlerle, Windows Media Player ActiveX bir seçenek değildir. Bu yüzden DirectShow'a bakıyoruz.

geri VMR9 kullanarak tam ekran video oynatırken, DirectShow.Net kullanarak çalar araya koydu. Bu yaklaşımı kullanarak, WMV dosyalarım% 20 - 30 CPU arasında bir yer tüketiyor. Oynamak için H264 dosyalarını bile almak için bir mp4 muxer/demuxer kurmam gerekiyordu ve daha sonra% 40 - 50 CPU kullanıyorlardı.

  • Windows 7'nin H264'ü desteklediğini biliyorum. Ancak, bir DirectShow filtresi değil gibi görünüyor?
  • Videom neden WPF kullanarak hızlanıyor, ancak DirectShow'u kullanırken değil? Anladığım kadarıyla DirectShow DXvA'yı destekliyor.

tldr: WinForms'ta donanım hızlandırılmış WMV ve H264 video oynatmayı nasıl başarabilirim?

Teşekkürler!

+0

Daha iyi bir mükemmellik elde etmek için DirectShow ile çalışan daha akıllı bir kod çözücü bulmanız gerekir. İyi olanlar paraya mal olur, ffdshow ücretsizdir. Bir noktada, .NET 3.0'ı henüz yüklemeyen birkaç XP makinesine kurmanın, muhtemelen pahalı ve kırılgan kod çözücüleri kurmaktan daha az güçlük çekip getirmeyeceğini düşünmek isteyebilirsiniz. –

+0

Teşekkürler! Görünüşe göre .NET 3.0 EVR yanıtı ... – TheNextman

cevap

2

sizin için doğrudan bir cevap yok mu, ama DXVA denetleyicisi programı geçmişte DXVA sorunlarını hata ayıklama bana yardım etti. http://bluesky23.hp.infoseek.co.jp/en/index.html

+0

Teşekkürler! Bu harika bir araçtır. Dosyalarımı oynatmak için video oluşturucuyu seçmenin yanı sıra kullanmak için DirectShow/MediaFoundation filtresini belirtmeme izin verir. – TheNextman

2

Bazı Jeremiah Morill tarafından tavsiye DXVA yardımcı program ile kontrol yapmış: İşte indirme bağlantısı olduğunu. Şimdi ne olup bittiğini çok iyi bir fikrim var

....

  • Ben Windows 7'de H264 desteği benim DirectShow uygulaması kullanamaz açıklar neden MediaFoundation tarafından sağlanmaktadır düşünüyorum!
  • Windows 7'de DirectShow filtre kullanarak bir WMV video Koşu
  • oluşturucunuz (VMR7/VMR9/EVR) bağlı performans farklı düzeylerde sağlar. VMR7 en az işlemci yoğun (% 6 - 7 CPU) ama en kötü kalite, EVR (% 8 - 12 CPU), VMR9'dan (% 12 - 13 CPU) biraz daha verimli ancak ikisi de aynı görünüyor. Bununla birlikte, kicker MediaFoundation filtresidir - ki bu tam olarak hızlandırılmış ve% 0 CPU kullanıyor. Bu nedenle, Windows 7'de MediaElement MediaFoundation kullanır?

Sonuç olarak, Windows XP'de 9400 grafikleriyle test etmem gerekiyor. Yardım için tekrar ...

Teşekkür mümkün olmayacak tam donanım hızlandırma gibi görünüyor (biz MediaFoundation olmadığı için ve dolayısıyla biz DXVA2 yok)!

+0

Sağdaki sesler! Vista ve 7'de, Windows Media Player dosya türüne göre MediaFoundation yolunu veya DirectShow yolunu seçecektir. WPF MediaElement, Windows Media Player OCX'i dahili olarak kullanır, bu nedenle WMP ve MediaElement, benzer performans özelliklerine sahip olmalıdır. –

+1

Standart görev yöneticisinden veya İşlem Gezgini'nden gelen% 0 ölçüm bu mu? Görev yöneticisinin sistem kodunda harcanan cpu zamanını rapor etmeyeceğinden şüpheleniyorum. – Alan

+0

Teşekkürler çocuklar! Ve evet - ölçüm TM'den geliyor. Kesinlikle doğru olmayabilir, ama sadece farklı boru hatlarını karşılaştırmak için bir tür 'kıstas' olarak görev yaptı ... – TheNextman

4

Orada bir çok ticari donanım hızlandırılmış h264 directshow filtresi var. Bazıları DXVA kullanıyor, bazıları Cuda kullanıyor. Hiçbiri özgür değil, ama çoğu pahalı değil. Ffdshow ve ilgili ffmpeg projeleri harika, ama kesinlikle bir Atom işlemci üzerinde HD h264 yapmazlar.(Herhangi biri başka bir şekilde kanıtlanabilirse, sizden duymak isterim.)

Açıkladığınız aynı Ion platformunda, XP'de DirectShow kullanarak HD h264 oynatımı yapıyorum. 1080p performansında sınır çizgidir, ancak bit hızını sınırlandırabilir ve aynı anda başka bir CPU veya GPU çalışması yapmanıza gerek kalmazsa onu yönetebilir. 720p, özellikle 60 yerine 24 veya 30 fps ile alabiliyorsanız çok daha rahattır.

Başımın üstünden, İyon için en iyi çalışan kodekler h264 için MainConcept, CoreAVC ve Cyberlink'tir. .

VMR7 yerine VMR7'yi denemenizi öneririm. Bazı DXVA kodekleri daha güvenilirdir ve VMR7 ile daha iyi performansa sahiptir.

+0

İhtiyacınız olsa bile, İyon platformunda DShow ile başarı elde ettiğinizi duymak harika Ticari bir kod çözücü! Test donanımımı XP ile kuracağım ve bazı önerilerinizi deneyeceğim. Teşekkürler! – TheNextman

İlgili konular