0

我在我的项目中遇到了一个场景,我正在创建一个 MCI 窗口以播放一些视频,其中当传递给它的文件路径长度超过 128 个字符时,它无法正确播放。

我正在创建一个新的 MCIWindow,如下所示:

m_window = MCIWndCreate( _owner, GetModuleHandle(NULL), WS_CHILD|MCIWNDF_NOERRORDLG|MCIWNDF_NOPLAYBAR|MCIWNDF_NOMENU, shortPath.c_str() );

稍后将通过执行以下操作来播放它:

bool VideoMedia::play() 
{
    logStream().I() << "[VideoMedia::play] start\n";

    if ( MCIWndPlay( m_window ) != 0 )
    {
        logStream().E() << "VideoMedia::play " << "\n";
    }
    logStream().I() << "[VideoMedia::play] end\n";
    return true;
}

在我创建m_window使用shortPath长度 < 128 的情况下,媒体显示和播放一切正常。但是,如果 ashortPath长度 > 128,则不会播放任何媒体。有趣的是,在上面的VideoMedia::play()函数中,日志表明MCIWndPlay()调用执行良好,因为没有看到 if 内部的错误日志。

我想知道这是否只是 MCIWnd 不能支持长文件路径的情况,尽管我在文档中没有看到任何建议是这种情况?

4

1 回答 1

1

通过查看此处的文档,它说:

NOTE: MCI device has a path-length limit of 128 characters! If your media files are buried inside the nested subfolders and the path is longer than 128 characters, your media won't play.

因此,唯一真正的解决方案是确保路径不会超过它出现的 128 个字符限制。

于 2015-04-03T13:07:41.997 回答