秒速|5厘米°- 2021-05-13 14:28 采纳率: 50%
浏览 60
已采纳

关于MCI播放AVI视频的问题

最近想利用mciSendCommand函数播放avi格式的视频,但是遇到了一些问题。

在执行播放时,返回错误代码276,返回文本信息是设备驱动程序尚未准备就绪。 如下图:

查了一下百度,按照百度所说,system.ini中如果安装了驱动,mci段会有相应的设置,然而我的mci段什么都没有。


初步确定,需要mciavi.drv驱动,但是我下载了却不知道怎么安装,我是Win10 64位系统。

希望大神为我解答,我该如何解决这个问题。。或者推荐一些可以播放avi视频的库,可以实现从指定帧(时间)播放,也行,opencv除外。。

下面是我的代码:
void Video::test()
{
        MCI_OPEN_PARMS OpenParms;
        UINT wDeviceID;
        DWORD opReturn;
        wchar_t* error[256];

        QString file = "test.avi";
        QString deviceType = "avivideo";
        LPCWSTR FileName = reinterpret_cast<const wchar_t *>(file.utf16());
        LPCWSTR dt = reinterpret_cast<const wchar_t *>(deviceType.utf16());
        OpenParms.lpstrDeviceType = dt;
        OpenParms.lpstrElementName = FileName;

        opReturn = mciSendCommand(NULL, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD_PTR)&OpenParms);
        if (opReturn == 0)
                wDeviceID = OpenParms.wDeviceID;
        else {
                mciGetErrorString(opReturn, (LPWSTR)error, 256);
                QString text = QString::fromStdWString((LPWSTR)error);
                qDebug() << opReturn << " " << text;
                wDeviceID = NULL;
                return;
        }
        MCI_PLAY_PARMS PlayParms;
        // 指定从什么地方(时间)播放
        PlayParms.dwFrom = 0;
        opReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_TO, (DWORD_PTR)&PlayParms);
        mciGetErrorString(opReturn, (LPWSTR)error, 256);
        QString text = QString::fromStdWString((LPWSTR)error);
        qDebug() << opReturn << " " << text;
}

  • 写回答

4条回答 默认 最新

  • 秒速|5厘米°- 2021-05-16 17:49
    关注

    已解决

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何删除这个虚拟音频
  • ¥50 hyper默认的default switch
  • ¥15 网站打不开,提示502 Bad Gateway
  • ¥20 基于MATLAB的绝热压缩空气储能系统代码咨询
  • ¥15 R语言建立随机森林模型出现的问题
  • ¥20 unity内置语言切换的按钮设置
  • ¥15 中级微观经济学,生产可能性边界问题
  • ¥15 TCP传输时不同网卡传输用时差异过大
  • ¥15 请各位看看我写的属于什么算法,或者有更正确的写法?
  • ¥15 html5 qrcode 扫描器