C# Unity:使用Unity播放时,视频文件的音频会出现起伏

C# Unity:使用Unity播放时,视频文件的音频会出现起伏,c#,unity3d,audio,video,C#,Unity3d,Audio,Video,在unity editor或unity应用程序(windows独立应用程序)上播放某些视频时,我遇到了一个问题。 视频文件的音频是断断续续的 如果我使用任何播放器在Windows上播放录制的视频文件,则不会出现问题 在研究了这个问题之后,我想我已经解决了这个问题:录制的视频的音频持续时间比它自己录制的视频的持续时间要长 您可以查看普通视频和录制视频的详细信息 普通视频详细信息: 录制的视频详细信息: 我的问题分为两部分: 1-持续时间的差异是否会造成此问题 2-如何统一解决此问题 priva

在unity editor或unity应用程序(windows独立应用程序)上播放某些视频时,我遇到了一个问题。 视频文件的音频是断断续续的

如果我使用任何播放器在Windows上播放录制的视频文件,则不会出现问题

在研究了这个问题之后,我想我已经解决了这个问题:录制的视频的音频持续时间比它自己录制的视频的持续时间要长

您可以查看普通视频和录制视频的详细信息

普通视频详细信息:

录制的视频详细信息:

我的问题分为两部分:

1-持续时间的差异是否会造成此问题

2-如何统一解决此问题

private IEnumerator PlayVideo(string filePath)
{
    //Add VideoPlayer to the GameObject
    _videoPlayer = gameObject.AddComponent<VideoPlayer>();

    //Add AudioSource
    _audioSource = gameObject.AddComponent<AudioSource>();

    //Disable Play on Awake for both Video and Audio
    _videoPlayer.playOnAwake = false;
    _audioSource.playOnAwake = false;
    _audioSource.Pause();

    //We want to play from video clip not from url

    //videoPlayer.source = VideoSource.VideoClip;

    // Vide clip from Url
    _videoPlayer.source = VideoSource.Url;
    _videoPlayer.url = filePath;


    //Set Audio Output to AudioSource
    _videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;

    //Assign the Audio from Video to AudioSource to be played
    _videoPlayer.controlledAudioTrackCount = 1;
    _videoPlayer.EnableAudioTrack(0, true);
    _videoPlayer.SetTargetAudioSource(0, _audioSource);

    //Set video To Play then prepare Audio to prevent Buffering
    //videoPlayer.clip = myVideoClip;
    _videoPlayer.Prepare();

    //Wait until video is prepared
    WaitForSeconds waitTime = new WaitForSeconds(1);
    _retryCount = 0;
    while (!_videoPlayer.isPrepared)
    {
        Debug.Log("Preparing Video");
        //Prepare/Wait for 15 sceonds only
        yield return waitTime;
        _retryCount++;
        if (_retryCount >= _maximumRetries)
        {
            break;
        }
    }

    _vidFrameLength = (int)_videoPlayer.frameCount;
    ProgressBar.maxValue = _vidFrameLength;

    Debug.Log("Done Preparing Video");
    VideoPlayerImage.texture = _videoPlayer.texture;

    _videoPlayer.Play();
    _audioSource.Play();
    ClipLength.text = StringHelper.ToTime((float)_videoPlayer.frameCount / _videoPlayer.frameRate, TimePreviewer.Minutes);

    while (_videoPlayer.isPlaying)
    {
        yield return null;
    }
}
private IEnumerator播放视频(字符串文件路径)
{
//将VideoPlayer添加到游戏对象
_videoPlayer=gameObject.AddComponent();
//添加音频源
_audioSource=gameObject.AddComponent();
//禁用视频和音频唤醒时播放
_videoPlayer.playOnAwake=false;
_audioSource.playOnAwake=false;
_audioSource.Pause();
//我们想从视频剪辑而不是从url播放
//videoPlayer.source=VideoSource.VideoClip;
//视频剪辑从网址
_videoPlayer.source=VideoSource.Url;
_videoPlayer.url=文件路径;
//将音频输出设置为AudioSource
_videoPlayer.audioOutputMode=VideoAudioOutputMode.AudioSource;
//将音频从视频分配到要播放的音频源
_videoPlayer.ControlleAudioTrackCount=1;
_videoPlayer.EnableAudioTrack(0,真);
_videoPlayer.SetTargetAudioSource(0,_audioSource);
//将视频设置为播放,然后准备音频以防止缓冲
//videoPlayer.clip=myVideoClip;
_videoPlayer.Prepare();
//等待视频准备好
WaitForSeconds waitTime=新的WaitForSeconds(1);
_retryCount=0;
而(!\u videoPlayer.isPrepared)
{
调试日志(“准备视频”);
//仅准备/等待15秒
收益返回等待时间;
_retryCount++;
如果(\u重试次数>=\u最大重试次数)
{
打破
}
}
_vidFrameLength=(int)\u videoPlayer.frameCount;
ProgressBar.maxValue=\u vidFrameLength;
Debug.Log(“完成准备视频”);
VideoPlayerImage.texture=\u videoPlayer.texture;
_视频播放器;
_audioSource.Play();
ClipLength.text=StringHelper.ToTime((float)\u videoPlayer.frameCount/\u videoPlayer.frameRate,TimePreviewer.Minutes);
while(\u videoPlayer.isPlaying)
{
收益返回空;
}
}

假设您正在使用VideoPlayer组件,请尝试更改
从AudioSource到Direct的音频输出模式,反之亦然,看看这是否改变了什么。

尝试在inspector中将AudioSource加载类型修改为“steaming”。

目前,我在Unity store上找到了两个视频播放器库,可以毫无问题地播放起伏的视频

在Unity解决了播放可变帧速率视频的问题之前,我一直在使用其中的一个


我知道这不是问题的解决方案,但在任何人对这个问题给出一个好的答案之前,我将使用它。

我担心这不是一个编程问题,而是“如何操作音频文件”类型的查询。你有没有试过只复制一份声音文件,然后把它截短到与视频相同的长度来测试你的理论?没有声音文件。这是一个视频文件(mp4文件),我在问题中提到的音频是视频文件的声音或音频。您是否正确播放视频?你准备好录像了吗?播放前是否等待“准备”完成?播放机正在正确播放其他视频文件。即使在播放此视频时,视频也能完美播放。它是否适用于其他视频并不重要,这并不能真正回答问题。你准备好录像了吗?播放前是否等待“准备”完成?如果我将其更改为“直接”,则视频将在没有声音的情况下播放1-加载类型用于音频剪辑,而不是音频源2-它是只读属性,只能从检查器中更改(如您所说)。这可以用于音频剪辑而不是视频文件。对不起,我的英语很差。我理解你的问题是错的。