Добыча motion vectors из видео потока посредством ffmpeg
От: grecd  
Дата: 27.12.13 08:32
Оценка: +1
Вроде бы нашел готовое решение, но оно не работает

http://jiasi.blogspot.com/2011/05/motion-vector-extraction.html
Пробовал заменять устаревшие функции новыми , но все равно не работает.

Есть модифицированные исходники mplayer который вытягивает вектора из видео файла в текст, но не могу найти в каком месте он это делает.

Кто нибудь решал подобные задачи с motion vectors?
ffmpeg motion vectors
Re: Добыча motion vectors из видео потока посредством ffmpeg
От: qwerty12345  
Дата: 29.12.13 12:45
Оценка:
Здравствуйте, 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 прямо в кадре, можно поиском по исходникам найти места обращения к этому флагу, ну и получите место где "он это делает"
Re[2]: Добыча motion vectors из видео потока посредством ffmpeg
От: grecd  
Дата: 30.12.13 13:25
Оценка:
Здравствуйте, 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, но все же компилируется и исполняется.
Re[3]: Добыча motion vectors из видео потока посредством ffmpeg
От: Аноним  
Дата: 30.12.13 14:12
Оценка:
Здравствуйте, grecd, Вы писали:

G>Здравствуйте, qwerty12345, Вы писали:


Возмите файл из
Re[3]: Добыча motion vectors из видео потока посредством ffmpeg
От: Аноним  
Дата: 30.12.13 14:28
Оценка:
Здравствуйте, 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++){
        // ...
    }
Re[4]: Добыча motion vectors из видео потока посредством ffmpeg
От: grecd  
Дата: 31.12.13 08:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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 не скажешь что что-то не то.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.