MCIWindow具有长文件路径

时间:2015-04-02 19:21:09

标签: c++ mci

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

我正在创建一个新的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;
}

如果我使用长度为&lt; m_window的{​​{1}}创建shortPath 128,一切都与媒体展示和播放完美结合。但是,shortPath长度为&gt; 128,没有播放媒体。有趣的是,在上面的VideoMedia::play()函数中,日志表明MCIWndPlay()调用正在执行,因为没有看到if中的错误日志。

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

1 个答案:

答案 0 :(得分:1)

通过查看文档here,它说:

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个字符限制。