C# 如何在c中播放m3u8在线广播文件#
我想用c#中的Windows Media Player组件播放一个C# 如何在c中播放m3u8在线广播文件#,c#,vb.net,c#-4.0,C#,Vb.net,C# 4.0,我想用c#中的Windows Media Player组件播放一个m3u8url 为什么这对我不起作用: WMPlayer.URL = "http://headend1.iranseda.ir:8134/hls-live/livepkgr/_definst_/radio-avaa/radio-avaa-40k.m3u8"; 第一个样本 要播放m3u8文件,您可以使用 第二个样本 下面是另一个使用 对于本例,我创建了一个控制台应用程序并安装了NuGet软件包: Vlc.DotNet.Core
m3u8
url
为什么这对我不起作用:
WMPlayer.URL = "http://headend1.iranseda.ir:8134/hls-live/livepkgr/_definst_/radio-avaa/radio-avaa-40k.m3u8";
第一个样本
要播放m3u8文件,您可以使用
第二个样本
下面是另一个使用
对于本例,我创建了一个控制台应用程序并安装了NuGet软件包:
- Vlc.DotNet.Core
- Vlc.DotNet.Core.Interops
- libvlc.dll
- libvlccore.dll
- plugins文件夹(您可以从该文件夹中删除未使用的插件)
class Program
{
static void Main(string[] args)
{
var vlcService = new PlayerVLCService();
vlcService.Play(new Uri("[YourPath].m3u8"));
Console.ReadLine();
vlcService.Stop();
}
}
public class PlayerVLCService
{
private VlcMediaPlayer _vlcMediaPlayer;
public PlayerVLCService()
{
var currentAssembly = Assembly.GetEntryAssembly();
var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName;
if (currentDirectory == null)
return;
DirectoryInfo vlcLibDirectory;
if (IntPtr.Size == 4)
vlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, @"..\..\lib\x86\"));
else
vlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, @"..\..\lib\x64\"));
_vlcMediaPlayer = new VlcMediaPlayer(vlcLibDirectory);
}
public void Play(Uri playPathUri)
{
_vlcMediaPlayer.SetMedia(playPathUri, null);
_vlcMediaPlayer.Play();
}
public void Stop()
{
_vlcMediaPlayer.Stop();
}
}
m3u8是一个播放列表文件,而不是音乐文件本身,因此您需要获取播放列表,并以播放列表整理语言和相关标记对文件进行流式处理。奇怪的是,对于其他m3u8,此代码可以正常工作。我为这个问题添加了另一个版本的解决方案。
class Program
{
static void Main(string[] args)
{
var vlcService = new PlayerVLCService();
vlcService.Play(new Uri("[YourPath].m3u8"));
Console.ReadLine();
vlcService.Stop();
}
}
public class PlayerVLCService
{
private VlcMediaPlayer _vlcMediaPlayer;
public PlayerVLCService()
{
var currentAssembly = Assembly.GetEntryAssembly();
var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName;
if (currentDirectory == null)
return;
DirectoryInfo vlcLibDirectory;
if (IntPtr.Size == 4)
vlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, @"..\..\lib\x86\"));
else
vlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, @"..\..\lib\x64\"));
_vlcMediaPlayer = new VlcMediaPlayer(vlcLibDirectory);
}
public void Play(Uri playPathUri)
{
_vlcMediaPlayer.SetMedia(playPathUri, null);
_vlcMediaPlayer.Play();
}
public void Stop()
{
_vlcMediaPlayer.Stop();
}
}