基于FFMPEG的视频拉流并传给OPENCV显示

您所在的位置:网站首页 ffmpeg在哪里安装我的世界 基于FFMPEG的视频拉流并传给OPENCV显示

基于FFMPEG的视频拉流并传给OPENCV显示

2023-06-28 10:10| 来源: 网络整理| 查看: 265

基于FFMPEG的视频拉流并传给OPENCV显示 依赖文件解压代码编写依赖配置编译运行

依赖文件解压

将ffmpeg-master-latest-win64-gpl-shared解压,得到如下所示文件夹: 在这里插入图片描述 将其中的bin目录下的.dll文件复制到C:\Windows\System32目录下。

代码编写

基于FFMPEG的拉流代码如下所示,修改添加拉流地址即可。

#include #include extern "C" //ffmpeg是采用c语言实现的 c++工程种 导入c语言 { //avcodec:编解码(最重要的库) #include //avformat:封装格式处理 #include //swscale:视频像素数据格式转换 #include //avdevice:各种设备的输入输出 #include //avutil:工具库(大部分库都需要这个库的支持) #include #include } int main() { // Initialize FFmpeg //av_register_all();//在新版本4.0以后,不需要调用该方法,可以直接使用所有模块。 avformat_network_init(); std::cout std::cerr videoStreamIndex = i; break; } } if (videoStreamIndex == -1) { std::cerr std::cerr if (packet.stream_index == videoStreamIndex) { // Decode video frame avcodec_send_packet(codecContext, &packet); AVFrame* avFrame = av_frame_alloc(); int ret = avcodec_receive_frame(codecContext, avFrame); if (ret == 0) { // Convert frame to RGB sws_scale(sws_ctx, avFrame->data, avFrame->linesize, 0, codecContext->height, pFrameRGB->data, pFrameRGB->linesize); frame.data = pFrameRGB->data[0]; // Display frame cv::imshow("RTSP Stream", frame); cv::waitKey(1); } av_frame_free(&avFrame); } av_packet_unref(&packet); } // Clean up avformat_close_input(&formatContext); avformat_network_deinit(); avcodec_free_context(&codecContext); sws_freeContext(sws_ctx); return 0; } 依赖配置

opencv的依赖在此不做赘述

打开项目的属性管理器,在“包含目录”和“库目录”中加入解压得到的ffmpeg的include和lib路径,如下所示: 在这里插入图片描述

我这的包含目录路径是:E:\ffmpeg-master-latest-win64-gpl-shared\ffmpeg-master-latest-win64-gpl-shared\include 库目录路径是:E:\ffmpeg-master-latest-win64-gpl-shared\ffmpeg-master-latest-win64-gpl-shared\lib 2. 在属性页的链接器的输入部分的附加依赖项中添加库 在这里插入图片描述 添加如下库即可:

avcodec.lib avdevice.lib avfilter.lib avformat.lib avutil.lib postproc.lib swresample.lib swscale.lib 编译运行

设为启动项目,编译运行即可,会使用opencv弹出窗口



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3