Vlc.DotNet C#音视频播放器使用说明及简单实例
来源:互联网 发布:ios清除文稿与数据 编辑:程序博客网 时间:2024/06/07 08:00
一、资源
官方Git地址:https://github.com/ZeBobo5/Vlc.DotNet
Nuget包地址-wpf:https://www.nuget.org/packages/Vlc.DotNet.Wpf/
下载解压有四个类库工程和两个实例项目
Vlc.DotNet.Core.Interops
Vlc.DotNet.Core
Vlc.DotNet.Forms
Vlc.DotNet.Wpf
和Vlc.DotNet.FormsSamples,Vlc.DotNet.WpfSamples
后者依赖前者。
今天只看如何能快速运行起来,其他的方法再慢慢添加。
从第一个开始 打开Vlc.DotNet.Core.Interops的工程文件.proj,打开后需要修改:1.解决方案-》属性-》配置,修改为Debug ,x86(如果你是64位操作系统,则选择x64).
2.项目-》属性-》生成,凡是看到x64的,都改为x86的(本人用的x86系统),否则会有平台不兼容的错误。 (默认情况下是AnyCpu,运行抛出异常)
修改完后生成项目,在obj中找到生成的dll文件。
然后第二个 打开Vlc.DotNet.Core的工程文件.proj ,添加第一个生成的dll引用。然后同第一个。。。生成dll.
然后第三个 打开Vlc.DotNet.Forms的工程文件.proj,添加前面两个生成的dll引用。然后同上。。。生成dll.如果是winform,就到此为止,
如果是wpf,则对Vlc.DotNet.Wpf同样操作,添加前三个dll,修改属性。。。生成dll.
以使用wpf为例,前面生成的四个dll,添加到,Vlc.DotNet.WpfSamples项目中,然后修改项目的属性,,生成运行。如果顺利的话就可以运行了。
不过前面生成的wpf.dll中的方法不多。只要运行起来,之后想添加什么,就去最底层dll找方法然后封装。这就不多讲了。
如果还有错误,试着检查项目属性的目标框架,总之要保持一致。
如果因为自己vlc陈旧而出现的Bug而来,那么给出建议:
如果想解决一些非功能上出现的问题,比如有些视频格式不能设置进度(本人碰到的),视频播放时画面花点等,这些不属于代码问题,所以不需要去重新编译vlc的源代码(当时做的时候,以为是底层的代码问题,最后想通了,肯定是不同格式解码编码的问题),这类问题,下载vlc官方播放器,在其安装目录中找到plugins文件夹,里面就是各种格式的编码解码文件,替换最新的文件到自己的项目中,就可以解决了。不过一些官方播放器也存在的问题,此方法就无效了,只能去研究源代码了,不过这就有难度了。
二、实例
Xaml代码:
1.引用命名空间 xmlns:wpf="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
2.创建控件实例 <wpf:VlcControl Grid.Row="0" x:Name="myControl"/>
<Window x:Class="Audio2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Audio2" xmlns:wpf="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525" > <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <wpf:VlcControl Grid.Row="0" x:Name="myControl"/> <Button Grid.Row="1" Click="OnPlayButtonClick">Play</Button> <Button Grid.Row="2" Click="OnForwardButtonClick" x:Name="Forward">Forward</Button> <Button Grid.Row="3" Click="GetLength_Click" x:Name="GetLength">Get Length</Button> <Button Grid.Row="4" Click="GetCurrentTime_Click" x:Name="GetCurrentTime">Get Current Time</Button> <Button Grid.Row="5" Click="SetCurrentTime_Click" x:Name="SetCurrentTime">Set Current Time to 5s</Button> </Grid></Window>C# 后台代码:
1.初始化引用库,必须
2.可以播放在线视频,可以播放本地视频
public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); //初始化配置,指定引用库 myControl.MediaPlayer.VlcLibDirectoryNeeded += OnVlcControlNeedsLibDirectory; myControl.MediaPlayer.EndInit(); } private void OnVlcControlNeedsLibDirectory(object sender, Vlc.DotNet.Forms.VlcLibDirectoryNeededEventArgs e) { var currentAssembly = Assembly.GetEntryAssembly(); var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName; if (currentDirectory == null) return; if (AssemblyName.GetAssemblyName(currentAssembly.Location).ProcessorArchitecture == ProcessorArchitecture.X86) e.VlcLibDirectory = new DirectoryInfo(System.IO.Path.Combine(currentDirectory, @"..\..\..\lib\x86\")); else e.VlcLibDirectory = new DirectoryInfo(System.IO.Path.Combine(currentDirectory, @"..\..\..\lib\x64\")); } private void OnPlayButtonClick(object sender, RoutedEventArgs e) { //播放网络视频 myControl.MediaPlayer.Play(new Uri("http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi")); //播放FM广播失败 //myControl.MediaPlayer.Play(new Uri("mms://radiolive.jnnc.com/news")); ////播放本地视频 //string filename = @"F:\MyDocument\视频\COOLUI理念篇.mp4"; //myControl.MediaPlayer.Play(new FileInfo(filename)); } private void OnForwardButtonClick(object sender, RoutedEventArgs e) { myControl.MediaPlayer.Rate = 2; } private void GetLength_Click(object sender, RoutedEventArgs e) { GetLength.Content = myControl.MediaPlayer.Length + " ms"; } private void GetCurrentTime_Click(object sender, RoutedEventArgs e) { GetCurrentTime.Content = myControl.MediaPlayer.Time + " ms"; } private void SetCurrentTime_Click(object sender, RoutedEventArgs e) { myControl.MediaPlayer.Time = 5000; SetCurrentTime.Content = myControl.MediaPlayer.Time + " ms"; }}
更多相关文章:
http://www.cnblogs.com/luxiaoxun/p/3462153.html
- Vlc.DotNet C#音视频播放器使用说明及简单实例
- C# 使用Vlc播放视频或者监控
- C# Vlc简易播放器
- RTP发送音视频流vlc播放
- 基于VLC开发视频播放器---VLC +MFC
- VLC视频播放器开发--VLC for Android编译
- VLC视频播放器开发--VLC for Android编译
- 一个有用的视频播放器VLC
- 基于VlC的视频播放器
- Ubuntu安装视频播放器vlc
- VLC 无法播放视频
- Vlc播放rtsp视频
- 119 VLC视频播放
- Vlc播放rtsp视频
- Vlc播放rtsp视频
- VLC播放隔行视频
- VLC简介及使用说明
- VLC简介及使用说明
- 剑指offer_输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- Hadoop WordCount
- C语言双层链表
- 在ros中使用zlib解压或者压缩数据该如何配置cmakelists
- SpringMVC统一异常处理(返回异常数据而不是跳转到某个页面的方法)
- Vlc.DotNet C#音视频播放器使用说明及简单实例
- 单例模式
- [LeetCode]238. Product of Array Except Self
- JavaEE环境配置
- 活动与服务间通信
- 智慧北京:引导页面静态点的添加
- 啊哈算法搜索应用之宝岛探险(BFS和DFS)
- Java学习:英雄对决总结—英雄选择
- DOM方式操作XML