VLC 2.0.5 で YouTube Playlist 再生

VLCってたしかYouTube動画の再生に対応してたよなーと思いだして試してみたけど、 現在の最新バージョンの2.0.5でも今のYouTubeの仕様に対応できてないのか、YouTube動画の URL を開こうとしてもエラーになってしまう。 ためしにナイトリービルドでためしてみたらOKだった。

けど、ナイトリービルドを常用するのも嫌だ。しかし、このYouTubeのハンドリングはどうもluaの拡張でやっているだけみたいなので、 その拡張ファイルだけバックポートするだけでいけそうだということで、やってみたらちゃんと動いた。

具体的には、

  • VLC.app/Contents/MacOS/share/lua/playlist/youtube.luac
  • VLC.app/Contents/MacOS/share/lua/playlist/youtube_homepage.luac

の2ファイルを上書きしてあげればOK。

ただ、VLCデフォルトだとどうも単体のYouTube動画は再生できるものの、playlistには対応していないみたいだ。 検索すると、

Youtube video and playlist importer addons.videolan.org

というのがみつかった。

ためしてみるとplaylistの展開まではうまく動くが、再生で失敗してしまう。 これ、ナイトリービルドの拡張をもってくる前の挙動と同じだなぁとおもいつつソースを見てみるとこのplaylist拡張のなかで、動画URL(/watch?なの)もハンドリングしようとしちゃってるみたいだ。 ここはVLC本体のにまかせればいいので、クイックパッチをあてた。

--- 149909-playlist_youtube3.lua.orig   2012-12-03 02:18:38.000000000 +0900
+++ 149909-playlist_youtube3.lua    2013-04-04 15:54:17.000000000 +0900
@@ -31,12 +31,13 @@
     if vlc.access ~= "http" and vlc.access ~= "https" then
         return false
     end
-    
-    return string.match(vlc.path:match("([^/]+)"),"%w+.youtube.com") and 
-       (string.match(vlc.path, "list=") 
-       or string.match(vlc.path, "/watch%?") 
-       or string.match(vlc.path, "/watch%?") 
-       or string.match(vlc.path, "/player2.swf"))
+
+    if string.match(vlc.path, "/watch%?") then
+        return false;
+    end
+
+    return string.match(vlc.path:match("([^/]+)"),"%w+.youtube.com")
+       and string.match(vlc.path, "list=")
 end

 -- Parse function.

これで再生は、本体のほうの拡張でおこなわれるので、いい感じでplaylist再生ができるようになった。良い。

by typester / at 2013-04-04T15:36:00 / vlc · youtube / Comment