主题 : 三星tiny4412开发板摄像头MFC硬编码视频使用VLC播放过快且出现横纹 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
楼主  发表于: 2014-08-19 16:53

 三星tiny4412开发板摄像头MFC硬编码视频使用VLC播放过快且出现横纹

我是采用的三星4412的MFC对摄像头采集的视频进行硬件编码,编码后存储成.h264文件,然后取出来直接用VLC进行播放发现开始的一段总是有横纹,而且在非开始部分如果晃动的话,偶尔也会出现类似于电视换台似的横纹,不知道是什么缘故?

我起初直接用硬件编码器对一个yuv文件进行编码输出H264文件,然后用VLC进行播放时就没有出现横纹,而且我直接用摄像头采集的数据不经过编码,直接转换成RGB数据然后在板端的LCD上实时预览也是很好没有横纹的,为什么偏偏我用摄像头采集视频之后进行硬编码,然后用VLC播放就出现横纹呢?我对视频的东西不是太懂,求大神现身指点。。。

另:说明一下,我用摄像头采集到的是YUV422即YUYV格式的视频,但是MFC编码器只支持NV12M格式的,所以我先用4412自带的FIMC转换器进行了一下转换,将YUV422转换成了NV12M然后再用MFC进行编码保存的。。。

级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
1楼  发表于: 2014-08-19 16:59
这里是VLC播放视频的截图

级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
2楼  发表于: 2014-08-19 17:00
我现在的问题有两个,一个就是这个横纹,另外一个,我发现输出的H264视频文件的帧率不对劲,播放的速度明显过快,正常播放就跟快进一样。。。我设置的是30fps,但是我对着秒表录像,结果秒表走了一秒,只经过了7-8帧,很是奇怪。。。我用V4L2查询摄像头的输出帧率是30帧,我把MFC编码的输入帧率也设置成30fps,而且貌似MFC默认的输出帧率也是30fps,播放的时候帧率是30帧,但是明显就跟快进一样,实际上7-8帧秒表就走了一秒。。。。

这里我怀疑是中间环节这个FIMC对摄像头视频进行转换的时候把帧率给我降低了。。。但是无奈的是这个FIMC居然不支持V4L2的帧率参数的设置和查询。。搞得我好郁闷,VIDIOC_G_PARM根本无法对FIMC-m2m设备进行操作,一操作就报错不支持。。

前面横纹的问题是不是和这个帧率的问题也有关系,所以我想先解决这个帧率不对的问题,但是现在无从下手,这个该死的MFC编码器和FIMC也没有一个API文档,搞个什么呢都不能调用,或者接口改了我也不晓得。。。

求大神现身指点下,我这个到底是怎么回事?另外有用过三星芯片进行摄像头编码的最好现身讲讲要点。。。
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
3楼  发表于: 2014-08-20 11:03
自顶!
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
4楼  发表于: 2014-08-20 11:37
我现在增加了一些MFC编码的配置参数,横纹已经没有了,但是视频正常播放还是跟快进一样,30fps的输出帧率,但是录像里面的秒表在过了7-8帧的样子就跑了一秒,还是不对劲啊。。。这个问题有没有大神解答一下啊。。。
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
5楼  发表于: 2014-08-20 11:45
再顶
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
6楼  发表于: 2014-08-20 14:39
晕,,是错觉么。。加了参数还是有横纹。。。特别是晃动的时候。。
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
7楼  发表于: 2014-08-20 15:43
我晕死。。。这个垃圾USB摄像头的输出帧率就只有7-8fps。。。太坑了吧

我查询这个罗技USB摄像头的输出格式是YUV422,即YUYV,分辨率是640X480,帧率是30fps。。。

这个帧率是我是通过ioctl的VIDIOC_G_PARM方法查询到的。。
GET USBcamera streamparm:
        numerator =1
        denominator=30
        capturemode=0
输出格式:
Current data format information:
        width:640
        height:480
        format:YUV 4:2:2 (YUYV)

但是为什么我实际通过每次DQBUF出队列以后打印一次当前时间来测得的时间间隔是132ms,也就是实际帧率是7fps。。。这么久才给我输出一帧。。。。为什么啊 。。为什么查询出来的是30fps呢。。。
级别: 新手上路
UID: 106690
精华: 0
发帖: 36
金钱: 180 两
威望: 36 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-07-31
最后登录: 2017-09-13
8楼  发表于: 2014-08-22 13:47
我晕。。。放了这么多天无人问津啊。。。友善这论坛也太差劲了。。。
级别: 新手上路
UID: 104867
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2014-06-07
最后登录: 2015-02-14
9楼  发表于: 2014-08-22 15:58
我来了