Вроде бы нашел готовое решение, но оно не работает
http://jiasi.blogspot.com/2011/05/motion-vector-extraction.html
Пробовал заменять устаревшие функции новыми , но все равно не работает.
Есть модифицированные исходники mplayer который вытягивает вектора из видео файла в текст, но не могу найти в каком месте он это делает.
Кто нибудь решал подобные задачи с motion vectors?
Здравствуйте, grecd, Вы писали:
G>Вроде бы нашел готовое решение, но оно не работает
G>http://jiasi.blogspot.com/2011/05/motion-vector-extraction.html
G>Пробовал заменять устаревшие функции новыми , но все равно не работает.
G>Есть модифицированные исходники mplayer который вытягивает вектора из видео файла в текст, но не могу найти в каком месте он это делает.
G>Кто нибудь решал подобные задачи с motion vectors?
Таких задач не решал, но как-то игрался с флагами "AVCodecContext::debug", если выставить FF_DEBUG_MV то декодер рисует эти самые motion vectors прямо в кадре, можно поиском по исходникам найти места обращения к этому флагу, ну и получите место где "он это делает"
Здравствуйте, qwerty12345, Вы писали:
Q>Здравствуйте, grecd, Вы писали:
G>>Вроде бы нашел готовое решение, но оно не работает
G>>http://jiasi.blogspot.com/2011/05/motion-vector-extraction.html
G>>Пробовал заменять устаревшие функции новыми , но все равно не работает.
G>>Есть модифицированные исходники mplayer который вытягивает вектора из видео файла в текст, но не могу найти в каком месте он это делает.
G>>Кто нибудь решал подобные задачи с motion vectors?
Q>Таких задач не решал, но как-то игрался с флагами "AVCodecContext::debug", если выставить FF_DEBUG_MV то декодер рисует эти самые motion vectors прямо в кадре, можно поиском по исходникам найти места обращения к этому флагу, ну и получите место где "он это делает"
Стал пошагово смотреть почему-то у меня не находит никакой поток в файле
// Find the first video stream
videoStream = -1;
for (int i = 0; i < pFormatCtx->nb_streams; i++) {
AVCodecContext *cc = pFormatCtx->streams[i]->codec;
if (cc->codec_type==AVMEDIA_TYPE_VIDEO) {
// don't care FF_DEBUG_VIS_MV_B_BACK
cc->debug_mv = FF_DEBUG_VIS_MV_P_FOR | FF_DEBUG_VIS_MV_B_FOR;
videoStream = i;
break;
}
}
pFormatCtx->nb_streams равен 0; а должен быть 2.
Брал ffmpeg из git репозитория самый свежий и компилил и устанавливал в систему. Он лег в local.
исходник компилируется со всякими deprecated, но все же компилируется и исполняется.
Здравствуйте, grecd, Вы писали:
офигеть жандармы, уже забанили
Я хотел сказать, наверное вы там не вызываете av_find_stream_info
должно быть:
AVFormatContext* formatCnt_ = 0;
if (0 != av_open_input_file(&formatCnt_, aFilePath)) return false;
if (av_find_stream_info(formatCnt_) < 0){
av_close_input_file(formatCnt_);
return false;
}
for(unsigned int i = 0; i < formatCnt_->nb_streams; i++){
// ...
}
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, grecd, Вы писали:
А>офигеть жандармы, уже забанили
А>Я хотел сказать, наверное вы там не вызываете av_find_stream_info
А>должно быть:
А>А> AVFormatContext* formatCnt_ = 0;
А> if (0 != av_open_input_file(&formatCnt_, aFilePath)) return false;
А> if (av_find_stream_info(formatCnt_) < 0){
А> av_close_input_file(formatCnt_);
А> return false;
А> }
А> for(unsigned int i = 0; i < formatCnt_->nb_streams; i++){
А> // ...
А> }
А>
У меня все так как вы написали. Была мысль что версия заголовков не совпадает с версией библиотек.
Вычистил в synaptic'e ffmpeg и все равно. по логам gcc не скажешь что что-то не то.