Ну, поскольку в вашем коде отсутствует проверка ошибок, возможно, была проблема с cvCreateFileCapture (), и вы никогда не узнаете, пока не проверите возврат функции.
В любом случае, вы должны либо удалить, либодобавьте отладку для этого утверждения здесь:
if( !frame ) break;
Поскольку при получении первого фрейма файла возникла проблема, ваше приложение просто молча сдалось и завершило работу, создав ощущение «ничего не произошло».
Изменено это что-то вроде:
if (!frame) { printf("Uow, huge fail!\n"); break;}
Но самое главное: почему вы не используете cvCaptureFromAVI ()?Проверьте это: http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV