我在我的项目中遇到过一个场景,我正在创建一个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不能支持长文件路径的情况,虽然我没有在文档中看到任何暗示这种情况的情况?
答案 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个字符限制。