ffmpeg windows从内置摄像头采集数据写成yuv文件(最简单的)
程序员文章站
2022-07-02 09:24:27
...
列出设备
ffmpeg -list_devices true -f dshow -i dummy
选用红框中的设备来采集,接着查看设备的参数
查看本机摄像头支持参数
ffmpeg -list_options true -f dshow -i video="Integrated Webcam"
后边会根据红框的内容设置:
代码
void rec_cam()
{
int nRet = 0;
char errors[1024] = {};
avdevice_register_all(); //注册输入设备
//windows下指定摄像头信息
AVInputFormat *pIptFmt=av_find_input_format("dshow");
AVFormatContext *pFmtCtx = nullptr;
const char* devName = "video=Integrated Webcam";
AVDictionary *options = nullptr;
av_dict_set(&options, "video_size", "640x480", 0);//根据红框中摄像头参数设置
av_dict_set(&options, "framerate", "30", 0);//根据红框中摄像头参数设置
av_dict_set(&options, "pixel_format", "yuyv422", 0);//根据红框中摄像头参数设置
nRet = avformat_open_input(&pFmtCtx,devName,pIptFmt,&options);
if(nRet < 0)
{
av_strerror(nRet, errors, 1024);
fprintf(stderr, "Failed to open video device, [%d]%s\n", nRet, errors);
printf("avformat_open_input fail");
}
FILE *pOutFile = fopen("D:/output/cam.yuv","wb+");
AVPacket pkt;
av_init_packet(&pkt);
while(( 0 == av_read_frame(pFmtCtx, &pkt)) && 0 == nStopFlag)
{
fwrite(pkt.data, 1, pkt.size, pOutFile);
fflush(pOutFile);
av_packet_unref(&pkt);
}
}
int mian()
{
rec_cam();
}
在cmd中
ffplay -pix_fmt yuyv422 -s 640x480 D:\output\cam.yuv
播放成功!!!!!
上一篇: canvas截取视频第一帧
下一篇: java获取视频第一帧