以前、こちら( → )でも書きましたが、VLC Media Player は、動画のストリーム再生(動画をダウンロードしながら再生、プログレッシブダウンロード)ができるようになっています。通常は、メニューバーのメディア > ネットワークストリームを開く、から、動画の直リンクURLを入力して再生してやります。
YouTube などいくつかのサイトでは、動画への直リンクURLを求めなくても、上記手順で、動画のページURLを入力してやるだけで、その動画ページの動画を VLC Media Player 上でストリーム再生できます。これは、VLC Media Player に実装された Luaスクリプトが、動画のページURLから、動画への直リンクURLを求めることで実現されています。
以前の記事では、YouTube の Cookie値がいたずらして、VLC Media Player 上での YouTube動画の視聴ができなくなっている、ということを書きました。このところ、この「Cookie のいたずら」がなくなって、視聴できるようになっていたのですが、9月中旬ころの YouTube 側仕様変更により、再び、うまく視聴できなくなっています。(VLC Media Player version 2.0.3 および、その同梱のスクリプトに基づきます。以下同様。)
これを修正する、youtube.lua スクリプトの修正情報がありましたのでご紹介しておきます。
- 次の URL
http://www.videolan.org/developers/vlc/share/lua/playlist/
へ行って、youtube.lua を入手します。- この記事を書いた時点で youtube.lua は、
19-Jan-2012 07:55 6.4K
でした。
- この記事を書いた時点で youtube.lua は、
- youtube.lua をテキストエディタで開きます。次の2箇所を修正します。
122行目(修正前)for url,itag in string.gmatch( url_map, "url=([^&,]+)[^,]*&itag=(%d+)" ) do
を、(修正後)for itag,url,sig in string.gmatch( url_map, "itag=(%d+)&url=([^&,]+)[^,]*&sig=([^&,]+)" ) do
へ書き換え。
126行目(修正前)url = vlc.strings.decode_uri( url )
を、(修正後)url = vlc.strings.decode_uri( url ).."&signature="..sig
へ書き換え。
正しく修正できていることを確認したら、上書き保存します。 - %AppData%\vlc\lua\playlist フォルダを開きます。
- まず、%AppData%\vlc フォルダを開き、lua フォルダ、その下に playlist フォルダがあることを確認してください。ない場合は作成してください。
- %AppData% の場所は、環境によって異なります。
- playlist フォルダ内に、2で修正した youtube.lua ファイルを放り込みます。
参照元:
- VideoLAN forums 内、 YouTube links no longer working
- VLC Trac 内、 Ticket #7471
- VLC Media player 本体側で youtube.lua スクリプトのアップデートのあった場合は、%AppData%\vlc\lua\playlist フォルダ内の youtube.lua は削除してください。
- %AppData%\vlc\lua\playlist フォルダは、ユーザーの用意した Luaスクリプトの置き場所、インストールフォルダ内 lua\playlist フォルダは、VLC Media Player 同梱の Luaスクリプトの置き場所、みたいに使うのだろうと思います。
- VLC Media player は、まず、%AppData%\vlc\lua\playlist フォルダ内に、担当する Luaスクリプトを捜し、見つからなければ、インストールフォルダ内、lua\playlist フォルダ内に担当Luaスクリプトを捜すようです。
- URL の末尾にクエリ文字列
?fmt=[数字] または、 &fmt=[数字]
を指定してやると、数字の指定する画質の動画ファイルを採ろうとします。指定しない場合、ないし、数字の指定する画質の動画ファイルが見つからない場合には、スクリプト側で、画質をひとつ選んで採るようです。- 数字の指定する画質は、たとえば、
http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs
などを参照してください。itag value というのが fmt の[数字]にあたります。
- 数字の指定する画質は、たとえば、
- 私の環境では、スクリプトの採った動画が、WebM 形式の場合、エラーが出て再生できないようでした。(mkvエラーというのが出る。WebM形式の動画を、いったん、ローカルへ保存した後、開いてやると再生できるようで、プログレッシブダウンロードの場合に、なぜ、うまくいかないのか、原因はよくわかりません。私の環境だけの問題かもしれません)。この場合は、fmt で WebM でないものを指定してやってください。
youtube.lua 修正のお話はこれで終わりです。
VLC Media Player version 2.0.3 同梱の dailymotion.lua も、8月上旬の Dailymotion 動画の仕様変更に対応していませんので、修正情報を記しておきます。修正の手順は、youtube.lua の場合と同じですので、手順はそちらを参照してください。
- http://www.videolan.org/developers/vlc/share/lua/playlist/
の 19-Sep-2011 07:55 3.0K に基づきます。
56行目(修正前)if string.match( line, "\"sequence\",")
を、(修正後)if string.match( line, "\"sequence\"")
参照元:
- VideoLAN forums 内、 Dailymotion lua not working
練習を兼ねて、VLC Media Player用 Lua Playlist Scripts をいくつか作ってみました。見よう見まねで作ったもので、かなりいいかげんなものです。動作の保証はしません。そんなのでもいいよ、という心の広い方のみお試しください。ご自分で勝手に書き換えて使ってもらってかまいません。使い方は、上記、youtube.lua の場合と同じで、%AppData%\vlc\lua\playlistフォルダ内へ、スクリプトを放り込んでください。
- pandoratv.lua
PandoraTV( http://www.pandora.tv/ )用の Lua Playlist スクリプトです。- 再生が始まって数秒~数分で、再生が途切れることがあるかもしれません。そういう場合は、あきらめてください。
シークバーは使えません。使うと、停止してしまいます。
VLC Media Player は、動画が途切れた場合や、シークバーを用いた場合でも、ちゃんと動作するようにできているのだろうと思いますが、なぜかうまくいきません。原因はわかりません。(追記:設定(すべて)>入力/コーデック>アクセスモジュール>HTTP(S) の「継続的なストリーム」にチェックが入っている場合、うまく動作しないようです。)
- veoh.lua
Veoh( http://www.veoh.com/ )用の Lua Playlist スクリプトです。- たぶん、preview動画を拾っています(30分以上の長さの動画は、最初の数分くらいしか再生されない)。
- bliptv.lua
Blip( http://blip.tv/ )用の Lua Playlist スクリプトです。