是否可以從Youtube視頻中提取隱藏式字幕轉錄本?如何從YouTube視頻中提取隱藏式字幕副本?
我們在YouTube上有200多個網絡廣播,每個廣播至少有一個小時。 Youtube有所有視頻的封閉標題,但似乎用戶無法獲得它。
我在本博客中嘗試過網址,但它不適用於我們的視頻。
http://googlesystem.blogspot.com/2010/10/download-youtube-captions.html
謝謝
是否可以從Youtube視頻中提取隱藏式字幕轉錄本?如何從YouTube視頻中提取隱藏式字幕副本?
我們在YouTube上有200多個網絡廣播,每個廣播至少有一個小時。 Youtube有所有視頻的封閉標題,但似乎用戶無法獲得它。
我在本博客中嘗試過網址,但它不適用於我們的視頻。
http://googlesystem.blogspot.com/2010/10/download-youtube-captions.html
謝謝
以下文檔說,只有通道的所有者可以通過標準的YouTube界面做到這一點: https://developers.google.com/youtube/2.0/developers_guide_protocol_captions?hl=en
便宜的解決辦法: 您可以點擊「交互式轉錄「按鈕 - 並以此方式複製內容。 當然,你會以這種方式失去毫秒。
非常便宜的修復程序: 共享的YouTube帳戶 - 以便多人可以編輯和上傳字幕文件。
挑戰的解決方案: YouTube的API允許下載,並通過HTTP ... 你可以寫一個YouTube API應用程序提供上載或下載任何用戶或特定用戶瀏覽器的用戶界面的字幕文件上傳。
這是在Java中的一個這樣的例子項目 http://apiblog.youtube.com/2011/01/youtube-captions-uploader-web-app.html
下面是爲大家的工作上傳的很簡單的例子: http://yt-captions-uploader.appspot.com/
下面是如何獲得YouTube視頻的(如果有)的成績單:
雖然語法可能是一個小傻瓜,這是一個相當不錯的解決方案。
來源:http://ccm.net/faq/40644-youtube-how-to-get-the-transcript-of-a-video
(強制性「這可能是一個內部的YouTube。COM接口,並且可能在任何時間「)
而不是鏈接到另一個工具,這是否打破,這裏是一個答案,‘如何做到這一點’
我用fiddler檢查問題的youtube.com HTTP流量,並且有一個來自/api/timedtext
的響應,其中包含作爲XML的隱藏式字幕信息。
看來,這樣的迴應:
<p t="0" d="5430" w="1">
<s p="2" ac="136">we've</s>
<s t="780" ac="252"> got</s>
</p>
<p t="2280" d="7170" w="1">
<s ac="243">we're</s>
<s t="810" ac="233"> going</s>
</p>
意味着在時間0
這個詞we've
和時間0+780
這個詞got
和時間2280+810
這個詞going
等,這一次是在毫秒,所以時間3090你想要追加&t=3
的URL。
你可以使用任何工具拼接在一起的XML爲可讀,但這裏是我的Power BI Desktop腳本找到像「特權」的話:
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"
您可以查看/複製/下載的timecoded xml文件一個YouTube的字幕文件,通過訪問
http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]
例如http://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w
注意:此方法不下載AUTOGEN即使你的語言是正確的(也許有自動生成的語言的特殊代碼)。
截至2017年5月,這不再有效(我猜video.google.com不再適用於YouTube的API。任何其他谷歌工具提取字幕? – OxC0FFEE 2017-05-24 17:57:31
感謝您的提升,但是...你必須有遇到一些問題或其他問題,這個解決方案仍然有效,只是測試它,它可能是一些格式化選項(語言,也許?)。張貼視頻鏈接,我會仔細檢查直接 – 2017-05-25 09:53:18
它適用於你的例子@tonygil ;但不適用於... http://video.google.com/timedtext?lang=en&v=odPD-H0LMkc(https://youtu.be/odPD-H0LMkc) – 2017-10-20 08:41:44
從...
下拉菜單中選擇Open Transcript
右上角的分享鏈接。
這將在右側打開一個Transcript
滾動格。您可以使用Copy
。請注意,您不能使用Select All
,但需要單擊第一行,然後使用滾動條滾動到底部,然後在最後一行上按住Shift鍵單擊。
請注意,您也可以使用正常的網頁搜索在此文本中進行搜索。
此答案中的每個鏈接都過時了。 YouTube API 2.0已被[API 3.0](https://developers.google.com/youtube/v3/docs/captions)取代,並且在此API下下載字幕[導致「約200單位的配額成本」]( https://developers.google.com/youtube/v3/docs/captions/download)。他們沒有提及這個配額是如何分配給誰的,所以這個解決方案對於大多數只想下載字幕而不是對某些API感興趣的人不會有用。 – 7vujy0f0hy 2017-03-29 01:44:27
以某種方式可以通過Youtube V3 API生成自動轉錄腳本? – manish1706 2018-01-08 04:27:15