以前、こちら( )でも書きましたが、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 スクリプトの修正情報がありましたのでご紹介しておきます。

修正の手順
  1. 次の URL
    http://www.videolan.org/developers/vlc/share/lua/playlist/
    へ行って、youtube.lua を入手します。
    • この記事を書いた時点で youtube.lua は、
      19-Jan-2012  07:55  6.4K
      でした。
  2. 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
    
    へ書き換え。

    正しく修正できていることを確認したら、上書き保存します。
  3. %AppData%\vlc\lua\playlist フォルダを開きます。
    • まず、%AppData%\vlc フォルダを開き、lua フォルダ、その下に playlist フォルダがあることを確認してください。ない場合は作成してください。
    • %AppData% の場所は、環境によって異なります。
  4. playlist フォルダ内に、2で修正した youtube.lua ファイルを放り込みます。
以上です。
参照元:

注意すること
  • 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 の場合と同じですので、手順はそちらを参照してください。

dailymotion.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\"")
    
以上です。
参照元:


おまけ
練習を兼ねて、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 スクリプトです。


この記事の内容を実行するに際しては、すべて、ご自身の判断と責任において行うようにしてください。