Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

AVI in ogl-Fenster

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 03.11.2007, 14:53    Titel: AVI in ogl-Fenster Antworten mit Zitat

Hallöchen,
joa ich hab so ein Problem mit dem Code hier:
Code:

#Include Once "windows.bi"
#include Once "GL/gl.bi"
#include Once "GL/glu.bi"

Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (Byval lpstrCommand As String, Byval lpstrReturnString As String, Byval uReturnLength As Long, Byval hwndCallback As Long) As Long


Sub AVI_Open(Byval sFile As String, ByVal fenstertitel As String, ByVal aliasname As String = "myavi")
    Dim sBuffer As String * 256
    Dim nResult As Long
    nResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
    sFile = Left(sBuffer, nResult)
    mciSendString "open " + sFile + " type avivideo alias "+ aliasname, 0, 0, 0
   Dim ret As Long
   ret = FindWindow(0, fenstertitel)
    mciSendString "window "+ aliasname+ " handle " & ret, 0, 0, 0
End Sub

Sub AVI_Play(byVal aliasname As String = "myavi")
    mciSendString "play "+aliasname+" from 0", 0, 0, 0
End Sub

Sub AVI_Stop(byVal aliasname As String = "myavi")
    mciSendString "close "+ aliasname, 0, 0, 0
End Sub

Sub AVI_Close(byVal aliasname As String = "myavi")
    mciSendString "close "+ aliasname, 0, 0, 0
End Sub

Sub LoadAvi(sFile As String, byval fenstertitel As String,byval aliasname as string = "myavi")
    AVI_Open(sFile, fenstertitel,aliasname)
    AVI_Play(aliasname)
End Sub
 
Sub StopAvi(byVal aliasname As String = "myavi")
    AVI_Stop(aliasname)
    AVI_Close(aliasname)
End Sub

screen 18,32,,2
WindowTitle "Test1"
LoadAvi("avi1.avi,"Test1")
sleep
StopAvi
End

Also der Code funktioniert bei mir erstmal nicht, aber wenn man das Video in einem nicht-ogl-Fenster abspielen lässt etwa
Code:
screenres 640,480,32
dann funktioniert das bis auf ein bisschen Flackern recht gut. Wieso geht das im ogl-Fenster nicht? was mache ich falsch.

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.11.2007, 15:04    Titel: Antworten mit Zitat

Ich nehme an, du hast den Code aus diesem Thread verwendet?

Das Video dürfte dann doch eigentlich in einer ImageBox abgespielt werden (=Seperates Fenster)?
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 03.11.2007, 15:09    Titel: Antworten mit Zitat

Ja ich hab das mal irgendwo ausgegraben. Aber ich hab da was geändert:
Code:

Dim ret As Long
ret = FindWindow(0, fenstertitel)

Man muss, wohlgemerkt, den Namen des Fensters in dem man das Video haben will an die Sub übergeben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.11.2007, 12:29    Titel: Antworten mit Zitat

zeigt das AVI tatsächlich im Fenster an, leider ohne Ton?
und hängt sich dann am Ende auf weinen
(Win ME, FB 0.18.2)
Code:
#INCLUDE ONCE "windows.bi"
#Include Once "win/mmsystem.bi"
'#INCLUDE ONCE "GL/gl.bi"
'#INCLUDE ONCE "GL/glu.bi"

SUB AVI_Open(BYVAL sFile AS STRING, BYVAL fenstertitel AS STRING, BYVAL aliasname AS STRING = "myavi")
    mciSendString "open " & Chr(34) & sFile & Chr(34) & "type AVIVideo alias " & aliasname , NULL, 0, 0
   DIM AS HWND hwnd = FindWindow(0, fenstertitel)
    mciSendString "window "& aliasname & " handle " & hwnd, NULL, 0, 0
END SUB
...
...

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 04.11.2007, 13:20    Titel: Antworten mit Zitat

volta hat Folgendes geschrieben:

und hängt sich dann am Ende auf weinen
(Win ME, FB 0.18.2)

Ja aber auch nur im ogl-Fenster oder? Beim "standart" Freebasic-Screen aber nich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 05.11.2007, 12:38    Titel: Antworten mit Zitat

nein, leider auch im normalen fbgfx-Fenster missbilligen
irgendetwas fehlt da noch???

EDIT/
So, ich habe den Fehler gefunden grinsen
Das flimmern des Bildes (auch im OGL-Fenster) wird durch die Bildwiederholung erzeugt. Wird mit Screenlock das neu-zeichnen des Fensters verhindert zeigt sich der AVI-Datenstrom ohne flimmern.
Code:
#Include Once "windows.bi"
#Include Once "win/mmsystem.bi"

Sub AVI_to_FBgfx( ByVal sFile As String, ByVal fenstertitel As String,_
                   ByVal aliasname As String = "myavi")
   Dim  As HWND hwnd = FindWindow(0, fenstertitel)
   mciSendString( "open " & Chr(34) & sFile & Chr(34) & " type AVIVideo alias " & aliasname &_
                  " parent " & hwnd & " style " & WS_CHILD, NULL, 0, 0 )
   mciSendString( "put " & aliasname & " window at 100 100 200 150", NULL, 0, 0 )
   ScreenLock
   mciSendString( "play "& aliasname & " wait", NULL, 0, 0 )
   ScreenUnLock
   mciSendString( "close "& aliasname, NULL, 0, 0 )
End Sub

Screen 18,32
Dim As String titel = "Test1"
WindowTitle titel
AVI_to_FBgfx( "AVITest.avi",titel )

Sleep
End
Das AVI lässt sich hier nicht vorzeitig stoppen.
Man kann in der Zwischenzeit nicht auf dem Screen arbeiten.
Alles erstmal nur unter ME und FB 018.2 getestet.

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 05.11.2007, 18:29    Titel: Antworten mit Zitat

Mit Screenlock hat das ja jetzt mal ziemlich gut geklappt auch im OGL-Fenster. Der Code den du geschrieben hast, hat das Gute, dass sich das Video skalieren und positionieren lässt, dennoch stürzt es bei mir nach ein einiger Zeit ab und öffnet mache AVIs nicht. weinen
Aber sonst ganz oke.

MfG Caran

[Edit:]
Nee der Code geht doch^^, das lag anscheinend nur am Format in dem die Videos vorlagen. Naja dann bedank ich mich mal für die hilfe.

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 01.05.2013, 12:06    Titel: Antworten mit Zitat

sorry für das ausgraben des alten beitrags

ich such nach einem weg ein video in welchem format auch immer in einem fb prog abzuspielen.

bin nun auf diesen Thread gestoßen leider spielt der code bei mir gar nichts.

hab ein 28sek. mp4 video von yt mit xmedia recode in avi umgewandelt
1. video codec auswahl xvid alles andere so gelassen - nach 2 sek. kann ich ich das schwarze fenster mit tastendruck schließen

2. video codec divx - selbes ergebnis

3. avi format mit mpeg2 codec (nur zum testen der ordnerangabe) - ging natürlich auch nicht aber wenigstens kam eine fehlermeldung bei der erkannt wurde das es ein mpeg2 code war

System = win 7
FB = 0.24
code der letzte der hier von Volta gepostet wurde

mich würde ja noch die vlclib die bei fb 0.24 mit bei ist interessieren nur leider kann ich nichts finden wie sie angewendet wird
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 01.05.2013, 19:58    Titel: Antworten mit Zitat

Hi,
nach einigem experimentieren kam wenigstens ein AVI-Player dabei heraus (Win7 und FB 0.24).
Andere Formate (z.B. WMV) funktionieren nur teilweise (MP4 garnicht).
Code:
#Include Once "windows.bi"
#Include Once "win/mmsystem.bi"

Sub AVI_to_FBgfx(sFile As String, aliasname As String = "myavi")
  Dim As HWND hwnd
  ScreenControl(2, Cast(Integer, hwnd)) 'GET_WINDOW_HANDLE
  If mciSendString("open " & sFile & " type AVIVideo alias " & aliasname &_
    " parent " & hwnd & " style " & WS_CHILD, 0, 0, 0) = 0 Then
    mciSendString("put " & aliasname & " window at 20 20 600 440", 0, 0, 0)
    Sleep 200,1 'ohne diese Verzögerung bricht das Video vorzeitig ab
    ScreenLock  'erlaubt eine flimmerfreie Ansicht
    mciSendString("play "& aliasname & " wait", 0, 0, 0)
    ScreenUnlock
    mciSendString("close "& aliasname, 0, 0, 0)
  EndIf
End Sub

ScreenRes 640,480,32
AVI_to_FBgfx("join.avi")
Sleep 5000
Die Video-Daten sind aus dem Windows-Verzeichnis, lassen sich aber nicht über die Pfadangabe ansprechen verwundert
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 03.05.2013, 00:15    Titel: Antworten mit Zitat

vielen dank für deine mühe. doch leider leider läuft bei mir nichts verwundert

deshalb frag ich jetzt nochmal ganz doof mit
Zitat:
Die Video-Daten sind aus dem Windows-Verzeichnis, ...


meinst du das die Avi datei in den Windows Ordner muss?

welche Eigenschaften hat dein Avi, vllt hab ich den falschen Codec gewählt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 03.05.2013, 09:39    Titel: Antworten mit Zitat

Hi,
nach AVI-Daten habe ich auf meinem PC gesucht und unter
C:\Windows\winsxs\x86_microsoft-windows-tabletpc-inputpanel_31bf3856ad364e35_6.1.7600.16385_none_11656be9d8d5e28f\join.avi
dieses Video gefunden. Leider wird es mit dieser Pfadangabe nicht abgespielt.
Also habe ich 'join.avi' in mein Arbeitsverzeichnis kopiert.
Einen besonderen 'Codec' brauchst du nicht, da in MCI 'type AVIVideo' angegeben wird.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 03.05.2013, 19:18    Titel: Antworten mit Zitat

OK. Also im Arbeitsverzeichnis hatte ich mein AVI auch. Hab es jetzt mit dem Join Video aus dem Win-verzeichnis probiert - DAS GEHT ?!

hab jetzt die eigenschaften verglichen

Code:
mein.avi / Join.avi
28   /  10   sekunden
320  / 165   breit
240  /  97   hoch
2000 / 373   Datenrate
2128 / 373   Gesamtbitrate
25   /  33   bilder/sekunde

128  / ----    bitrate
2    / ----    kanäle
44   / ----    abtastrate

2.02MB / 217 KB


kann es sein das die Datenrate oder die Bitrate bei mir zu hoch ist
oder geht es nicht wenn eine Audiospur mit bei ist?

werd mein video nochmal bearbeiten.

EDIT: hab jetzt diverse Codecs und einstellungen versucht ich bekomme kein erstelltes avi zum laufen - es geht nur das join.avi
hab noch herausgefunden das das join.avi den MS RLE Codec hat - kann aber auch kein konverter finden der ein avi mit diesem format erstellen kann

hat noch jemand ne idee? komm da noch mal auf die vlclib zurück die in FB 0.24 enthalten ist - weiß da jemand wie man diese benutzt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 04.05.2013, 10:40    Titel: Antworten mit Zitat

Hi,
mit Videoformaten habe ich keine Erfahrung und kann dir da nicht helfen.
Zu libvlc hab ich einige Links,

Homepage: http://www.videolan.org/

Tutorials: http://wiki.videolan.org/LibVLC_Tutorial_086c

SDL Beispiel: http://wiki.videolan.org/LibVLC_SampleCode_SDL
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz