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

关于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条)

报告相同问题?

悬赏问题

  • ¥20 R语言单细胞测序 对seurat对象进行标准化时出现问题
  • ¥15 Anaconda navigator updateor一直更新
  • ¥15 请问如何在matlab里使用raven工具?
  • ¥100 关于ios手游充值到一定金额,再点充值提示公众号的问题。
  • ¥15 求一个stm32串口控制程序
  • ¥20 Windows 驱动开发版本疑问相关
  • ¥15 MAC 未能打开磁盘映像
  • ¥15 fastcap使用,二维导体输入问题
  • ¥15 hosts修改后不能访问
  • ¥15 关于化学反应速率C++编译问题/FLUENT