Forum » Programiranje » video v c#
video v c#
majal ::
Hoj!
Pomoč potrebujem. Sem popolnoma sveža v c# in sem prišla do problema pri predvajanju avi datoteke.
V kodi imam zapisano:
Microsoft.DirectX.AudioVideoPlayback.Video video1 = new Microsoft.DirectX.AudioVideoPlayback.Video("c:\\Film.avi");
video1.Play();
...in kot posledico mi javi napako:
Error in the application.
-2147467262E_NOINTERFACE
Okoli tega kvačkam že dva dni, pa nič pametnega ne uspem naumit.
LP, maja
Pomoč potrebujem. Sem popolnoma sveža v c# in sem prišla do problema pri predvajanju avi datoteke.
V kodi imam zapisano:
Microsoft.DirectX.AudioVideoPlayback.Video video1 = new Microsoft.DirectX.AudioVideoPlayback.Video("c:\\Film.avi");
video1.Play();
...in kot posledico mi javi napako:
Error in the application.
-2147467262E_NOINTERFACE
Okoli tega kvačkam že dva dni, pa nič pametnega ne uspem naumit.
LP, maja
majal ::
Še eno vprašanje. Če je kdo to že počel, da ne bom spet odkrivala tople vode, pa nič odkrila.
Rada bi, da se mi film odvrti točno na določeni poziciji na ekranu in s točno določenimi dimenzijami (širina, višina). Kako?
lp, maja
Rada bi, da se mi film odvrti točno na določeni poziciji na ekranu in s točno določenimi dimenzijami (širina, višina). Kako?
lp, maja
darkolord ::
Bu,
video.Owner property lahko nastaviš na control (forma, picturebox, panel, ...), v katerem se bo video predvajal (in ga lahko potem ločeno pozicioniraš).
Velikost pa nastaviš z video.Size
video.Owner property lahko nastaviš na control (forma, picturebox, panel, ...), v katerem se bo video predvajal (in ga lahko potem ločeno pozicioniraš).
Velikost pa nastaviš z video.Size
Templater ::
Pozdrav! Uporabljam Visual C# in mi ob vnosu kode javi sledečo napako:
Error 1 The type or namespace name 'DirectX' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) C:\Documents and Settings\Moje_ime\Local Settings\Application Data\Temporary Projects\NIF Previewer\Form1.cs 21 23 Program
Očitno je napaka povezana z DirectX?
Z C# nimam ravno najbolj blage veze, saj po navadi programiram v C++ ali v Visual Basic-u, zato se zahvaljujem za odgovor.
Error 1 The type or namespace name 'DirectX' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) C:\Documents and Settings\Moje_ime\Local Settings\Application Data\Temporary Projects\NIF Previewer\Form1.cs 21 23 Program
Očitno je napaka povezana z DirectX?
Z C# nimam ravno najbolj blage veze, saj po navadi programiram v C++ ali v Visual Basic-u, zato se zahvaljujem za odgovor.
Templater ::
Že, že, samo kako to naredim? Saj vem, da imam čudna vprašanja, ampak, kot sem rekel, pri C#-ju res nimam najbolj blagih vez, ker ga uporabljam zelo malo časa.
LP
LP
majal ::
A obstaja ukaz v c# s katerim lahko začnem predvajati film na točno določenem mestu in ga nato na določenem mestu tudi ustavim?
LP, maja
LP, maja
majal ::
Sem že nekaj delala s tema dvema ukazoma, pa mi ne dela.
A če napišem tako:
Film.SeekCurrentPosition(20 * 10000000, SeekPositionFlags.AbsolutePositioning);
Film.Play();
Bi mi moralo začeti Film predvajati v 20 sekundi?
A če napišem tako:
Film.SeekCurrentPosition(20 * 10000000, SeekPositionFlags.AbsolutePositioning);
Film.Play();
Bi mi moralo začeti Film predvajati v 20 sekundi?
majal ::
Ne. Sedaj vsaj vem, da je ukaz pravi. A mi morda ne dela, ker ukaza ne uporabim direktno na filmu, temveč na funkciji, ki vrne film?
Film("Video.avi",sirina,visina,xkoordinata,ykoordinata).SeekCurrentPosition(20 * 10000000, SeekPositionFlags.AbsolutePositioning);
Film("Video.avi",sirina,visina,xkoordinata,ykoordinata).Play();
Film("Video.avi",sirina,visina,xkoordinata,ykoordinata).SeekCurrentPosition(20 * 10000000, SeekPositionFlags.AbsolutePositioning);
Film("Video.avi",sirina,visina,xkoordinata,ykoordinata).Play();
kranjcb ::
Lahko namesto DirectX uporabljaš tudi WPF aplikacijo in MediaElemet.
Rabiš pa .NET framework 3.0 in Windows Media Player 10 (ali več).
Drgač je Microsoft.DirectX.AudioVideoPlayback.Video kr dost okleščena zadeva.
Rabiš pa .NET framework 3.0 in Windows Media Player 10 (ali več).
Drgač je Microsoft.DirectX.AudioVideoPlayback.Video kr dost okleščena zadeva.
darkolord ::
Če ti funkcija vrne vedno prav ISTI objekt, potem je OK - če ne, ga daj v eno spremenljivko in potem tistega štelaj:
Video film = Film("Video.avi",sirina,visina,xkoordinata,ykoordinata);
film.SeekCurrentPosition(20 * 10000000, SeekPositionFlags.AbsolutePositioning);
film.Play();
Če to ne dela, poskusi še najprej Play, pa potem spreminjat pozicijo
Video film = Film("Video.avi",sirina,visina,xkoordinata,ykoordinata);
film.SeekCurrentPosition(20 * 10000000, SeekPositionFlags.AbsolutePositioning);
film.Play();
Če to ne dela, poskusi še najprej Play, pa potem spreminjat pozicijo
majal ::
Ja. Če mi ne bo uspelo z Microsoft.DirectX.AudioVideoPlayback.Video, bom pa poskušala še s tem.
Ja pa res, da potrebujem zelo malo (no, relativno malo). Rada bi, da mi film zavrti na točno določenem mestu na zaslonu (xkoordinata in ykoordinata) s točno dločenima dimenzijama (sirina in dolzina). Rada pa bi še film začela in končala na določeni časovni točki.
Pri tem gledalcu ni prepuščeno nič določanja. Vse te zadeve določi program.
No in zataknilo se mi je pri tem, kje začne in konča predvajati film (časovno).
Bom poskušala pozicijo kjer film začne in konča dodati kot argument funkcije. Bom poročala, kaj se bo izcimilo.
Lp, maja
Ja pa res, da potrebujem zelo malo (no, relativno malo). Rada bi, da mi film zavrti na točno določenem mestu na zaslonu (xkoordinata in ykoordinata) s točno dločenima dimenzijama (sirina in dolzina). Rada pa bi še film začela in končala na določeni časovni točki.
Pri tem gledalcu ni prepuščeno nič določanja. Vse te zadeve določi program.
No in zataknilo se mi je pri tem, kje začne in konča predvajati film (časovno).
Bom poskušala pozicijo kjer film začne in konča dodati kot argument funkcije. Bom poročala, kaj se bo izcimilo.
Lp, maja
kranjcb ::
Imaš pa tudi varjanto dodat Windows Media Player komponento v ta tvoj program in poganjat filme preko te komponente. S tem da pri tej varjanti ni treba imet DirectX inštaliran.
majal ::
Ja. To bo to.
darklord, najlepša hvala za pomoč.
Sem se potem kar odločila, da določim, kje začne in konča predvajati film, kar znotraj funkcije.
kranjcb, tudi tebi hvala za nasvet. Ko Microsoft.DirectX.AudioVideoPlayback.Video ne bo več "zadovoljeval mojih potreb" bom prešaltala na WPF aplikacijo in MediaElemet.
lp, maja
darklord, najlepša hvala za pomoč.
Sem se potem kar odločila, da določim, kje začne in konča predvajati film, kar znotraj funkcije.
kranjcb, tudi tebi hvala za nasvet. Ko Microsoft.DirectX.AudioVideoPlayback.Video ne bo več "zadovoljeval mojih potreb" bom prešaltala na WPF aplikacijo in MediaElemet.
lp, maja
majal ::
Evo. Sem se odločila, da res ne bom uporabila Microsoft.DirectX.AudioVideoPlayback.Video. Saj je vse delalo, samo se mi zdi zadeva s pomočjo MCI sendstring bistveno bolj elegantna. Spodaj sem objavila še kodo. Sedaj moram rešiti samo še problem, kako zarotirati film za 90 stopinj. Upam, da bo delovalo samo z zasukanjem pictureBox. Če ima pa kdo kakšno idejo, je dobrodošla.
lp, maja
lp, maja
void Film(string film, int sirina, int visina, int xkor, int ykor, int zacetek, int konec) { string sCommand; System.Windows.Forms.PictureBox videobox = pictureBox1; pictureBox1.Width = sirina; pictureBox1.Height = visina; pictureBox1.Location = new Point(xkor, ykor); sCommand = "open " + film + " type AVIvideo alias MediaFile style child parent " + videobox.Handle.ToInt32(); mciSendString(sCommand, null, 0, IntPtr.Zero); sCommand = "put MediaFile window at 0 0 " + videobox.Width + " " + videobox.Height; mciSendString(sCommand, null, 0, IntPtr.Zero); sCommand = "Set MediaFile time format milliseconds"; mciSendString(sCommand, null, 0, IntPtr.Zero); sCommand = "Play MediaFile from " + zacetek.ToString() + " to " + konec.ToString(); mciSendString(sCommand, null, 0, IntPtr.Zero); pictureBox1.Show(); tmr4.Interval = (konec - zacetek); tmr4.Start(); tmr4.Tick += new EventHandler(Timer_Tick4); } private void Timer_Tick4(object sender, EventArgs eArgs) // da skrije pictureBox in ugasne film po koncu predvajanja { sCommand = "close Mediafile"; mciSendString(sCommand, null, 0, IntPtr.Zero); pictureBox1.Hide(); tmr4.Stop(); }
Zgodovina sprememb…
- spremenil: Senitel ()
majal ::
Da še tu napišem svoje ugotovitve. Morda komu prav pridejo.
PictureBoxa se ne da zarotirat. Sem ugotovila, da bi za to morala uporabiti WPF aplikacijo, kot jo je predlagal kranjcb. Ampak saj ni tako nujno potrebno, tako da bom ostala pri MCI sendstring.
Pa še to. Da bo zgornja koda delovala, je treba dodati še:
using System.Runtime.InteropServices;
in
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
LP, maja
PictureBoxa se ne da zarotirat. Sem ugotovila, da bi za to morala uporabiti WPF aplikacijo, kot jo je predlagal kranjcb. Ampak saj ni tako nujno potrebno, tako da bom ostala pri MCI sendstring.
Pa še to. Da bo zgornja koda delovala, je treba dodati še:
using System.Runtime.InteropServices;
in
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
LP, maja
boss-tech ::
Ko sem začel dela s Silverlight, sem videl kako lahko enostavno delaš nore reči :D ki si jih prej v navadnih projektih nisi mogel niti zamišljati... priporočam da si malo pogledate stvar
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Prehajanje na low levelOddelek: Programiranje | 1312 (1068) | krneki0001 |
» | [c#] ukaz radirkaOddelek: Programiranje | 1109 (902) | japol |
» | [c#] picturebox, slika na slikoOddelek: Programiranje | 1084 (894) | japol |
» | C# metodaOddelek: Programiranje | 1959 (1830) | davaman |
» | Vb6Oddelek: Programiranje | 1326 (1189) | StratOS |