AVI a PictureBox   otázka

VB.NET, DirectX, WinForms

Dobrý den.

Prosím o radu, jak nejjednodušeji přehrát Avi soubor v PictureBoxu.

Na internetu jsem našel např. toto:

Imports Microsoft.DirectX
Imports Microsoft.DirectX.AudioVideoPlayback
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Videodatei As Video = New Video("C:\16.avi", False)
        Videodatei.Owner = PictureBox1
        Videodatei.Owner.AutoSize = True
        Videodatei.Play()
    End Sub
End Class

Bohužel "to" ale nějak nefunguje. Spuštění proběhne bez chybové hlášky, ale PictureBox zůstane prázdný. Poku např. tento kód vložím k do události Click tlačítka, tak to zase hned po spuštění přeruší s hláškou: "FileLoadException was Unhandled".

Jak tedy na to?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jde ten soubor přehrát v programu Windows Media Player nebo jiném, DirectShow využívajícím přehrávači?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, jde. Zkoušel jsem více Avi souborů, ale se stejným výsledkem...

Nemůže to být třeba tím, že mám špatně nastavenou nějakou vlastnost toho PictureBoxu? Sám jsem ale nic nenastavoval, při vytváření PictureBoxu jsem nechal defaultní vlastnosti.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím,

použijte Try Catch blok pro zachycení vyjímky.

    Private Videodatei As Video

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Try
            Me.Videodatei = New Video("C:\16.avi", False)
            Me.Videodatei.Owner = PictureBox1
            Me.Videodatei.Owner.AutoSize = True
            Me.Videodatei.Play()

        Catch dex As DirectXException
            MessageBox.Show("Chyba - " & dex.ErrorString, "Chyba")
        Catch ex As Exception
            MessageBox.Show("Chyba - " & ex.Message, "Chyba")
        End Try
    End Sub

Pokud je chyba typu "E_NOINTERFACE", je to problém kodeku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak bohužel, ani tudy asi cesta nevede.

Pokud použiji ten Váš kód, tak to skončí stejnou chybovou hláškou, o jaké jsem již psal("FileLoadException was Unhandled").

Po stisknutí Button1 program okamžitě skončí (s onou chybou), k "MessageBox.Show..." vůbec nedojde.

Tady je kopie obrazovky, jak to dopadne po stisku tlačítka:

http://bilek.astronomy.cz/astroforum/Cap...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha, tak to musíte zkompilovat pod nižší verzí .NET Fameworku.

Vlastnosti projektu -> záložka "Compile" -> kliknout dole na tlačítko "Advanced Compile Options" -> zobrazí se okno kde vyberte z nabídky "Target framework" nižší verzi než ".NET Framework 4", třeba ".NET Framework 2.0".

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No jasně, vždyť je to tam napsané :) .

Jsem to ale hlava dubová.

Dík za nakopnutí. Už to šlape...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, tak předčasná radost.

Ono to sice funguje, pokud tento kód použiju v pokusném projektu, kde nic jiného není, ale pokud to chci zakomponovat do mého rozsáhlejšího projektu a ten zkompiluji např. pod FW 2.0 (zkoušel jsem i jiné), tak se zase ten FW 2.0 nelíbí tomu mému projektu.

Takže zase na začátek.

Jak jednoduše přehrát Avi soubor v PictureBoxu pod FW 4.0?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nechápu proč by to nemělo fungovat ve 4.0 a ve 2.0 ano. V nejhorším případě je možné vytvořit 2.0 ovládací prvek a ten použít ve 4.0 projektu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím,

ještě je tu další možnost kompilace. Do projektu přidejte App.config (pokud tam již není). A v sekci "configuration" přidedte nebo nastavte

  <startup useLegacyV2RuntimeActivationPolicy="true">
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takto to tam již mám...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback