Seite 1 von 1

[gelöst] Videosequenzen aus LibreOffice heraus per Makro aufrufen

Verfasst: Do 21. Mär 2024, 13:11
von jande
Hallo,

ich versuche, in LibreOffice Writer eine Liste von Stichworten zu erstellen, die jeweils eine bestimmte Sequenz aus einer Vielzahl von lokal gespeicherten Videos aufruft. Konkret geht es um Umbauvideos für Modellbahnen, die je für mich relevante Stellen enthalten, die ich thematisch gliedern möchte (z.B. verschiedene Arten, das Motorschild massefrei zu machen, gebrochene Gehäuse zu spachteln etc...).

Meine Idee war, nach einer thematischen Gliederung einen Hyperlink oder eine Schaltfläche drücken zu können, der/die dann das entsprechende Video in VLC an der entsprechenden Stelle aufruft und nur bis zu einem bestimmten Punkt abspielt. Den entsprechenden Shellbefehl stellt VLC unter Linux mit

Code: Alles auswählen

vlc filename.mp4 --start-time=81.4 --stop-time=90.0
zur Verfügung.

Ich habe nun folgendes Makro geschrieben, in dem ich den Dateinamen, die Start- und die Stopzeit als Parameter übergeben wollte:

Code: Alles auswählen

Sub OpenFileInVLC
startTime = 81.4
stopTime=90
fileName =  "'/path.../filename.mp4'"

If IsMissing(startTime) then
    startTimeString = ""
    else
	startTimeString = " --start-time=" + startTime
End if

If IsMissing(stopTime) then
    stopTimeString = ""
    else
	stopTimeString = " --stop-time=" + stopTime
End if
	
 Shell("/usr/bin/vlc " + fileName + startTimeString + stopTimeString,1)
End Sub
Die Deklaration von fileName, startTime und stopTime ist nur zu Testzwecken im Makro enthalten. Mir ist klar, dass die Parameterangaben hinter der Deklaration des Makros noch fehlen.

Gibt es eine Möglichkeit, das irgendwie zu realisieren? Die im Nachbarforum vorgestellte Lösung finde ich nicht praktikabel, weil ich nicht immer das Makro bearbeiten möchte, wenn ich eine neue Videosequenz verlinken möchte. Die hier verlinkte Option hat ja schon ein paar Jahre auf dem Buckel, und vielleicht hat sich bei LibreOffice da inzwischen ja was getan.

Falls das mit LibreOffice nicht geht: Wie würdet Ihr das sonst, ggf. auch mit einer anderen Software, realisieren?

Ich bin gespannt auf Eure Tipps.

Beste Grüße,

Jan

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Verfasst: Do 21. Mär 2024, 13:19
von Mondblatt24
Hallo,

den anderen Beitrag von Dir musst Du schon selber löschen!!

Beitrag löschen.PNG
Beitrag löschen.PNG (3.6 KiB) 1664 mal betrachtet

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Verfasst: Do 21. Mär 2024, 14:28
von jande
Hatte ich zuvor über "Beitrag bearbeiten" und dann unten unter "Optionen" versucht. Das gab die Meldung "Du darfst keine Beiträge in diesem Forum löschen."

Tschuldigt, kein böser Wille, sondern Bedienfehler. Nu isser weg.

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Verfasst: Do 21. Mär 2024, 16:52
von F3K Total
Hallo Jande,
jande hat geschrieben:
Do 21. Mär 2024, 13:11
Die im Nachbarforum vorgestellte Lösung finde ich nicht praktikabel, weil ich nicht immer das Makro bearbeiten möchte, wenn ich eine neue Videosequenz verlinken möchte.
Ich denke, du hast die Sache mit dem auslösenden Ereignis noch nicht ganz verstanden.
Man kann Parameter an das immer gleiche Makro übergeben, indem man die Zusatzinformation der jeweiligen Schaltfläche ausließt:
stag.png
stag.png (10.71 KiB) 1646 mal betrachtet
Hier habe ich erst die Startzeit dann die Stopzeit und dahinter den Dateinamen in die Zusatzinformation geschrieben, jeweils getrennt durch ein Semikolon.
Das folgende Makro ließt die Zusatzinformation als einen String aus. (sTag)
Dieser String wird mit der Funktion Split() an den Semikolons getrennt und in ein Array (aTag) eingelesen.
Der erste abgetrennte Wert hat den Index 0, der zweite den Index 1 usw.
Prinzipiell kann man so hunderte von Werten an das Makro übergeben.

Code: Alles auswählen

Sub OpenFileInVLC(Event)
    'dim StartTime as double
    'dim StopTime as double
    'dim filename as String
    oButton = Event.source.model
    sTag = oButton.tag
    aTag = Split(sTag,";")
    startTime = aTag(0)
    stopTime= aTag(1)
    fileName =  aTag(2)

If IsMissing(startTime) then
    startTimeString = ""
    else
	startTimeString = " --start-time=" + startTime
End if

If IsMissing(stopTime) then
    stopTimeString = ""
    else
	stopTimeString = " --stop-time=" + stopTime
End if
    msgbox (fileName + startTimeString + stopTimeString,64,"TEST nur zum Probieren, da ich keinen VLC-Player habe")
 'Shell("/usr/bin/vlc " + fileName + startTimeString + stopTimeString,1)
End Sub
Siehe Beispieldatei anbei.

Gruß R

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Verfasst: Do 21. Mär 2024, 17:53
von jande
Hallo!

Da hab ich wohl in der Tat einiges noch nicht verstanden. :oops:

Herzlichen Dank für den freundlichen Fingerzeig! :D

Viele Grüße,

Jan

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Verfasst: Do 21. Mär 2024, 22:42
von jande
Hallo!

Ich wollte mich noch mal kurz melden: Ich hab jetzt doch lieber ne Calc-Datei angelegt, die folgende Spalten enthält:
Beschreibung | Dateiname | Start | Stop

Für die Tabelle habe ich für das Ereignis "Doppelklick" folgendes Makro definiert:

Code: Alles auswählen

Sub OpenFileInVLC

	oActiveSheet = ThisComponent.getCurrentController().getActiveSheet()
  	oSels = ThisComponent.getCurrentSelection()
	cellAddress = oSels.getCellAddress()
	cellRow = cellAddress.Row
	
	if  oActiveSheet.getCellByPosition(1,cellRow).string = "" or oActiveSheet.getCellByPosition(1,cellRow).string = "Dateiname" then
		Exit Sub
	else 
		fileName = "'" & oActiveSheet.getCellByPosition(1,cellRow).string & "'"
	End If
	
	startTime=oActiveSheet.getCellByPosition(2,cellRow).string
	stopTime=oActiveSheet.getCellByPosition(3,cellRow).string
	
	If  startTime = "" then
		startTimeString = ""
    else
		startTimeString = " --start-time=" + startTime
	End If
	
	If  stopTime = "" then
		stopTimeString = ""
    else
		stopTimeString = " --stop-time=" + stopTime
	End If
	
Shell("/usr/bin/vlc " + fileName + startTimeString + stopTimeString,1)
 
End Sub
Jetzt kann ich einfach auf die auszuführende Datei doppelklicken, und das Video startet.

Ist dann doch noch ein bisschen einfacher, als immer Schaltflächen definieren zu müssen.

Trotzdem danke für Eure Hilfe!

Jan

Re: [gelöst] Videosequenzen aus LibreOffice heraus per python aufrufen

Verfasst: Fr 22. Mär 2024, 09:30
von karolus
Hallo

Code: Alles auswählen

from subprocess import call
from pathlib import Path

# Das Ereignis »Doppelklick« reicht das Zellobjekt an die aufgerufene Funktion als Argument:
def play_vlc( event ):
    address, filename, sheet = event.CellAddress, event.String, event.Spreadsheet
    row, col = address.Row, address.Column
    # nur in Spalte B, ab Zeile 2 und falls die Zelle einen erreichbaren Dateipfad enthält!
    if col==1 and row>0 and filename and Path(filename).exists(): 
        args = ["vlc", filename]
        start, stop = sheet[row, 2:4].DataArray[0] # C & D
        if start:
            args.append(f"--start-time={int(start)}")
        if stop:
            args.append(f"--stop-time={int(stop)}")
        call( args )
        
openFilesInVLC.ods
(14.91 KiB) 104-mal heruntergeladen