采集到的yuv视频 在播放时为什么像是快进似的 , 求高手指点一二, 应用程序开发接口用的v4l2

aj_3 2014-01-09 02:27:16
问题困扰了很久了,望有人理我~~~
...全文
478 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongjiawei316 2014-01-23
  • 打赏
  • 举报
回复
引用 2 楼 dongjiawei316 的回复:
哦!如果你的画面不是播快了,而是看上去不连贯,则是你采集的时候丢了很多帧数据。比如说每秒25帧的数据,你每秒才采了1帧,看上去可不就是1跳1跳的
正如我之前怀疑的,可能你代码处理得太慢了?
aj_3 2014-01-17
  • 打赏
  • 举报
回复
引用 14 楼 falloutmx 的回复:
采YUV很容易的,做过好多次了。v4l2只用过一次,在TI芯片上用的。你统计下两次采集到的间隔就知道是不是按25帧采的了
你好 ,我之前没看清, 今天又调了下, 发现 两次采集到的间隔 是100多毫秒~ 原本以为播放像“快进”的原因是采集太快了,现在发现其实是采集过慢,平均一秒才10帧左右, (另外我有试过通过程序 再减小1秒的帧数,就是采集一帧,空一帧,再采集,那么就变成了1秒是5帧, 然后保存视频再播放观察,发现播放的更快了,所以也就确定,之前的 “快进”现象其实是每秒采集的帧数过少~) 可是摄像头在windows在 用qq视频 是正常画面的 这个是什么原因呢? 看一些帖子有说 采集 yuv 640x480 的 可能只是支持5帧 于是我又将分辨率调小了,可是间隔还是 1秒10帧。。。 求解啊~~~· 能不能给的启发 谢过了~
aj_3 2014-01-14
  • 打赏
  • 举报
回复
引用 16 楼 hj5225244 的回复:
[quote=引用 13 楼 Wujunjie_66460 的回复:] [quote=引用 9 楼 hj5225244 的回复:] [quote=引用 8 楼 Wujunjie_66460 的回复:] [quote=引用 7 楼 hj5225244 的回复:] 自己写个程序实现实时播放就可以了
我是要保存下来的,供日后查看的。。。。[/quote] 那就是的采集每一帧的时间周期和播放每一帧的时间周期不一致[/quote] 那这个我要怎么做, 请问你们到底有没有 在 linux上使用 v4l2 这个编程接口 采集过 yuv的视频数据,怎么老是话说到一半~[/quote] 刚刚开始的时候没有看到你是用的V4L2接口,所以不确定你是用的什么处理器,不知道怎么和你说。既然是linux的,你可以C++来开发上层,利用Qt的库,在采集的时候设立一个定时器就可以了,比如30ms采集一帧数据并且保存数据。到时候播放的时候,同样设立一个定时器,30ms播放一帧图片,就可以了。[/quote] 我的程序中确实没有设立什么定时器,因为我的理解是,我们只要在程序中设置好 FPS 那么采集时间间隔应该是硬件帮我们做的,不用定时了。 不过想看看时间间隔到底有没有像设置FPS(25 = 40ms)那样一致 所以上星期在 程序中添加了 计算采集时间间隔的代码 发现有问题 帧间隔平均都是 20多ms 我的程序是用 select 监听摄像头看有没有新帧, 那么做定时器的话,我是要怎么做 比如在select 后 发现时间小于 40ms 就丢弃这帧?然后到了40ms就将帧加入文件尾部,然后再重新定时?
falloutmx 2014-01-10
  • 打赏
  • 举报
回复
采YUV很容易的,做过好多次了。v4l2只用过一次,在TI芯片上用的。你统计下两次采集到的间隔就知道是不是按25帧采的了
aj_3 2014-01-10
  • 打赏
  • 举报
回复
引用 9 楼 hj5225244 的回复:
[quote=引用 8 楼 Wujunjie_66460 的回复:] [quote=引用 7 楼 hj5225244 的回复:] 自己写个程序实现实时播放就可以了
我是要保存下来的,供日后查看的。。。。[/quote] 那就是的采集每一帧的时间周期和播放每一帧的时间周期不一致[/quote] 那这个我要怎么做, 请问你们到底有没有 在 linux上使用 v4l2 这个编程接口 采集过 yuv的视频数据,怎么老是话说到一半~
aj_3 2014-01-10
  • 打赏
  • 举报
回复
引用 11 楼 falloutmx 的回复:
引用
我从网上下的那个yuv视频能够正常的播放是因为它的采集频率刚好跟这个pyuv 固有的播放帧率是刚好的
就是这样的。 还有,一般存储不用yuv存的,因为数据量太大了。我刚看了下pYUV,有个参数是设播放帧率的
就算编码后保存,播放也是一样的(在编码的时候我也有添加帧率信息) 所以不管我是怎么保存,我必须采集到能正常播放yuv数据,这样编码后才是正常播放的。。。。 这些我都试过! 现在就是确定了我的采集过程是有问题的,否则网上下的yuv文件为什么就可以正常播放,而且用的是同样的播放器! 注意pYUV有设播放帧率,这我之前就知道(你之前的 “固有帧率” 我就奇怪了)所以我把帧率设置成和程序中设置的一样,但是还是不行 ,还有你有实现过吗(采集到正常的 yuv 数据,)
falloutmx 2014-01-10
  • 打赏
  • 举报
回复
引用
我从网上下的那个yuv视频能够正常的播放是因为它的采集频率刚好跟这个pyuv 固有的播放帧率是刚好的
就是这样的。 还有,一般存储不用yuv存的,因为数据量太大了。我刚看了下pYUV,有个参数是设播放帧率的
dongjiawei316 2014-01-10
  • 打赏
  • 举报
回复
elecard可以设定帧率
stan_linux 2014-01-10
  • 打赏
  • 举报
回复
引用 13 楼 Wujunjie_66460 的回复:
[quote=引用 9 楼 hj5225244 的回复:] [quote=引用 8 楼 Wujunjie_66460 的回复:] [quote=引用 7 楼 hj5225244 的回复:] 自己写个程序实现实时播放就可以了
我是要保存下来的,供日后查看的。。。。[/quote] 那就是的采集每一帧的时间周期和播放每一帧的时间周期不一致[/quote] 那这个我要怎么做, 请问你们到底有没有 在 linux上使用 v4l2 这个编程接口 采集过 yuv的视频数据,怎么老是话说到一半~[/quote] 不过要对YUV进行格式转换,转到RGB565或者RGB888,如果你的处理器平台主频不高,建议另外想办法
stan_linux 2014-01-10
  • 打赏
  • 举报
回复
引用 13 楼 Wujunjie_66460 的回复:
[quote=引用 9 楼 hj5225244 的回复:] [quote=引用 8 楼 Wujunjie_66460 的回复:] [quote=引用 7 楼 hj5225244 的回复:] 自己写个程序实现实时播放就可以了
我是要保存下来的,供日后查看的。。。。[/quote] 那就是的采集每一帧的时间周期和播放每一帧的时间周期不一致[/quote] 那这个我要怎么做, 请问你们到底有没有 在 linux上使用 v4l2 这个编程接口 采集过 yuv的视频数据,怎么老是话说到一半~[/quote] 刚刚开始的时候没有看到你是用的V4L2接口,所以不确定你是用的什么处理器,不知道怎么和你说。既然是linux的,你可以C++来开发上层,利用Qt的库,在采集的时候设立一个定时器就可以了,比如30ms采集一帧数据并且保存数据。到时候播放的时候,同样设立一个定时器,30ms播放一帧图片,就可以了。
aj_3 2014-01-10
  • 打赏
  • 举报
回复
引用 14 楼 falloutmx 的回复:
采YUV很容易的,做过好多次了。v4l2只用过一次,在TI芯片上用的。你统计下两次采集到的间隔就知道是不是按25帧采的了
那你当时 v4l2的 是怎么做的 是用 select 这个函数监听设备吗,如果有数据就读出直接加入到文件尾部
stan_linux 2014-01-09
  • 打赏
  • 举报
回复
引用 8 楼 Wujunjie_66460 的回复:
[quote=引用 7 楼 hj5225244 的回复:] 自己写个程序实现实时播放就可以了
我是要保存下来的,供日后查看的。。。。[/quote] 那就是的采集每一帧的时间周期和播放每一帧的时间周期不一致
aj_3 2014-01-09
  • 打赏
  • 举报
回复
引用 7 楼 hj5225244 的回复:
自己写个程序实现实时播放就可以了
我是要保存下来的,供日后查看的。。。。
stan_linux 2014-01-09
  • 打赏
  • 举报
回复
自己写个程序实现实时播放就可以了
aj_3 2014-01-09
  • 打赏
  • 举报
回复
引用 4 楼 falloutmx 的回复:
这个我留言给你回复了啊 没有帧率信息的时候播放器是按固定速率播的,YUV采集的时候跟这个速率匹配了就是正常速度。帧率信息一般PS、TS这些封装才会有,H264也没有帧率信息。如果你要编码的话,直接按采集帧率编出来就行了,不用考虑帧率。 pYUV不是播放器,就是个yuv图像显示工具,按固定速度播的
可是 我现在是没有编码 直接上 yuv的原始视频 播放的时候会这种状况。。 我从网上下来的 yuv原始视频就不会 一样的播放器 不一样的效果 而且现在我也在 程序中添加了帧率的信息的代码,效果还是一样的,代码如下: streamParm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; streamParm.parm.capture.capturemode = V4L2_MODE_HIGHQUALITY; streamParm.parm.capture.timeperframe.denominator = 25; streamParm.parm.capture.timeperframe.numerator = 1; 除非 像你说的 我从网上下的那个yuv视频能够正常的播放是因为它的采集频率刚好跟这个pyuv 固有的播放帧率是刚好的 还有,按照你的意思是, 我采集的程序没有错,只是播放器需要换一个可以调节帧率的播发器就ok了,那么你给介绍个看看 谢谢~~~·
aj_3 2014-01-09
  • 打赏
  • 举报
回复
可是 我现在是没有编码 直接上 yuv的原始视频 播放的时候会这种状况。。 我从网上下来的 yuv原始视频就不会 一样的播放器 不一样的效果 而且现在我也在 程序中添加了帧率的信息的代码,效果还是一样的,代码如下: streamParm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; streamParm.parm.capture.capturemode = V4L2_MODE_HIGHQUALITY; streamParm.parm.capture.timeperframe.denominator = 25; streamParm.parm.capture.timeperframe.numerator = 1; 除非 像你说的 我从网上下的那个yuv视频能够正常的播放是因为它的采集频率刚好跟这个pyuv 固有的播放帧率是刚好的 还有,按照你的意思是, 我采集的程序没有错,只是播放器需要换一个可以调节帧率的播发器就ok了,那么你给介绍个看看 谢谢~~~·
falloutmx 2014-01-09
  • 打赏
  • 举报
回复
这个我留言给你回复了啊 没有帧率信息的时候播放器是按固定速率播的,YUV采集的时候跟这个速率匹配了就是正常速度。帧率信息一般PS、TS这些封装才会有,H264也没有帧率信息。如果你要编码的话,直接按采集帧率编出来就行了,不用考虑帧率。 pYUV不是播放器,就是个yuv图像显示工具,按固定速度播的
aj_3 2014-01-09
  • 打赏
  • 举报
回复
每秒25帧的, 不是断断续续的 就是跟快进一样~ 我用的播放器是 pYUV
dongjiawei316 2014-01-09
  • 打赏
  • 举报
回复
哦!如果你的画面不是播快了,而是看上去不连贯,则是你采集的时候丢了很多帧数据。比如说每秒25帧的数据,你每秒才采了1帧,看上去可不就是1跳1跳的
dongjiawei316 2014-01-09
  • 打赏
  • 举报
回复
请问你用什么软件播的,如果是elecard的话,是正常的,它没有帧率控制机制,只要CPU跑得动,就会不断的播
内容概要:本文围绕单相统一功率因数变流器的控制技术展开深入研究,提出并实现了基于不平衡d-q坐标系的控制器设计方案,旨在提升单相电压源逆变器(VSI)或交直变流器在统一功率因数模式下的运行性能。研究采用同步旋转参考坐标系下的控制策略,有效解决了单相系统中功率波动与电流畸变等问题,增强了系统的动态响应能力、稳态精度及抗干扰性。通过Simulink仿真平台构建完整的系统模型,对控制算法进行了全面验证,涵盖启动过程、负载突变、电网扰动等多种工况,充分展示了该方法的可行性与优越性。同,文中提供了详细的仿真资源获取途径,便于读者复现与拓展研究。; 适合人群:具备电力电子、自动控制及电力系统等相关专业知识背景,从事新能源发电、微电网、电能质量治理、变流器控制等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于单相逆变器实现高功率因数并网控制的技术开发与优化;②为弱电网环境下变流器稳定运行控制策略的研究提供仿真基础与技术支撑;③服务于高校相关课程教学、科研课题攻关及实际工程项目中的控制器设计与验证工作。; 阅读建议:建议读者结合所提供的Simulink仿真模型进行动手实践,重点掌握d-q坐标变换、电流环设计、PI参数整定等关键环节,并尝试将该方法推广至其他类型的单相电力电子系统中,进一步深化对同步参考坐标系下控制理论的理解与应用。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧