Chinaunix首页 | 论坛 | 博客
  • 博客访问: 663022
  • 博文数量: 109
  • 博客积分: 6081
  • 博客等级: 准将
  • 技术积分: 1318
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 10:28
文章分类
文章存档

2011年(8)

2010年(39)

2009年(62)

分类: LINUX

2011-05-19 17:10:42

http://victor.csie.org/blog/archives/362
----------------------------------------------------------------------
Motion Vector Extraction June 10

Filed under Uncategorized by victor | 1 comment

為了做 MULTIMEDIA ANALYSIS AND INDEXING 這門課的 project,我們這組需要從 MPEG video 裡面取出 motion vector(它在 MPEG video 裡的用途是用來做壓縮。一個物體在畫面裡面移動時,其實只需要描述它的位移,而不需整個重新 encode)。

不知道是不是因為大部分的人需要的都是 video 的 frame,而不是 motion vector(其實在解壓縮時只差一步),我 google 了好久都找不到工具可以用。後來發現 ffmpeg 的 ffplay 可以直接把 motion vector 邊撥邊畫出來,但是還是沒辦法 dump 出來。

$ ffplay -vismv 3 xxx.mpg

vismv 那個參數其實是三個 bit,第一個 bit 代表 P-Frame,第二個代表 B-Frame 的 forward motion vector,第三個 bit 則是 B-Frame 的 backward vector。

不過,這只能看。所以我參考 Using libavformat and libavcodec 跟 ffplay 的 source code 寫了一個程式。這個程式可以把 video 每個 frame (除了沒有 motion vector 的 I-Frame)的 motion vector 取出來。如果要改成取第幾個 frame、或是某個 range 之類的,也很好改。

g++ compile 時需要加上 -lavcodec -lavformat 兩個參數,當然也要先裝上 libavcodec 跟 libavformat 兩個 library。有裝 ffmpeg 就會有。




------------------------------------------------------------------------
/usr/local/include/libavutil/common.h: In function 'int32_t av_clipl_int32_c(int64_t)':
/usr/local/include/libavutil/common.h:168: error: 'UINT64_C' was not declared in this scope
----------------
vi /usr/local/include/libavutil/common.h

#ifdef __cplusplus
 #define __STDC_CONSTANT_MACROS
 #ifdef _STDINT_H
  #undef _STDINT_H
 #endif
 # include
#endif

----------------------
在包含 ffmpeg 的相关头文件
extern "C"
{
#include"filename.h"
}

阅读(7536) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

Mr_zhu09122018-05-03 21:37:04

你好,您的博文里面motion_vector.cpp也能给我发一个吗?我邮箱2941746806@qq.com。非常感谢!

ctl_cug2013-07-09 16:54:02

ctl_cug:我的邮箱:kevin_now@163.com

非常感谢!

回复 | 举报

ctl_cug2013-07-09 16:53:34

ctl_cug:请问楼主,您这篇博文中提到的motion_vector.cpp文件如何下载?能否提供给我一个?

我的邮箱:kevin_now@163.com

回复 | 举报

ctl_cug2013-07-09 16:44:20

请问楼主,您这篇博文中提到的motion_vector.cpp文件如何下载?能否提供给我一个?