在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv视频数据

这篇具有很好参考价值的文章主要介绍了在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv视频数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用命令从视频提取出yuv数据

提取yuv视频数据

提取命令:

ffmpeg -i ./cl.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

./cl.mp4为当前目录下的cl.mp4视频文件
-an其中a代表是audio,n代表是none,意思就是过滤掉音频
-c:v代表的是视频的编解码器
rawvideo代表我们使用rawvideo这个工具对视频进行处理
-pix_fmt yuv420p表示我们指定输出yuv视频的格式,这里我们指定为yuv420p
最后一个就是我们输出的yuv文件名。

播放提取出来的yuv视频数据命令

ffplay -pix_fmt yuv420p -s 1440x720 out.yuv

单独播放yuv的单个分量命令
以播放y分量为例

ffplay -pix_fmt yuv420p -s 1440x720 -vf extractplanes='y' out.yuv

如果要播放其他分量话,更改extractplanes='y’参数即可

单独提取视频的y分量或u、v分量

提出命令:

ffmpeg -i ./cl.mp4 -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.yuv -map '[u]' u.yuv -map '[v]' v.yuv

通过filter_complex复杂滤波器输出多个分量

播放命令:

ffplay -pix_fmt gray -s 1440x720 y.yuv

使用gray指定播放单色
如果要播放u分量或者v分量的话,需要考虑到yuv的格式,由于默认的是yuv420的格式,所以分辨率的长和宽需要除以2.(具体的yuv格式自己去百度,在这里我就不介绍了)

通过摄像头获取yuv数据

在这里我就废话不多说直接放代码直观明了

#include "ffmpeg_function.h"
void ffmpeg_video(void)
{
    char errors[1024]={0};
    int file_fd=0;
    //create file
    file_fd=open("./video.yuv",O_CREAT|O_RDWR,0666);
    //ctx
    AVFormatContext *fmt_ctx=NULL;
    AVDictionary *option =NULL;
    //packet
    int count =0;
    AVPacket pkt;
    char *devicename="/dev/video0";
    //注册设备
    avdevice_register_all();
    AVInputFormat *iformat=av_find_input_format("video4linux2");
    av_dict_set(&option,"video_size","640x480",0);
    //av_dict_set(&option,"framerate","30",0);      //指定帧率
    //av_dict_set(&option,"pixel_format","nv12",0); //指定格式
    //打开设备
    int ret=avformat_open_input(&fmt_ctx,devicename,iformat,&option);
    if (ret<0)
    {
        av_strerror(ret,errors,1024);
        return;
    }
    av_init_packet(&pkt);
    while (ret=av_read_frame(fmt_ctx,&pkt)==0&&count++<300)
    {
        printf("packet size is %d(%p),count=%d\n",pkt.size,pkt.data,count);
        write(file_fd,(pkt.data),pkt.size);
    }
    av_packet_unref(&pkt); 
    close(file_fd);
    avformat_close_input(&fmt_ctx);
    av_log_set_level(AV_LOG_DEBUG);
    av_log( NULL, AV_LOG_DEBUG,"hello,word\n");
}

直接调用ffmpeg_video()函数即可完成录制摄像头的yuv数据,这里很多头文件我就不过多展示了。

由于上面代码设置的采集摄像头的分辨率为640x480
我们使用命令播放录制的yuv数据:

ffplay -pix_fmt yuyv422 -framerate 15 -s 640x480 video.yuv

采集的视频格式为yuyv422
以-framerate 15每秒15帧的帧率播放视频(限制视频的播放速度)文章来源地址https://www.toymoban.com/news/detail-410048.html

到了这里,关于在Ubuntu虚拟机使用ffmpeg采集摄像头的yuv视频数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于虚拟机安装Ubuntu18.04+ROS的2D相机或电脑自带摄像头的在线标定方法

    硬件 :笔记本电脑自带摄像头或者通过usb接口连接的相机 软件 :虚拟机+ubuntu18.04+ROS1 melodic(针对ubuntu18.04对应的ROS版本) 首先确保在主目录下,创建ROS工程 克隆代码 编译代码 这个地方我报错了 – No package ‘libv4l2’ found CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:419

    2024年02月02日
    浏览(40)
  • 怎么让电脑上的摄像头无绿幕使用背景虚化/虚拟背景、视频无绿幕使用背景虚化、虚拟摄像头无绿幕背景虚化

    参考: https://github.com/aisegmentcn/aisegment_obs_plugin https://obsproject.com/forum/resources/virtual-background-by-aisegment.1546/ 腾讯会议中是可以使用虚拟背景的,但是其他视频会议软件没有,那怎么办 1. 下载OBS 打开steam,搜索OBS,我成功的这个OBS版本为30.0.2 2. 下载OBS AI虚拟背景插件 https://git

    2024年04月26日
    浏览(27)
  • 【OpenCV-Torch-dlib-ubuntu】Vm虚拟机linux环境摄像头调用方法与dilb模型探究

    随着金秋时节的来临,国庆和中秋的双重喜庆汇聚成一片温暖的节日氛围。在这个美好的时刻,我们有幸共同迎来一次长达8天的假期,为心灵充电,为身体放松,为未来充实自己。今年的国庆不仅仅是家国团聚的时刻,更是展现自我的舞台。我在这个特殊的假期里,决定探究

    2024年02月07日
    浏览(27)
  • FPGA--OV7725摄像头采集与VGA显示实验--1--OV7725使用与驱动协议

    目录        前言 OV7725引脚及功能框图 参数指标 引脚 功能框图 SCCB时序及读写操作  SCCB时序特点 读写实现 OV7725寄存器常用配置参数              摄像头采集是图像处理的第一步,本章节分为多部分,旨在让大家学会如何使用OV7725采集图像,并且使用VGA协议显示出来。

    2023年04月08日
    浏览(43)
  • Linux虚拟机 Ubuntu16 cheese命令打开摄像头黑屏,以及mjpg-stream框架不显示视频界面。

    在Linux虚拟机 Ubuntu16打开笔记本的摄像头时,用 ubuntu16的cheese命令显示黑屏,如下图。 解决方法: 1.查看虚拟机是否已经已连接上摄像头,显示断开连接(连接主机)(D)则虚拟机已连接上摄像头。 2.确认摄像头,笔记本的摄像头一般是/dev/video0,如果有外接的摄像头则会显示/d

    2024年02月06日
    浏览(42)
  • ffmpeg从摄像头获取视频流

    使用FFmpeg获取本地摄像头设备 ffmpeg -list_devices true -f dshow -i dummy ffmpeg -f dshow -i video=\\\"e2eSoft iVCam\\\" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test ffmpeg -f dshow -i video=\\\"OBS Virtual Camera\\\" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp

    2024年02月11日
    浏览(25)
  • 4.通过Opencv采集摄像头视频数据

    VideoCapture() 虚拟采集器,一般设备号从0开始 cap.read() 读取视频帧 返回值有两个,第一个为状态值,读到帧为true 第二个值为视频帧 cap.release() 释放资源 示例程序: 运行结果: 从视频文件中读取视频帧 只处理视频,不处理音频,所以读取到的视频没有声音 播放速度设置 Vi

    2023年04月22日
    浏览(28)
  • 基于FFmpeg+rtsp读取摄像头实时图像

    项目介绍:前端时间做了一个项目用qt 编写软件获取海康摄像头rtsp视频流,实现实时显示。当时采用的是VLC-Qt播放RTSP流这种方式(参考:基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流_草上爬的博客-CSDN博客_libvlc rtsp)。花了一段时间研究也做出来了,可是发现了一个无法

    2023年04月08日
    浏览(55)
  • 电脑上虚拟摄像头在哪关闭?多种方法关闭虚拟摄像头

    在数字化时代,虚拟摄像头成为了许多工作和娱乐场景中的必备工具。它允许我们在不使用物理摄像头的情况下,通过软件模拟摄像头功能,从而满足视频通话、直播、教学等多种需求。 然而,有时我们可能需要在某些情况下关闭虚拟摄像头,那么,电脑上虚拟摄像头应该在

    2024年04月12日
    浏览(33)
  • ubuntu20.04下的USB摄像头使用与标定(单目相机)一.使用

    A.查找摄像头接口 B.在该路径下修改launch文件,换成你自己的摄像头接口 C.运行摄像头节点(此时就能看到画面了) ⭐可能会出现的错误 1.终端会warning是因为还没有进行摄像头标定,后续会进行讲解 2.若用的是虚拟机但发出了error,看看你的usb是接入3.0还是2.0处,然后在如下

    2024年02月04日
    浏览(109)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包