🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

Alles zur Programmierung im LibreOffice.
Antworten
jande
Beiträge: 8
Registriert: Di 30. Jan 2024, 19:55

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

Beitrag von jande » Do 21. Mär 2024, 13:11

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
Zuletzt geändert von jande am Do 21. Mär 2024, 22:44, insgesamt 1-mal geändert.

Mondblatt24
* LO-Experte *
Beiträge: 3339
Registriert: Fr 3. Mär 2017, 17:12

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Beitrag von Mondblatt24 » Do 21. Mär 2024, 13:19

Hallo,

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

Beitrag löschen.PNG
Beitrag löschen.PNG (3.6 KiB) 1667 mal betrachtet
Win 11 (x64) ▪ LO 25.2.5.1 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

jande
Beiträge: 8
Registriert: Di 30. Jan 2024, 19:55

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Beitrag von jande » Do 21. Mär 2024, 14:28

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.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Beitrag von F3K Total » Do 21. Mär 2024, 16:52

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) 1649 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
Dateianhänge
sTag_Videos.odt
(12.55 KiB) 91-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

jande
Beiträge: 8
Registriert: Di 30. Jan 2024, 19:55

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Beitrag von jande » Do 21. Mär 2024, 17:53

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

jande
Beiträge: 8
Registriert: Di 30. Jan 2024, 19:55

Re: Videosequenzen aus LibreOffice heraus per Makro aufrufen

Beitrag von jande » Do 21. Mär 2024, 22:42

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
Dateianhänge
openFilesInVLC.ods
(12.03 KiB) 92-mal heruntergeladen

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

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

Beitrag von karolus » Fr 22. Mär 2024, 09:30

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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten