2013-01-25 141 views
0

VB.NET中的VLC播放器似乎無法檢測到播放結束,我做錯了什麼?VB.NET中的VLC播放器似乎無法檢測播放結束,我做錯了什麼?

我的目的是使用「_MediaPlayerEndReached」使播放器移動到下一個視頻,但是一旦視頻播放完成後什麼都不會發生,它就會停止(如下圖所示)。

而不是移動到下一個視頻它只是停留像這樣:

FYI:用於測試剪輯都是免費的拖車。

enter image description here

代碼:

Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     AxVLCPlugin21.playlist.items.clear() 
     AxVLCPlugin21.playlist.add("file:///C:/Users/Adminx/Downloads/The_Hobbit_Full_Length_Trailer_2_HD.mp4") 
     AxVLCPlugin21.playlist.play() 
    End Sub 

    Private Sub AxVLCPlugin21_MediaPlayerEndReached(sender As Object, e As EventArgs) Handles AxVLCPlugin21.MediaPlayerEndReached 
     AxVLCPlugin21.playlist.items.clear() 
     AxVLCPlugin21.playlist.add("file:///C:/Users/Adminx/Downloads/ShortestVid.avi") 
     AxVLCPlugin21.playlist.play() 
    End Sub 
End Class 

回答

0

我已經找到了如何做到這一點,使用定時器。感謝所有幫助

代碼:

Public Class Form1 
    Dim Paused As Boolean = False 
    Dim Started As Boolean = False 
    Dim PlayedSecond As Boolean = True 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     PlayedSecond = False 
     AxVLCPlugin21.playlist.items.clear() 
     AxVLCPlugin21.playlist.add("file:///C:/Users/Adminx/Downloads/The_Hobbit_Full_Length_Trailer_2_HD.mp4") 
     AxVLCPlugin21.playlist.play() 
     Started = True 
    End Sub 

    Sub playsecond() 
      AxVLCPlugin21.playlist.items.clear() 
      AxVLCPlugin21.playlist.add("file:///C:/Users/Adminx/Downloads/ShortestVid.avi") 
      AxVLCPlugin21.playlist.play() 
      PlayedSecond = True 
      Started = False 
    End Sub 

    Private Sub AxVLCPlugin21_pause(sender As Object, e As EventArgs) Handles AxVLCPlugin21.pause 
      Paused = True 
    End Sub 

    Private Sub IsFinished_Tick(sender As Object, e As EventArgs) Handles IsFinished.Tick 
     If Not AxVLCPlugin21.playlist.isPlaying And Paused = False And Started = True And PlayedSecond = False Then 
      playsecond() 
      Started = True 
     End If 
    End Sub 

    Private Sub AxVLCPlugin21_play(sender As Object, e As EventArgs) Handles AxVLCPlugin21.play 
     Paused = False 
    End Sub 
End Class 
0

你不能在EndReached()事件再踢媒體文件。 最好的解決方案是在最後創建另一個線程,並且此線程將在媒體的REAL結束後播放新文件。 與MediaPlayer用戶控件相同。

如果你不知道如何創建新的線程,這是最簡單的方法:

thread = new Thread(() => while(VLC IS PLAYING) {}; PlayNewFile; )); 
thread.Start(); 

我沒有測試,但是,這個應該做的工作。

線程正在等待VLC停止視頻,然後播放下一個。

編輯:

檢查了這一點:DMediaPlayer - Simple VLC frontend

,並在這裏閱讀:.Net_Interface_to_VLC

+0

我該怎麼做? – Santa

+0

我是否把這個事件放到了最後? – Santa

+0

只是把它放在事件中,並且在線程之後放入「舊」命令。 – Guy

0
Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     AxVLCPlugin21.playlist.items.clear() 
     AxVLCPlugin21.playlist.add("file:///C:/Users/Adminx/Downloads/The_Hobbit_Full_Length_Trailer_2_HD.mp4") 
     AxVLCPlugin21.playlist.playItem(0) 
    End Sub 

    Private Sub AxVLCPlugin21_MediaPlayerEndReached(sender As Object, e As EventArgs) Handles AxVLCPlugin21.MediaPlayerEndReached 
     AxVLCPlugin21.playlist.items.clear() 
     AxVLCPlugin21.playlist.add("file:///C:/Users/Adminx/Downloads/ShortestVid.avi") 
     AxVLCPlugin21.playlist.playItem(0) 
    End Sub 
End Class 

必須通過新的職位這樣做。如果你做了你的代碼,它會重置所有正在執行他們的第一個帖子。 嘗試還可以! 新希捷