Jump to content

Script für Video-Ende


bambius

Recommended Posts

Posted

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?

Posted

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.

Posted (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 by Tjod
Posted

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.

Posted

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? :blink:

Posted (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.. :blink:

 

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 by Moses
Posted

Super, herzlichen Dank. Werds mir mal anschauen und dann gucken, ob ich irgendwas brauchbares zustande bringe :blink:

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...