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には対応していないみたいだ。 検索すると、
というのがみつかった。
ためしてみると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再生ができるようになった。良い。