实例:ffmpeg读取摄像头,仅仅调用v4l2(不涉及相关结构流程)
/*=============================================================================
# FileName: read_device.c
# Desc: use ffmpeg read a frame data from v4l2
# Author: licaibiao
# LastChange: 2017-03-15
=============================================================================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
char* input_name= "video4linux2";
char* file_name = "/dev/video0";
char* out_file = "test.jpeg";
void captureOneFrame(void){
AVFormatContext *fmtCtx = NULL;
AVPacket *packet;
AVInputFormat *inputFmt;
FILE *fp;
int ret;
printf("1\n");
inputFmt = av_find_input_format (input_name);
if (inputFmt == NULL) {
printf("can not find_input_format\n");
return;
}
printf("2\n");
if (avformat_open_input ( &fmtCtx, file_name, inputFmt, NULL) < 0){
printf("can not open_input_file\n"); return;
}
printf("3\n");
/* print device information*/
av_dump_format(fmtCtx, 0, file_name, 0);
printf("4\n");
packet = (AVPacket *)av_malloc(sizeof(AVPacket))