日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

FFmpeg实现获取USB摄像头视频流测试代码

發布時間:2023/11/27 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FFmpeg实现获取USB摄像头视频流测试代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過USB攝像頭(注:windows7/10下使用內置攝像頭,linux下接普通的usb攝像頭(Logitech))獲取視頻流用到的模塊包括avformat和avdevice。頭文件僅include avdevice.h即可,因為avdevice.h中會include avformat.h。libavdevice庫是libavformat的一個補充庫(complementary library)。主要涉及到的接口函數包括:

1. avdevice_register_all:初始化libavdevice庫并注冊所有輸入輸出設備;

2. av_find_input_format:根據輸入格式的名字查找AVInputFormat,在測試代碼中,windows平臺使用”vfwcap”(video for windows capture),linux平臺使用”v4l2”(Video4Linux2);

3. avformat_alloc_context:分配AVFormatContext;

4. avformat_open_input:打開輸入流并讀取header;

5. avformat_find_stream_info:讀取媒體文件的數據包以獲取流信息;

6. 通過AVFormatContext中AVStream查找視頻/音頻流索引,這里在windows10下獲取到的編碼類型為mjpeg即AV_CODEC_ID_MJPEG,像素格式為yuv422p即AV_PIX_FMT_YUVJ422P;在linux或windows7下獲取到的編碼類型為rawvideo即AV_CODEC_ID_RAWVIDEO,像素格式yuyv422即AV_PIX_FMT_YUYV422;可見攝像頭類型不同、系統不同獲取到的編碼類型和像素格式可能也不同;

7. av_read_frame:獲取流即packet(AVPacket);

8. av_packet_unref:釋放packet引用的緩沖區;

9. avformat_close_input:關閉打開的輸入AVFormatContext。

測試代碼如下(test_ffmpeg_usb_stream.cpp):

#include "funset.hpp"
#include <iostream>#ifdef __cplusplus
extern "C" {
#endif#include <libavdevice/avdevice.h>#ifdef __cplusplus
}
#endifint test_ffmpeg_usb_stream()
{avdevice_register_all();#ifdef _MSC_VERconst char* input_format_name = "vfwcap";const char* url = "";
#elseconst char* input_format_name = "v4l2";const char* url = "/dev/video0";
#endifAVInputFormat* fmt = av_find_input_format(input_format_name);AVFormatContext* ctx = avformat_alloc_context();int ret = avformat_open_input(&ctx, url, fmt, nullptr);if (ret != 0) {fprintf(stderr, "fail to open input stream: %d\n", ret);return -1;}// read packets of a media file to get stream informationret = avformat_find_stream_info(ctx, nullptr);if (ret < 0) {fprintf(stderr, "fail to get stream information: %d\n", ret);return -1;}// find audio/video stream indexint video_stream_index = -1;int audio_stream_index = -1;fprintf(stdout, "Number of elements in AVFormatContext.streams: %d\n", ctx->nb_streams);for (int i = 0; i < ctx->nb_streams; ++i) {const AVStream* stream = ctx->streams[i];fprintf(stdout, "type of the encoded data: %d\n", stream->codecpar->codec_id);if (stream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {video_stream_index = i;fprintf(stdout, "dimensions of the video frame in pixels: width: %d, height: %d, pixel format: %d\n",stream->codecpar->width, stream->codecpar->height, stream->codecpar->format);}else if (stream->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {audio_stream_index = i;fprintf(stdout, "audio sample format: %d\n", stream->codecpar->format);}}if (video_stream_index == -1) {fprintf(stderr, "Error: no video stream\n");return -1;}if (audio_stream_index == -1) {fprintf(stdout, "Warning: no audio stream\n");}int cnt = 0;AVPacket pkt;while (1) {if (++cnt > 100) break;ret = av_read_frame(ctx, &pkt);if (ret < 0) {fprintf(stderr, "error or end of file: %d\n", ret);continue;}if (pkt.stream_index == video_stream_index) {fprintf(stdout, "video stream, packet size: %d\n", pkt.size);}if (pkt.stream_index == audio_stream_index) {fprintf(stdout, "audio stream, packet size: %d\n", pkt.size);}av_packet_unref(&pkt);}avformat_close_input(&ctx);fprintf(stdout, "test finish\n");return 0;
}

Linux下執行結果如下:

GitHub:https://github.com/fengbingchun/OpenCV_Test

總結

以上是生活随笔為你收集整理的FFmpeg实现获取USB摄像头视频流测试代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级片免费在线观看 | 一级大片免费观看 | 国产精品自拍99 | 一级二级三级黄色片 | 少妇高潮21p | 欧洲av无码放荡人妇网站 | 中文字幕日韩有码 | 九九免费视频 | 97自拍视频 | 久久久久9| 一区二区免费视频 | 无码人妻精品中文字幕 | 欧美乱妇狂野欧美在线视频 | 97超碰总站 | 日韩午夜在线视频 | 国产男男gay体育生网站 | 女人扒开屁股让男人捅 | 欧美亚洲一区二区三区 | 国产网站精品 | 青青青青青青草 | 日韩视频网 | 亚洲永久免费 | 男人天堂视频在线观看 | 91亚洲国产成人精品性色 | 欧美一级黄色录像 | 欧美aⅴ在线| 四虎永久在线精品免费一区二区 | 黄网站在线观看 | 老司机午夜免费精品视频 | 1024国产视频 | heyzo国产 | 99热国产在线 | 日本精品一区二区 | 91热久久| 国产性猛交96 | 色呦呦视频在线观看 | 欧美bbbbbbbbbbbb1| 插插插网站 | 一级全黄裸体免费视频 | 精品国产成人av | 男人的天堂影院 | 精品一区欧美 | 男人天堂1024| 99热6这里只有精品 三级av在线免费观看 | 亚色一区 | 国产精品又黄又爽又色无遮挡 | 青青草自拍视频 | 色多多视频网站 | av丝袜在线观看 | 亚洲高清视频在线播放 | 亚洲毛片视频 | 狠狠干在线 | 亚洲人体在线 | 337p粉嫩日本欧洲亚洲大胆 | 国产91在线观看丝袜 | 蜜桃综合网 | 在线免费国产 | 丰满少妇中文字幕 | www国产精品视频 | 动漫玉足吸乳羞免费网站玉足 | 免费v片在线观看 | 中出在线播放 | 香港三级韩国三级日本三级 | 免费av影片 | 91在线免费观看网站 | 丰满大乳奶做爰ⅹxx视频 | 欧美激情一区 | 国产日韩一区二区在线 | 中文字幕一区二区三区精彩视频 | 欧美偷拍一区二区 | 亚洲熟妇无码一区二区三区导航 | 国精产品一区一区三区在线 | 欧美日韩国产一级片 | 无码国产69精品久久久久同性 | 新婚夫妇白天啪啪自拍 | 摸摸大奶子 | 日韩中文在线字幕 | 精品人妻一区二区三区蜜桃视频 | 美女裸体跪姿扒开屁股无内裤 | 麻豆视频在线观看 | 北条麻妃av在线 | 亚洲男人天堂电影 | gay男互凵gay男同偷精 | 农村少妇无套内谢粗又长 | 操碰97| 热99精品视频| 青青草手机视频 | 全部免费毛片在线播放高潮 | 天天干干天天 | 国产高清精品软件丝瓜软件 | 97在线超碰 | av大片在线观看 | 国产精品自拍av | 狠狠撸在线 | 超碰成人久久 | 国内精品福利视频 | 丝袜国产视频 | 欧美黄页在线观看 | 国产色无码精品视频国产 |