Seite 1 von 1

MovieBefehle / Library

Verfasst: 19.07.2006 20:32
von a14xerus
Hi Leute, ich bräuchte mal eine Library, eine *.pb(i) zum includen, eine dll oder ähnliches mit Moviebefehlen.
Sagt mir jetzt nich.. ja nehm doch
loadmovie() oder playmovie() ...
ich weiß selber das PB movie befehle hat.. aber die sind eher für mgp und avi... mp3 geht damit auch nicht so gut (in verbindung mit frames und so...)

ich habe über die hilfe schon ein paar sachen gefunden, wie zum beispiel "fmod.dll" , aber nie zusammenhängend eine Lib und eine Documentation dazu....
[edit]zu fmod.dll habe ich jetzt die doc gefunden[/edit]

Vorallem will ich am besten unabhängig von den installierten codecs sein.. soweit es geht.. und möglichst viele sound und movie dateien abspielen können

danke im voraus

PS.: wenn ihr wollt reicht auch link zu nem thread.. aber über antworten würde ich mich schon freuen

Verfasst: 19.07.2006 20:34
von Alves
Also die Moviebefehle sind doch sehr gut...

Mp3 gehen auch sehr gut bei mir...


Und die Library kommt sogar mit 6 GB AVIs sehr gut klar.

:?

Verfasst: 19.07.2006 20:37
von a14xerus
ja ich will heri auch nicht drüber philosophieren wie gut die befehle sind.. aber trotzdem möchte cih gerne eine alternative

PS: ich meinte, das die movie befehle am besten mit mpg und avi zurecht kommen

Verfasst: 20.07.2006 00:43
von inc.
ich weiß selber das PB movie befehle hat.. aber die sind eher für mgp und avi... mp3 geht damit auch nicht so gut (in verbindung mit frames und so...)
? Die PB Movielibrary nutzt die normale Directshow Systemroutinen via ->Renderfile(). Damits mit mp3s klappt, musst du das Movieobject dazu zwingen den timer in "Zeit" und nicht in "Frames" zu arbeiten:

Code: Alles auswählen

Structure PB_StructureMedia
  Media.IGraphBuilder
  MediaControl.IMediaControl
  MediaEvent.IMediaEventEx
  Window.IVideoWindow
  Audio.IBasicAudio
  Video.IBasicVideo
  MediaSeeking.IMediaSeeking
  state.l
EndStructure

InitMovie()

*p.PB_StructureMedia = LoadMovie(No, szPath)
If *p
  *p\MediaSeeking\SetTimeFormat(?TIME_FORMAT_MEDIA_TIME)
EndIf 

DataSection ;{
  TIME_FORMAT_MEDIA_TIME:
  Data.l $7B785574
  Data.w $8C82, $11CF
  Data.b $BC, $0C, $00, $AA, $00, $AC, $74, $F6
EndDataSection ;}
Musst nur aufpassen, die Zeit/Länge ist jetzt glaube ich in Nanosekunden gemessen oder gar noch hochaufgelöster, das musst du in den Routinen sodann mit einkalkulieren.
Die aktuelle Zeit entnimmst du dann via

Code: Alles auswählen

*p\MediaSeeking\GetCurrentPosition(@pos.q)
Die Movie bzw. Dshow Routinen splitten und dekodieren alles, was als Filter im System registriert ist, also Avi, mpeg, mpeg2, mp4, aac, ac3 etc etc etc etc etc.

Ansonsten mit MCI, Libavcodec (viel Spass) oder Fmod etc. fummeln.

Verfasst: 20.07.2006 10:53
von Sven
Interessant! Woher weiss man sowas? Kann man damit auch MovieVolume, MovieSeek und MovieState ersetzen, während das Movie auf ein Sprite gerendert wird. Dann funktionieren die nämlich nicht...

Sven

Verfasst: 20.07.2006 11:13
von inc.
Sven hat geschrieben:Interessant! Woher weiss man sowas? Kann man damit auch MovieVolume, MovieSeek und MovieState ersetzen
Ja:
Audio: http://msdn.microsoft.com/library/defau ... erface.asp
Seeking: http://msdn.microsoft.com/library/defau ... erface.asp
, während das Movie auf ein Sprite gerendert wird. Dann funktionieren die nämlich nicht...
Wie du oben in der PB Struktur sehen kannst, sind alle benötigten Interfaces integriert, so z.B. auch das IBasicVideo Interface, elches z.Bdie Methode "GetCurrentImage(...)" enthält : http://msdn.microsoft.com/library/defau ... erface.asp
Musst nur noch gucken, wie du es auf ein Sprite renderst. Das geht dann wohl viell. mit DirectDraw... Musst mal schauen.

Verfasst: 20.07.2006 19:54
von a14xerus
ui.... ich bin anfänger^^
trotzdem danke :allright: