Ich versuche, meinem Videoplayer in Kivy Untertitel von einer URL hinzuzufügen. Das habe ich bisher gemacht. Zuerst habe ich nur noch den Untertitel Link auf die Eigenschaft, genau wie ich den Quell-Link für das VideoHinzufügen von Kommentaren/Untertiteln zu Kivy Videoplayer in Python
VideoPlayer:
source: root.vid_source
options: {'allow_stretch': True, 'eos': 'loop'}
annotations: root.subs_source ## This doesnt work
Nach der Kivy Dokumentation hinzufügen, würde ich eine ‚jsa‘ Datei mit Liste wie diese erfordern Ich nehme
[
{"start": 0, "duration": 2,
"text": "This is an example of annotation"},
{"start": 2, "duration": 2,
"bgcolor": [0.5, 0.2, 0.4, 0.5],
"text": "You can change the background color"}
]
aber die Quelle Link enthält Text dieses Format (ein Wörterbuch mit den wichtigsten ‚Titel‘ ist, was ich brauche)
{"captions":[{"duration":1961,"content":"When you have 21 minutes to speak,","startOfParagraph":true,"startTime":1610},{"duration":2976,"content":"two million years seems\nlike a really long time.","startOfParagraph":false,"startTime":3595}
Also habe ich eine neue Klasse, die Untertitel in der gegebenen zu analysieren Format
class Subtitles:
def __init__(self, url):
self.parsed_subs = []
req = UrlRequest(url, self.got_subtitles)
def got_subtitles(self, req, results):
self.parsed_subs = [{"start":sub["startTime"],"duration":sub["duration"], "text": sub["content"]} for sub in results['captions']]
def get_subtitles(self):
return self.parsed_subs
mit Änderungen an meiner Kv-Datei folgende
#:import playerapp playerapp
VideoPlayer:
.......
#### str conversion since it says it accepts only string####
annotations: str(playerapp.Subtitles(root.subs_source).get_subtitles())
Aber es hat nicht funktioniert.
Nach dem Quellcode auf einem Blick nimmt für VideoPlayer- ich sehe, dass, während die Videoplayer-Initialisierung es self._annotations_labels
schafft, die es mit auffüllt, was von VideoAnnotation Klasse zurückgegeben wird, so vielleicht irgendwie muß ich die self._annotations_labels
die oben parsed_subs
nach innen setzen, aber ich bin hier verwirrt.