bambius Posted October 31, 2008 Posted October 31, 2008 Ich würde gern ein Script schreiben, welches am Ende eines abgespielten Videos aufgerufen wird (oder wenn man das Video stoppt) und das OSD MyVideos aufruft. Kenne mich allerdings mit COM-Sachen nicht aus. Ist das überhaupt zu verwirklichen und wenn ja, hat wer einen Anhaltspunkt für mich? Quote
Tjod Posted October 31, 2008 Posted October 31, 2008 Meines wissen gibt es bisher keinen Script der automatisch am Anfang und/oder Ende einer Datei Wiedergabe aufgerufen wird. Aber das ist vielleicht keine schlechte Idee, ich verschiebe das mal nach Vorschläge & Ideen. Quote
Tjod Posted October 31, 2008 Posted October 31, 2008 (edited) Kommando teilweise zurück bei der Wiedergabe über playlist wird bei jedem Start eines neuen Titels immer playlist.vbs aufgerufen. playlist.vbs sub main(filename) osd.showInfoinTVpic "playlist.vbs > " & filename,1000 end sub Aber z.B. bei der Wiedergabe von aufnahmen hilft das nur bedingt. Edited October 31, 2008 by Tjod Quote
Moses Posted October 31, 2008 Posted October 31, 2008 Das mit dem Ende einer Wiedergabe ist nicht so einfach... im Moment löst der DVBViewer dafür kein Ereigniss aus, auch nicht über die COM Schnittstelle. Also müsstest du was basteln, was ständig guckt, ob noch irgendwas wiedergegeben wird, oder nicht usw... das ist auch nicht so richtig einfach, weil am Ende der Wiedergabe das letzte Bild weiter angezeigt wird und die ganzen Statusinformationen des DVBViewers (als alles, was man aus der COM Schnittstelle so rausbekommt) noch behauptet, dass er was wiedergibt. Es scheint also im DVBViewer nirgendwo eine Erkennung eingebaut zu sein, dass eine Wiedergabe tatsächlich "vorbei" ist. Wenn man sich überlegt, was passieren soll, wenn man z.B. bei Timeshift bis zur aktuellen Zeit springt, ist das auch nicht ganz unsinnig so... Für den geneigten Plugin-Programmierer stellt sich also eine gewisse Herausforderung, das Ende einer Wiedergabe zuverlässig zu erkennen. Ich hab das mal probiert, indem ich einfach immer die aktuelle Wiedergabezeit und die Länge der Mediendatei miteinander verglichen hab. Da gibt's allerdings auch ein paar Fallstricke: 1. der DVBViewer belässt, wenn er "fertig" ist, die Zeitanzeige gerne mal ein paar Sekunden (meistens eine) vor der erwarteten Zeit, man denkt dann also, dass er noch eine Sekunde abspielen würde, das passiert aber nie (kann man übrigens auch im OSD sehen) 2. Wenn in einer Aufnahme was an den PCR Paketen kaputt gegangen ist, kommt es schonmal vor, dass als Timecode immer nur 0 angezeigt wird (normalerweise funktioniert da dann auch das Springen in der Datei nicht). Wenn du das wirklich versuchen willst, solltest du dir das ganze unbedingt mal mit dem dvbspy angucken. Da siehst du alles, worauf du mit dem COM Interface drauf zugreifen kannst. Dass ich das ganze ausprobiert hab, ist fast schon ein Jahr her. Aber soweit ich die Entwicklung des DVBViewer überblickt hab (und im Kopf hab ), hat sich an der Situation nichts grundlegendes verändert. Quote
bambius Posted November 5, 2008 Author Posted November 5, 2008 Danke für die Antworten. @Tjod: Das geht aber leider nur bei der Playlist. Leider hab ich es bisher nicht geschaft, meine Aufnahmen (.ts) über die Playlist abzuspielen. @Moses: Also doch über Plugin. Mal schauen ob ich da was hin kriege. Du hast geschrieben, das Du vor nem Jahr sowas mal probiert hast, hast Du die Sourcen dazu noch und sind diese zufällig in VB(.net) geschrieben? Quote
Moses Posted November 5, 2008 Posted November 5, 2008 (edited) Ja, hab die Sourcen noch. Sind allerdings in J# geschrieben... das Java mit Benutzung des .NET Frameworks und braucht auch irgendwelche Redistributables (J#, glaub ich und .NET wahrscheinlich auch). Ist allerdings schon lang nicht mehr getestet und hat glaub ich auch nicht 100%ig funktioniert, wegen den Problemen, die ich angesprochen hab... macht aber auch nix kompliziertes, eigentlich. Vielleicht kannst du es ein wenig verwenden... die Aufrufe an die COM Schnittstelle sind in allen Sprachen sehr ähnlich. Ich hab einfach das komplette Visual Studio 2005 Projekt hoch geladen. Der relevante Code steht in "frmMain.jsl" in der Funktion "onPlaybackEnd"... so wie das da steht, funktioniert das nicht immer... der auskommentierte Teil (also nach dem /*) sollte sich um den Fall kümmern, dass der DVBViewer mit der currentplaytime kurz vor dem Ende stehen bleibt und so currentplaytime niemals gleich der duration ist. Hat aber wohl nicht funktioniert (daher auskommentiert)... war halt alles nur ein Test und die ersten Gehversuche mit dem COM Interface.. Mir fällt grad auf, dass es eigentlich viel einfacher wäre jede Sekunde (oder besser 1.2 Sekunden oder so) zu gucken, ob die currentplaytime sich verändert hat, und falls nicht, davon auszugehen, dass die Wiedergabe fertig ist... DVBViewerEndPlayback.zip Edited November 5, 2008 by Moses Quote
bambius Posted November 5, 2008 Author Posted November 5, 2008 Super, herzlichen Dank. Werds mir mal anschauen und dann gucken, ob ich irgendwas brauchbares zustande bringe Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.