it-swarm.com.de

So extrahieren Sie ein Untertitelskript aus einem YouTube-Video?

Ist es möglich, das Untertitelskript aus Youtube-Videos zu extrahieren?

Wir haben über 200 Webcasts auf Youtube und jeder dauert mindestens eine Stunde. Youtube hat Untertitel für alle Videos, aber es scheint, als hätten Nutzer keine Möglichkeit, sie zu erhalten.

Ich habe die URL in diesem Blog ausprobiert, funktioniert aber nicht mit unseren Videos.

http://googlesystem.blogspot.com/2010/10/download-youtube-captions.html

Vielen Dank

39
Minghui Yu

Das folgende Dokument sagt, dass nur der Eigentümer des Channels dies über die Standard-Youtube-Schnittstelle tun kann: https://developers.google.com/youtube/2.0/developers_guide_protocol_captions?hl=de

Preiswertes Fix: Sie können auf die Schaltfläche "interaktives Transscript" klicken - und den Inhalt auf diese Weise kopieren . Natürlich verlieren Sie die Millisekunden auf diese Weise.

Extrem billiger Fix: Ein gemeinsam genutzter Youtube-Account - Damit können mehrere Personen Untertiteldateien bearbeiten und hochladen.

Herausfordernde Lösung: Die Youtube-API ermöglicht das Herunterladen und Hochladen von Untertiteldateien über HTTP ... Sie können eine Youtube-API-Anwendung schreiben, um eine Browser-Benutzeroberfläche zum Hochladen oder Herunterladen für einen beliebigen Benutzer oder bestimmte Benutzer bereitzustellen.

Hier ist ein Beispielprojekt in Java http://apiblog.youtube.com/2011/01/youtube-captions-uploader-web-app.html

Hier ist ein sehr einfaches Beispiel für einen funktionierenden Upload für alle: http://yt-captions-uploader.appspot.com/

15
Peter Buchmann

So erhalten Sie das Transkript eines YouTube-Videos (sofern verfügbar):

  • Gehen Sie zu YouTube und öffnen Sie das Video Ihrer Wahl. 
  • Klicken Sie auf die Schaltfläche "Weitere Aktionen" (3 horizontale Punkte) neben der Schaltfläche "Teilen".
  • Klicken Sie auf "Transkript öffnen".

Obwohl die Syntax ein wenig doof sein kann, ist dies eine ziemlich gute Lösung.

Quelle: http://ccm.net/faq/40644-youtube-how-to-get-the-transcript-of-a-video

25
Will

Sie können eine timecodierte XML-Datei der geschlossenen Untertiteldatei eines Youtube anzeigen, kopieren oder herunterladen, indem Sie darauf zugreifen

http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]

Zum Beispiel http://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w

HINWEIS: Diese Methode lädt keine automatisch generierten Untertitel, auch wenn Sie die richtige Sprache gewählt haben (möglicherweise gibt es einen speziellen Code für automatisch generierte Sprachen).

14
tony gil

(Obligatorisch "Dies ist wahrscheinlich eine interne youtube.com-Schnittstelle und kann jederzeit abgebrochen werden.")

Anstatt mit einem anderen Tool zu verknüpfen, das dies tut, ist hier eine Antwort auf die Frage "Wie geht das?"

Ich habe fiddler verwendet, um den HTTP-Datenverkehr von youtube.com zu untersuchen, und es gibt eine Antwort von /api/timedtext, die die Untertitelinformationen als XML enthält.

Es scheint, dass eine Antwort wie folgt:

    <p t="0" d="5430" w="1">
        <s p="2" ac="136">we&#39;ve</s>
        <s t="780" ac="252"> got</s>
    </p>
    <p t="2280" d="7170" w="1">
        <s ac="243">we&#39;re</s>
        <s t="810" ac="233"> going</s>
    </p>

bedeutet zur Zeit 0 ist das Wort we've und zur Zeit 0+780 ist das Wort got und zur Zeit 2280+810 ist das Wort going usw. Diese Zeit wird in Millisekunden angegeben, sodass Sie für die Zeit 3090 &t=3 an die URL anhängen möchten.

Sie können jedes beliebige Werkzeug verwenden, um das XML in etwas Lesbares zusammenzufügen, aber hier ist mein Power BI Desktop Skript, um Wörter wie "Privilegien" zu finden:

let
    Source = Xml.Tables(File.Contents("C:\Download\body.xml")),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute:format", Int64.Type}}),
    body = #"Changed Type"{0}[body],
    p = body{0}[p],
    #"Changed Type1" = Table.TransformColumnTypes(p,{{"Attribute:t", Int64.Type}, {"Attribute:d", Int64.Type}, {"Attribute:w", Int64.Type}, {"Attribute:a", Int64.Type}, {"Attribute:p", Int64.Type}}),
    #"Expanded s" = Table.ExpandTableColumn(#"Changed Type1", "s", {"Attribute:ac", "Attribute:p", "Attribute:t", "Element:Text"}, {"s.Attribute:ac", "s.Attribute:p", "s.Attribute:t", "s.Element:Text"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Expanded s",{{"s.Attribute:t", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type2",{"s.Attribute:t", "s.Element:Text", "Attribute:t"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Other Columns",null,0,Replacer.ReplaceValue,{"s.Attribute:t"}),
    #"Filtered Rows" = Table.SelectRows(#"Replaced Value", each [#"s.Element:Text"] <> null),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Time", each [#"Attribute:t"] + [#"s.Attribute:t"]),
    #"Filtered Rows1" = Table.SelectRows(#"Added Custom", each ([#"s.Element:Text"] = " privilege" or [#"s.Element:Text"] = " privileged" or [#"s.Element:Text"] = " privileges" or [#"s.Element:Text"] = "privilege" or [#"s.Element:Text"] = "privileges"))
in
    #"Filtered Rows1"
4
Carl Walsh

Wählen Sie Open Transcript aus der Dropdown-Liste ... rechts neben den Abstimmungs- und Weiterleitungslinks.

Dies öffnet ein Transcript scrolling div auf der rechten Seite.

Sie können dann Copy verwenden. Beachten Sie, dass Sie Select All nicht verwenden können, aber auf die obere Zeile klicken, dann mit dem Bildlauf-Daumen nach unten scrollen und dann bei gedrückter Umschalttaste auf die letzte Zeile klicken müssen.

Beachten Sie, dass Sie auch in diesem Text mit der normalen Webseitensuche suchen können.

2
PeterVermont

Sie können die Streaming-Untertitel von YouTube herunterladen KeepSubs DownSub

Sie können aus der automatischen Transkription oder dem vom Autor bereitgestellten Untertitel wählen. Es bietet auch die Möglichkeit, die englischen Untertitel mithilfe von Google Translate automatisch in andere Sprachen zu übersetzen. 

1
Palimondo

Eine weitere Option ist die Verwendung von youtube-dl:

youtube-dl --skip-download --write-auto-sub $youtube_url

Das Standardformat ist vtt und das andere verfügbare Format ist ttml (--sub-format ttml).

--write-sub
       Write subtitle file

--write-auto-sub
       Write automatically generated subtitle file (YouTube only)

--all-subs
       Download all the available subtitles of the video

--list-subs
       List all available subtitles for the video

--sub-format FORMAT
       Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"

--sub-lang LANGS
       Languages of the subtitles to download (optional) separated by commas, use --list-subs for available language tags

Sie können ffmpeg verwenden, um die Untertiteldatei in ein anderes Format zu konvertieren:

ffmpeg -i input.vtt output.srt
0
nisetama

Es gibt ein kostenloses python Tool namens YouTube Transcript API

Sie können es in Skripten oder als Befehlszeilen-Tool verwenden:

pip install youtube_transcript_api
0
Justin Meiners

Ich habe dies einfach manuell erledigt, indem ich das Transkript am Anfang des Videos öffne und auf den Marker 00:00 mit Linksklick und Ziehen mit gedrückter Umschalttaste über ein paar Zeilen am Anfang klicke.

Dann habe ich das Video bis zum Ende vorgerückt. Als das Video angehalten wurde, klickte ich auf das Ende des letzten Satzes, während ich die Umschalttaste erneut gedrückt hielt. Mit CTRL-C habe ich den Text in die Zwischenablage kopiert und in einen Editor eingefügt.

Erledigt!

Vorsichtsmaßnahme: Stellen Sie sicher, dass kein RDP-Windows die Zwischenablage freigibt oder Software wie Teamviewer zur gleichen Zeit ausgeführt wird, da diese Prozedur ihre Puffer überläuft, wenn eine große Menge Text kopiert wird.

0
Carey G. Butler