摄像头原始数据读取——ffmpeg(av_read_frame)

devtools/2024/11/27 10:12:09/

ffmpegav_read_frame_0">摄像头原始数据读取——ffmpeg(av_read_frame)

测试代码test.cpp

#include <iostream>
#include <stdio.h>
#include <string.h>#ifdef __cplusplus
extern "C" {
#endif
#include "libavdevice/avdevice.h"
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include "libavutil/avutil.h"
#include <libavfilter/avfilter.h>
#include <libavutil/log.h>#ifdef __cplusplus
};
#endifint main(int argc, char *argv[]) 
{   int count=0;AVPacket pack_data;AVFormatContext *fmt_ctx = NULL;AVDictionary *video_args = NULL;AVInputFormat *inputformat=NULL;avdevice_register_all();inputformat = av_find_input_format("video4linux2");//设置视频设备格式参数av_dict_set(&video_args, "video_size", "1280x720", 0);av_dict_set(&video_args, "framerate", "10", 0);av_dict_set(&video_args, "pixel_format", "yuyv422", 0);std::string video_dev_name = "/dev/video0";//打开视频设备,并设置参数int ret = avformat_open_input(&fmt_ctx, video_dev_name.c_str(), inputformat, &video_args);if(ret < 0) {char errors[1024];av_strerror(ret, errors, 1024);std::cerr<<"failed to open video capture device:"<<errors<<std::endl;return -1;}  //读取视频帧数据while((av_read_frame(fmt_ctx, &pack_data) == 0) && (count++ < 100)) {std::string yuvfile="picture_yuv/"+std::to_string(count)+".yuv";FILE *yuv_pic_file = fopen(yuvfile.c_str(), "wb+");fwrite(pack_data.data, 1, pack_data.size, yuv_pic_file);fclose(yuv_pic_file);av_packet_unref(&pack_data); // release package data}return 0;
}


http://www.ppmy.cn/devtools/137363.html

相关文章

斐波那契数列 相关问题 详解

斐波那契数列相关问题详解 斐波那契数列及其相关问题是算法学习中的经典主题&#xff0c;变形与应用非常广泛&#xff0c;涵盖了递推关系、动态规划、组合数学、数论等多个领域。以下是斐波那契数列的相关问题及其解法的详解。 1. 经典斐波那契数列 定义 初始条件&#xff1…

ArcGIS pro中的回归分析浅析(加更)关于广义线性回归工具的补充内容

在回归分析浅析中篇的文章中&#xff0c; 有人问了一个问题&#xff1a; 案例里的calls数据貌似离散&#xff0c;更符合泊松模型&#xff0c;为啥不采用泊松而采用高斯呢&#xff1f; 确实&#xff0c;在中篇中写道&#xff1a; 在这个例子中我们为了更好地解释变量&#x…

【python进度条】Python实现进度条的几种方法

python进度条 方法一&#xff1a;使用print()函数实现文本进度条方法二&#xff1a;使用tqdm库方法三&#xff1a;使用progress库方法四&#xff1a;使用alive-progress库方法五&#xff1a;使用rich库方法六&#xff1a;自定义图形进度条总结 在Python编程中&#xff0c;进度条…

社交电商专业赋能高校教育与产业协同发展:定制开发AI智能名片及2+1链动商城小程序的创新驱动

摘要&#xff1a;本文围绕社交电商有望成为高校常态专业这一趋势展开深入探讨&#xff0c;剖析国家政策认可下其学科发展前景&#xff0c;着重阐述在专业建设进程中面临的师资短缺及实践教学难题。通过引入定制开发AI智能名片与21链动商城小程序&#xff0c;探究如何借助这些新…

构建与优化数据仓库-实践指南

数仓构建流程 下图为MaxCompute数据仓库构建的整体流程。 基本概念 在正式学习本教程之前&#xff0c;您需要首先理解以下基本概念&#xff1a; 业务板块&#xff1a;比数据域更高维度的业务划分方法&#xff0c;适用于庞大的业务系统。 维度&#xff1a;维度建模由Ralph Ki…

org.apache.log4j的日志记录级别和基础使用Demo

org.apache.log4j的日志记录级别和基础使用Demo&#xff0c;本次案例展示&#xff0c;使用是的maven项目&#xff0c;搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件&#xff0c;log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…

Vue.js - 组件化编程

1. 前言 Vue.js是一个基于组件的Javascript框架&#xff0c;组件化编程是核心思想之一。通过组件化&#xff0c;Vue允许开发者将用户页面拆分成独立&#xff0c;可重用的部分&#xff0c;从而提升代码的可维护性&#xff0c;可读性以及可服用性。 本文主要讲解在Vue2中组件化…

快速高效求素数|质数的方法—Java(模板)

判断素数|质数方法时间效率:线性筛法>埃氏筛法>试除法 在写算法题的时候&#xff0c;各种各样跟素数有关的题目非常常见&#xff0c;本文列出了三种常见的判断素数的方法 三种求素数方法的优缺点 一、试除法 试除法的基本思想是&#xff1a;判断一个数 x 是否为素数&…