2016-09-05 5 views
1

ビデオファイルを含むプレイリストがあります。プレイリストアイテムごとに、Luaスクリプトを使って各トラックがVLCで「繰り返し」、「再生と停止」などを行うかどうかのプレイリストモードを制御したいと考えています。VLC/Luaの各メディアファイルの再生オプションを個別に制御するプレイリストの作成

file:///data/video1.mp4,repeat 
file:///data/video2.mp4,play-and-stop 

目的は、手動で次のトラックに進むまで、一部のビデオトラックを無期限に繰り返すことです。プレイリスト内の他のトラックは一度再生してから次のトラック、すなわちplay-and-stopに進み、再生を再開する前にユーザーが対話するのを待ちます。

私は現在hereに準拠していますが、それぞれのトラックにplaylist optionsを個別に適用することはできません(このオプションはプレイリスト全体に適用されます)。これを達成するためにスクリプトを拡張する方法はありますか?

function probe() 
    return string.match(vlc.path, "%.myplaylist$") 
end 

function parse() 
    playlist = {} 

    while true do 
     playlist_item = {} 
     line = vlc.readline() 
     if line == nil then 
      break 

     -- parse playlist line into two tokens splitting on comma 
     values = {} 
     i=0 
     for word in string.gmatch(line, '([^,]+)') do 
      values[i]=word 
      i=i+1 
     end 

     playlist_item.path = values[0] 
     playback_mode = values[1] 

     playlist_item.options = {} 
     table.insert(playlist_item.options, "fullscreen") 
     table.insert(playlist_item.options, playback_mode) 

     -- add the item to the playlist 
     table.insert(playlist, playlist_item) 
    end 

    return playlist 
end 

しないplaylist_item.options"video options"が働いているの追加が、トラックごとに"playlist options"を追加します。私はプレイリスト全体を返すだけなので、どのように進むべきかは分かりません。カスタムプレイリスト

file:///data/video1.mp4,repeat 
file:///data/video2.mp4,play-once 

考える

+1

再生リストのオプションはプレイリスト全体に適用されると思われます。あなたの例では、最初のトラックがリピート中であれば、プレイリスト内の他のトラックに到達することはありません。これはほとんどのアプリケーションがどのように機能するかを示します。 iTunesの/ Androidの音楽アプリでは、再生リストモードをシャッフル、ループの繰り返し、1つの繰り返し、または1回再生するように選択できます。あなたはやっていると思っています: 'repeat track1 n-times'をして次の項目に移動しますか? – vsnyc

+0

目的は、ユーザーが手動で次のトラックに進むまで、いくつかのビデオトラックを*無期限に繰り返すことです。プレイリストの他のトラックは一度再生してから次のトラックに進む必要があります。私はプレイリストとしてこれを行うことができないように見えています。また、VLCを起動時から実行するために必要なステップバイステップの動作全体を手動でスクリプト化する必要があります。プレイリストモード)? – isedwards

+1

+1。興味深いことに、私は今この時点で実験する時間がありませんが、それが機能すればネストされたプレイリストを調べることができます。いくつかの例[ここ](https://mailman.videolan.org/pipermail/vlc-devel/2007-November/036382.html)、[ここ](http://superuser.com/questions/850163/multiple-playlists) -on-vlc)。また、あなたが望むものをよりよく示すために、質問を更新する必要があります。 – vsnyc

答えて

0

私はリピート/再生ワンス情報トラックメタデータにを追加することにより、上記の元の質問にプレイリストスクリプトを完了しました。

playlist_item.meta = { ["Playback mode"] = playback_mode } 

最後のステップは、input_changedイベントをリッスンし、それに応じてvlc.playlist.repeat_()をトグルする「再生モード」トラック・メタデータを使用する(Song Tracker拡張と同様に)拡張を作成することでした。

function activate() 
    update_playback_mode() 
end 

function input_changed() 
    update_playback_mode() 
end 

function update_playback_mode() 
    if vlc.input.is_playing() then 
    local item = vlc.item or vlc.input.item() 
    if item then 
     local meta = item:metas() 
     if meta then 
     local repeat_track = meta["Playback mode"] 
     if repeat_track == nil then 
      repeat_track = false 
     elseif string.lower(repeat_track) == "repeat" then 
      repeat_track = true 
     else 
      repeat_track = false 
     end 

    local player_mode = vlc.playlist.repeat_() 

    -- toggle playlist.repeat_() as required   
    if player_mode and not repeat_track then 
     vlc.playlist.repeat_() 
    elseif not player_mode and repeat_track then 
     vlc.playlist.repeat_() 
    end 

    return true 
    end 
end 
関連する問題