请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

视频播放太快

  1. 我设备采集支持的帧率如下
    [0]: ‘YUYV’ (YUYV 4:2:2)
    Size: Discrete 640x480
    Interval: Discrete 0.033s (30.000 fps)
    Interval: Discrete 0.067s (15.000 fps)
    Interval: Discrete 0.100s (10.000 fps)
    Interval: Discrete 0.200s (5.000 fps)

我代码之中设置的参数如下
nRet = av_dict_set(&lpOptions,“video_size”, “640x480”, 0);
nRet = av_dict_set(&lpOptions,“framerate”, “30”, 0); //无论怎么改都不行

采集到之后播放ffplay -s 640x480 -pix_fmt yuyv422 video3.yuv 速度太快,

正在回答 回答被采纳积分+3

4回答

李超 2021-01-21 19:04:02

把帧率设置为5帧试试

0 回复 有任何疑惑可以回复我~
At小明同学 2021-01-21 16:19:02

可能的原因是采集到的帧率低于设定的帧率,真实存储的帧率要已实现存储的为准。可以通过打印的方式统计一秒钟可以存储多少帧,摄像头每秒可以出30帧数据,但是只保存了20帧,正常情况我们会把摄像头的数据扔到一个队列中,不会把读数据和写数据放在同一个线程中的! 看看线程中有没有啥耗时操作

0 回复 有任何疑惑可以回复我~
李超 2021-01-05 23:45:44

把ffplay 的播放帧率设置为15帧试试

0 回复 有任何疑惑可以回复我~
  • 提问者 heaven强 #1
    老师我讲ffplay的帧率设置为7帧 那么播放速度和我录制的视频基本上速度相仿,现在的问题是为什么在代码之中的写的30 播放的时候却需要设置不同的值 感谢
    回复 有任何疑惑可以回复我~ 2021-01-06 09:19:43
  • 李超 回复 提问者 heaven强 #2
    说明你采集时你的设备采集不了那么快
    回复 有任何疑惑可以回复我~ 2021-01-06 11:41:52
  • At小明同学 回复 提问者 heaven强 #3
    可能的原因是采集到的帧率低于设定的帧率,真实存储的帧率要已实现存储的为准。可以通过打印的方式统计一秒钟可以存储多少帧,摄像头每秒可以出30帧数据,但是只保存了20帧,正常情况我们会把摄像头的数据扔到一个队列中,不会把读数据和写数据放在同一个线程中的! 看看线程中有没有啥耗时操作
    回复 有任何疑惑可以回复我~ 2021-01-21 16:18:03
提问者 heaven强 2021-01-05 23:07:51

使用的播放命令

ffplay -s 640x480 -pix_fmt yuyv422 -framerate 30 video_test.yuv

以下是录制时候的信息

[video4linux2,v4l2 @ 0x7f6d34000cc0] fd:19 capabilities:84a00001
[video4linux2,v4l2 @ 0x7f6d34000cc0] Current input_channel: 0, input_name: Camera 1, input_std: 0
[video4linux2,v4l2 @ 0x7f6d34000cc0] The V4L2 driver changed the pixel format from 0x32315559 to 0x56595559
[video4linux2,v4l2 @ 0x7f6d34000cc0] Trying to set codec:rawvideo pix_fmt:yuv420p
[video4linux2,v4l2 @ 0x7f6d34000cc0] The V4L2 driver changed the pixel format from 0x32315559 to 0x56595559
[video4linux2,v4l2 @ 0x7f6d34000cc0] Trying to set codec:rawvideo pix_fmt:yuv420p
[video4linux2,v4l2 @ 0x7f6d34000cc0] The V4L2 driver changed the pixel format from 0x32315659 to 0x56595559
[video4linux2,v4l2 @ 0x7f6d34000cc0] Trying to set codec:rawvideo pix_fmt:yuv422p
[video4linux2,v4l2 @ 0x7f6d34000cc0] The V4L2 driver changed the pixel format from 0x50323234 to 0x56595559
[video4linux2,v4l2 @ 0x7f6d34000cc0] Trying to set codec:rawvideo pix_fmt:yuyv422
[video4linux2,v4l2 @ 0x7f6d34000cc0] Setting time per frame to 1/30


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信