基于FFMPEG的视频拉流并传给OPENCV显示 |
您所在的位置:网站首页 › ffmpeg在哪里安装我的世界 › 基于FFMPEG的视频拉流并传给OPENCV显示 |
基于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 |