Šta je novo?

Windows Media Player kontrola + Prevod

  • Začetnik teme Začetnik teme Cwelle
  • Datum pokretanja Datum pokretanja

Cwelle

Čuven
Učlanjen(a)
07.12.2003
Poruke
3,240
Poena
709
Imam aplikaciju u kojoj koristim Windows Media Player kontrolu za prikaz video klipova sa hard diska.

Da li neko zna kako da iscrtam tekst preko slike koju prikazuje kontrola?

Znaci, kao sto media player-i prikazuju prevod preko filma.
Problem je sto kontrola koristi overlay ili VMR (sta WMP koristi), tako da neznam kako da dodam grafiku/tekst preko toga. :wall:
Treba mi primer u Delphi-ju ili C++/C#.

Trazio sam po netu ali bezuspesno. :wall: :wall: :wall:
 
Poslednja izmena:
Ima vise nacina, ali svi zahtevaju da se "zasucu" rukavi.
1. Napravi text kontrolu postavi je iznad kontrole koja hostuje video, postavi joj background boju na overlay key-color (verovatno 15 0 15 ili 0 0 15) i menjaj tekst. Ovo mozda bude radilo, ali nemogu da garantujem.
2. Idi na sourceforge, nadji projekat vobsub, skini ga, prouci i napravi svoj directshow filter koji ce se automatski ubacivati u video decoding graph i ispisivati text koji mu prosledis.
3. Napravi svoj video-renderer filter i umetni ga umesto standardnog VMR-a. Mozes ga napisati u directX-u ili OpenGL-u i u njemu napravi iscrtavanje teksta po zelji.
 
Poslednja izmena:
Resenje za ovo je DirectShow ..

Ne mora praviti video renderer filter niti da koristi directx ili opengl .
Skini novi Vista SDK i u DirectShow Samples (Samples\Multimedia\VMR9) pronadji primer Ticker
za ispis texta preko video frejma .

Sustina je da se napravi bitmap alpha maska u koju se ispise text
pa se zatim lepi na video-frejm .

WMP ActiveX zaboravi za ovakve stvari ..
 
Nasao sam DSPack za Delphi. Napravio sam ticker ali postoji jedno ali.
Kada prelazim sa jednog video fajla na drugi cela slika pocrni na sekundu, sto ce reci, ticker mi nestane a hteo bi da se vidi stalno. Moracu da proucim kako to da uradim u C++/C#-u.
 
DirectShow tada brise renderer pa iznova pravi novi lanac filtera za novi video fajl .

Detektuj kraj video fajla (WM_GRAPHNOTIFY poruka) ,
pa nalepi klasican text pomocu GDI funkcija (DrawText )
u OnPaint eventu .
 
Trebao si odmah reci sta pravis.
Ja sam pravio program za emitovanje TV programa za TV Metropolis pre 4-5 godina i imao sam istih problema. Cak ako pokusas da mesas video fajlove razlicitih rezolucija i u razlicitom framerate-u problemi se samo gomilaju.
Ja sam napravio moj video renderer koji prhivata frejmove sa decodera i gura ih u OpenGL texturu. OpenGL engine u zavisnosti od jacine procesora ispod moze da prihvati nekoliko video streamova u istom trenutku i da ih kombinuje (comositing). Iscrtavanje texta i grafike kroz OpenGL je piece-of-cake.
Ako ikako mozes.. bezi sto dalje od DirecShow-a. To je najgore napisana biblioteka na ovoj planeti. Npr.. ako zelis da napravis crossfade videa, nikada nisi siguran da li ce video2 krenuti u trenutku u kome zelis. U svakom decoding graphu se nalazi nekoliko threadova i u zavisnosti od opterecenja OS-a pokretanje te masinerije nije uvek u zeljenom trenutku. Kod crossfade-a se to ne primecuje puno, ali ako pravis cut montazu upadanje crnih frejmova je bas vidljivo.

Ako zelis potpunu kontrolu nad dekodovanjem i A/V sinhronizacijom koristi libAVCodec i libAVFormat, koji su nastali iz MPlayer-a.
 
Nazad
Vrh Dno