VLCSharp Unity3D,视频流冻结但音频仍在工作

问题描述

我想获得一个 RTMP 链接并在我的统一项目中流式传输视频,但是,它工作正常......只有 4 帧长,因为之后它冻结了,但音频仍在播放。

对于此代码,我使用的是 VSCode、Unity3D 和创建者在其 github 上的公开示例。

 // This is the start,where i initialize things of course hahauhsuhs
void Start()
{
    Core.Initialize(Application.dataPath);

    _libVLC = new LibVLC();
    PlayPause();
}


 //Then here we have the method play and Pause,where we play Media Player and give him the media URL that works for a few frames.

 private void PlayPause()
{
    if (_mediaPlayer == null)
    {
        _mediaPlayer = new MediaPlayer(_libVLC);
    }
    if (_mediaPlayer.IsPlaying)
    {
        _mediaPlayer.Pause();
    }
    else
    {
        _isPlaying = true;

        if (_mediaPlayer.Media == null)
        {
            // playing remote media
            _mediaPlayer.Media = new Media(_libVLC,new Uri(URL));
        }

        _mediaPlayer.Play();

    }
}

// This method will be execute every frame and do some crazy stuff that i can´t explane right Now.

private void Update()
{
    //A few checks before executing video
    if (!_isPlaying) return;

    if (URL.Equals(null)) URL = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"; //if URL is null give the BigChungus Bunny video

    //Execute Video
    if (_tex == null)
    {
        // If received size is not null,it and scale the texture
        uint i_videoHeight = 0;
        uint i_videoWidth = 0;

        _mediaPlayer.Size(0,ref i_videoWidth,ref i_videoHeight);
        var texptr = _mediaPlayer.GetTexture(out bool updated);

        if (i_videoWidth != 0 && i_videoHeight != 0 && updated && texptr != IntPtr.Zero)
        {
            Debug.Log("Creating texture with height " + i_videoHeight + " and width " + i_videoWidth);
            _tex = Texture2D.CreateExternalTexture((int)i_videoWidth,(int)i_videoHeight,TextureFormat.RGBA32,false,true,texptr);

            RenderSettings.skyBox.mainTexture = _tex;
        }
    }
    else if (_tex != null)
    {
        var texptr = _mediaPlayer.GetTexture(out bool updated);
        if (updated)
        {
            _tex.UpdateExternalTexture(texptr);
        }
    }
    
}

这是我关于 stackover 流程​​的第一个真正的问题,所以这篇文章可能有一些问题,我愿意提出改进建议。

解决方法

我发现问题出在我的流服务器延迟上,而不是我的统一项目上。 但仍然......有一种方法可以让视频以高延迟播放?