我试图使用https://s2.moidom-stream.ru/s/public/0000000087.m3u8播放视频流“LibVlc”,但我只看到了一个黑色屏幕。其他线程可以正常工作,但我需要这个特定的线程。
所用代码:
using Android.App;
using Android.OS;
using Android.Widget;
using LibVLCSharp.Shared;
using System;
using System.Linq;
using WebCamTst.Helpers;
namespace WebCamTst
{
[Activity(Label = "PanelActivity")]
public class PanelActivity : Activity
{
LibVLCSharp.Platforms.Android.VideoView videoView;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.videopanel);
videoView = FindViewById<LibVLCSharp.Platforms.Android.VideoView>(Resource.Id.videoView1);
}
protected override void OnResume()
{
base.OnResume();
PlayVideo("https://s2.moidom-stream.ru/s/public/0000000087.m3u8");
}
private void PlayVideo(string url)
{
Core.Initialize();
using (var libVLC = new LibVLC())
using (var mPlayer = new MediaPlayer(libVLC) { EnableHardwareDecoding = true })
{
videoView.MediaPlayer = mPlayer;
var _media = new Media(libVLC, url, FromType.FromLocation);
_media.Parse(MediaParseOptions.ParseNetwork);
mPlayer.Play(_media);
}
}
}
}
但不起作用。请帮帮我!
发布于 2022-05-01 07:45:02
请从一个官方的android样本开始。
它不能工作,因为Play()不是同步方法。它实际上在后台启动libvlc线程。
这意味着您的libvlc和您的播放器处理得太早,您的视频将立即停止。
其他评论:
发布于 2022-05-02 02:19:40
除了cube45 45的答案,m3u8的播放方式与常规媒体不同.
var libVLC = new LibVLC();
var media = new Media(libVLC, "https://s2.moidom-stream.ru/s/public/0000000087.m3u8", FromType.FromLocation);
await media.Parse(MediaParseOptions.ParseNetwork);
var mp = new MediaPlayer(media.SubItems.First());
mp.Play();
https://stackoverflow.com/questions/72069491
复制相似问题