首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin.Android不使用LibVlc播放视频流

Xamarin.Android不使用LibVlc播放视频流
EN

Stack Overflow用户
提问于 2022-04-30 14:46:46
回答 2查看 225关注 0票数 0

我试图使用https://s2.moidom-stream.ru/s/public/0000000087.m3u8播放视频流“LibVlc”,但我只看到了一个黑色屏幕。其他线程可以正常工作,但我需要这个特定的线程。

所用代码:

代码语言:javascript
运行
复制
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);
            }
        } 

    }
}

但不起作用。请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2022-05-01 07:45:02

请从一个官方的android样本开始。

它不能工作,因为Play()不是同步方法。它实际上在后台启动libvlc线程。

这意味着您的libvlc和您的播放器处理得太早,您的视频将立即停止。

其他评论:

  • 您可以在传递到媒体播放器后立即释放()媒体。
  • 您对Parse的调用是无用的,因为它也是异步的,不需要(无论如何都要播放)
票数 0
EN

Stack Overflow用户

发布于 2022-05-02 02:19:40

除了cube45 45的答案,m3u8的播放方式与常规媒体不同.

代码语言:javascript
运行
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72069491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档