多个视频,重复循环播放的解决方式

(demo需求:  假如有五个视频, 1 2 3 4 5 , 1播放完了开始播放2,  2播放完了开始播放3, .... 5播放完了要重新从1开始播放)


实现如下:   (只写了关键的几行代码,相信大家一看就明白了)

private int count = 0; //定义一个成员变量
private List<String> videoList = new ArrayList<>(); //定义一个存储视频URL的集合
videoList.add("视频资源url1");
videoList.add("视频资源url2");
videoList.add("视频资源url3");
videoList.add("视频资源url4");
videoList.add("视频资源url5");

if (videoList.size() > 0) {   //如果集合的长度大于0,表示有视频资源
    playVideo();
} else {
    Toast.makeText(this, StringConstant.CHECKVIDEONULL,Toast.LENGTH_SHORT).show();
    // toast提示视频资源找不到
}



private void playVideo() {
    videoView.setVideoPath(videoList.get(count));  //播放视频时,默认选择从第一个开始播放
    videoView.start();
    //监听视频的播放,视频播放结束后调用该方法
    videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            count++;  //视频资源变成下一个
            if (count >= videoList.size()) {
                //表示已经全部播放完毕,让count变成0即可
                count = 0;
            }
            playVideo();
        }
    });
}



以上,代码也比较简单

### 实现C#中使用VLC循环播放视频 为了实现在C#应用程序中通过VLC实现视频循环播放功能,可以基于`LibVLCSharp`库构建解决方案。此过程涉及创建并配置媒体播放器实例以及设置其选项以支持循环播放。 #### 创建项目与安装依赖项 首先,在Visual Studio或其他IDE中新建一个Windows Forms App (.NET Framework 或 .NET Core/5+/6+)项目。接着利用NuGet包管理工具引入`LibVLCSharp`及其相关组件: ```bash Install-Package LibVLCSharp Install-Package LibVLCSharp.WinForms ``` #### 初始化LibVLC和MediaPlayer对象 在窗体类(如`Form1.cs`)内完成必要的初始化工作,这通常是在构造方法里执行。这里不仅需要建立`Core`, `LibVLC` 和 `MediaPlayer` 的实例化操作,还需要指定用于显示视频流的目标容器——即面板控件(`Panel`)作为绘图表面[^1]。 ```csharp using System; using LibVLCSharp.Shared; public partial class Form1 : Form { private LibVLC _libvlc; private MediaPlayer _mp; public Form1() { InitializeComponent(); // Initialize libvlc and media player. Core.Initialize(); _libvlc = new LibVLC(enableDebugLogs: true); _mp = new MediaPlayer(_libvlc); // Set the drawable area to a panel control named videoPanel on your form. _mp.SetHwnd(videoPanel.Handle); } } ``` #### 设置循环播放模式 为了让视频能够持续不断地重复播放,可以在加载特定文件之前调整`MediaPlayer`的行为参数。具体来说就是向`MediaOptions`集合添加`:input-repeat=99999`这一条目,它指示输入源应该被无限次重播直到程序显式停止。 ```csharp // Add this method inside Form1 class. private void PlayVideo(string path) { var media = new Media(_libvlc, new Uri(path), FromType.FromPath); // Enable loop playback by setting input repeat option. media.AddOption(":input-repeat=99999"); _mp.Media = media; _mp.Play(); } protected override void OnClosing(CancelEventArgs e){ base.OnClosing(e); _mp.Stop(); _mp.Dispose(); _libvlc?.Dispose(); } ``` 上述代码片段展示了如何启动位于给定路径下的多媒体资源,并启用了循环回放特性。当关闭窗口时,确保释放所有占用的资源是非常重要的,因此也包含了清理逻辑。 对于Avalonia UI框架而言,如果打算在此基础上进一步开发跨平台应用,则需要注意将`VideoView`放置于`UserControl`而非顶层窗口之中,以此规避可能出现的问题[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值