Hi,
wie könnte ich denn die Länge und aktuelle Time-Position einer Aufnahme abfragen, die gerade im VDR wiedergegeben wird?
Z.B. per Commandline.
Ich habe das wiki zu SVDRPSEND durchgesehen, bin hier nicht fündig geworden.
Grüße
Ulrich
Hi,
wie könnte ich denn die Länge und aktuelle Time-Position einer Aufnahme abfragen, die gerade im VDR wiedergegeben wird?
Z.B. per Commandline.
Ich habe das wiki zu SVDRPSEND durchgesehen, bin hier nicht fündig geworden.
Grüße
Ulrich
... hat wirklich niemand eine Idee?
Von der Idee her wäre es ein etwas komplexerer Zugriff auf den VDR von Außen ...
Wahrscheinlich geht es nur über einen Eingriff in den Quellcode, oder?
Vermutlich könnte man ein Plugin schreiben, welches einem diese Informationen auf Anfrage liefert.
Lars
Ich kenne aktuell nur eine Möglichkeit über das osd2web-Plugin (das schickt die Informationen aber aktuell nur dann über den Websocket raus, wenn man die Wiedergabe startet, pausiert oder vom Vorwärts/Rückwärtsspulen auf Pause bzw. normale Wiedergabe umschaltet oder sich ein Client neu mit dem Plugin verbindet).
Mit Python >= 3.4 und websockets (kann man über pip installieren) geht das z.B. so (das Programm beendet sich, sobald es einmal die Länge und Abspielposition ausgegeben hat, wenn es durchlaufen soll, einfach das "sys.exit(0)" rausnehmen:
#!/usr/bin/env python
import asyncio
import json
import websockets
import sys
login = json.dumps(
{
'event': 'login',
'object': {"type": 1}
})
logout = json.dumps(
{
'event': 'logout',
'object': {}
})
def print_data(obj):
category = obj['event']
data = obj['object']
if category == 'replaycontrol':
if data['active'] == 1:
print("Abspielposition (s):", data['current'])
print("Länge (s):", data['total'])
sys.exit(0)
async def websocket_client():
async with websockets.connect('ws://vdr:4444', subprotocols=['osd2vdr']) as websocket:
await websocket.send(login)
while True:
response = await websocket.recv()
data = json.loads(response)
print_data(data)
await websocket.ping()
await websocket.send(logout)
if __name__ == '__main__':
loop = asyncio.get_event_loop().run_until_complete(websocket_client())
Alles anzeigen
Mit dbus2vdr kannst du rausfinden, ob und welche Aufnahme abgespielt wird.
https://github.com/flensrocker…833f15ac66629/README#L405
Und auch dir Länge der Aufnahme kann man ermitteln:
https://github.com/flensrocker…833f15ac66629/README#L183
Aber die aktuelle Position gibt es noch nicht.
Lars
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!