cuda10.2+ubuntu18.04+docker视频编解码
安装配置参考
#include <iostream>#include "opencv2/opencv_modules.hpp"#if defined(HAVE_OPENCV_CUDACODEC)#include <string>
#include <vector>
#include <algorithm>
#include <numeric>#include <opencv2/core.hpp>
#include <opencv2/core/opengl.hpp>
#include <opencv2/cudacodec.hpp>
#include <opencv2/highgui.hpp>int main(int argc, const char* argv[])
{if (argc != 2)return -1;const std::string fname(argv[1]);//显示视频//cv::namedWindow("CPU", cv::WINDOW_NORMAL);cv::namedWindow("GPU", cv::WINDOW_OPENGL);cv::cuda::setGlDevice();//cv::Mat frame;//cv::VideoCapture reader(fname);cv::cuda::GpuMat d_frame;cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);cv::TickMeter tm;std::vector<double> cpu_times;std::vector<double> gpu_times;int gpu_frame_count=0, cpu_frame_count=0;/*for (;;){tm.reset(); tm.start();if (!reader.read(frame))break;tm.stop();cpu_times.push_back(tm.getTimeMilli());cpu_frame_count++;cv::imshow("CPU", frame);if (cv::waitKey(3) > 0)break;}
*/for (;;){tm.reset(); tm.start();if (!d_reader->nextFrame(d_frame))break;tm.stop();gpu_times.push_back(tm.getTimeMilli());gpu_frame_count++;cv::imshow("GPU", d_frame);if (cv::waitKey(3) > 0)break;}if (!cpu_times.empty() || !gpu_times.empty()){std::cout << std::endl << "Results:" << std::endl;//std::sort(cpu_times.begin(), cpu_times.end());std::sort(gpu_times.begin(), gpu_times.end());//double cpu_avg = std::accumulate(cpu_times.begin(), cpu_times.end(), 0.0) / cpu_times.size();double gpu_avg = std::accumulate(gpu_times.begin(), gpu_times.end(), 0.0) / gpu_times.size();//std::cout << "CPU : Avg : " << cpu_avg << " ms FPS : " << 1000.0 / cpu_avg << " Frames " << cpu_frame_count << std::endl;std::cout << "GPU : Avg : " << gpu_avg << " ms FPS : " << 1000.0 / gpu_avg << " Frames " << gpu_frame_count << std::endl;}return 0;
}#elseint main()
{std::cout << "OpenCV was built without CUDA Video decoding support\n" << std::endl;return 0;
}#endif
makefile文件
opencv_cuda.o:opencv_cuda.cppg++ -std=c++11 -g -o main.out opencv_cuda.cpp `pkg-config opencv4 --cflags --libs` \-I/usr/local/opencv-4.2.0/include/opencv4/opencv2 \-I/usr/local/cuda/include \-L/usr/local/cuda/lib64 \-I/usr/include/eigen3 \-L/usr/lib/x86_64-linux-gnu -lcuda -ldl -lnvcuvidclean:rm *.o main.out
编译并运行
make
./main.out test.h264
# or
./main.out rtsp://admin:hk888888@10.171.1.233/h265/ch1/main/av_stream
参考文章
- cuda+ffmpeg+opencv的编译安装
cuda10.2+ubuntu18.04+docker视频编解码相关推荐
- 04 ARM Mali-V VPU硬件视频编解码驱动介绍V61
ARM Mali-V VPU硬件视频编解码驱动介绍V61 作者 将狼才鲸 创建日期 2022-12-13 CSDN文章地址:ARM Mali-V VPU硬件视频编解码驱动介绍V61 一.PC上的VPU ...
- 基于FFmpeg 实现RTSP, 音视频编解码,视频流添加文字,音视频合成MP4
前言: 最近闲这没事,整理了一下之前开发过的音视频编解码库,主要基于ffmpeg,实现音视频的编解码.视频流添加文字,音视频同步到MP4等功能.有需要的小伙伴可以参考参考,如果写的有什么不对的地方,欢 ...
- 【ffmpeg for wince】音视频编解码多平台移植(for window/wince)
from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 终于完成了了第二个Client side原型(for ...
- chromium 33 视频编解码
01 基本资料 官网关于视频编解码的文档, chromium/src/media: https://chromium.googlesource.com/chromium/src/media/ audi ...
- 53、RK3588测试视频编解码和 POE OAK Camera编码结合开发
基本思想:一直想学rk3588的视频编解码,奈何没有设备,最近获得机会,利用空闲时间好好研究一番,正好手中的深度相机oak camera支持视频编码,逐想用软解编码和瑞芯微的mpp硬解码去走一波,本实 ...
- H.264/AVC视频编解码技术详解-殷汶杰-专题视频课程
H.264/AVC视频编解码技术详解-46880人已学习 课程介绍 H.264/AVC是目前业界应用为广泛的视频压缩编码标准,包含了先进而且较为成熟的视频编码技术.本课程将从原理.标准 ...
- MPSOC VCU多路视频编解码(基于gstreamer)
MPSOC VCU多路视频编解码 alvin.lu@avnet.com 2020.09.12 软件平台: Vivado 2019.1 PetaLinux 2019.1 Ubuntu16.04.6真机 ...
- 视频编解码之理论概述 和即时通信
前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的.有关实时 ...
- 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...
<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...
- 视频编解码的理论和实践2:Ffmpeg视频编解码
近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术.因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术. 相关阅读推荐 &l ...
最新文章
- 建空列表list,数组array,矩阵matrix
- 如果给你500万,让你朝对象腿上开一枪,你愿意吗?
- 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用
- 农历控件源码(C#)
- Java与iOS对话:Java对象与Apple plist序列化
- robot连PCwifi、PC开Shell连robot
- 43 SD配置-销售凭证设置-定义状态管理授权码
- OSPF高级特性——LSA-3(Network Summary LSA)的过滤、路由协议——管理距离的修改、外部路由的metric值的修改
- linux内核arc4算法,linux内核中与进程相关的数据结构(基于linux-mainline-rc4)
- SQL2008R2 收缩数据库问题 - 日志文件不变小
- 搭建vue-cli脚手架
- ID为GUID类型时使用ObjectDataSource控件的时候的未找到DataObjectTypeName属性的解决方法...
- 微星笔记本安装Ubuntu桌面版
- 测试不同体重体型软件样子的,一种智能体型体重测量仪的设计
- 使用smbd实现windows和liunx的共享交互
- 计算机cpu最高温度,详解电脑cpu温度过高几种常用处理方法
- latex 矩阵分块(block matrix)
- 使用Cydia Impactor免越狱安装ipa
- bmp格式图片缩放(位图缩放)
- 联邦学习(Federated Learning)详解以及示例代码