MCIWindow с длинным путем к файлу

Я столкнулся со сценарием в моем проекте, где я создаю окно 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, все отлично работает с показом и воспроизведением медиа. Однако с shortPath с длиной> 128, медиа не воспроизводится. Интересно, что в VideoMedia::play() функция выше, журналы показывают, что MCIWndPlay() вызов выполняется нормально, так как журнал ошибок внутри if не виден.

Мне интересно, если это только тот случай, когда MCIWnd не может поддерживать длинный путь к файлу, хотя я не видел ничего в документации, чтобы предположить, что это так?

0

Решение

От просмотра документации Вот, это говорит:

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 символов, которое появляется.

1

Другие решения


По вопросам рекламы [email protected]