Nvidia nvenc cuvid + ffmpeg 硬编解码
ffmpeg 命令行,可指定GPU运算:ffmpeg -hwaccel_output_format cuda -vcodec h264_cuvid -i input.mp4 -vcodec h264_nvenc -gpu 0 -acodec copy -f mp4 -y output.mp4
ffmpeg SDK调用:
av_find_encoder_by_name(“h264_nvenc”);
av_find_encoder_by_name(“hevc_nvenc”);
nvenc.c
av_cold int ff_nvenc_encode_init(AVCodecContext *avctx)
static av_cold int nvenc_setup_device(AVCodecContext *avctx)
static av_cold int nvenc_check_device(AVCodecContext *avctx, int idx)
static av_cold int nvenc_open_session(AVCodecContext *avctx){NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS params = { 0 };NvencContext *ctx = avctx->priv_data;NV_ENCODE_API_FUNCTION_LIST *p_nvenc = &ctx->nvenc_dload_funcs.nvenc_funcs;NVENCSTATUS ret;params.version = NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER;params.apiVersion = NVENCAPI_VERSION;if (ctx->d3d11_device) {params.device = ctx->d3d11_device;params.deviceType = NV_ENC_DEVICE_TYPE_DIRECTX;} else {params.device = ctx->cu_context;params.deviceType = NV_ENC_DEVICE_TYPE_CUDA;}ret = p_nvenc->nvEncOpenEncodeSessionEx(¶ms, &ctx->nvencoder);if (ret != NV_ENC_SUCCESS) {ctx->nvencoder = NULL;return nvenc_print_error(avctx, ret, "OpenEncodeSessionEx failed");}return 0;}
通过配置AVCodecContext 指定gpu:
av_opt_set_int(g_pVideoCodecCtx->priv_data, "gpu", g_sParam.iGpuID, 0); //指定GPU
参考:https://stackoverflow.com/questions/16435514/how-to-set-x264-encode-parameters-through-ffmpeg-avcodeccontext
Try calling av_opt_set
with the codec context priv_data
structure:
AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_H264);
AVCodecContext *codecContex = avcodec_alloc_context3(codec);
av_opt_set(codecContex->priv_data, "preset", "ultrafast", 0);
av_opt_set(codecContex->priv_data, "tune", "zerolatency", 0);
Nvidia nvenc cuvid + ffmpeg 硬编解码相关推荐
- ffmpeg硬编解码 Inter QSV
另一篇:ffmpeg硬件编解码Nvidia GPU 硬编解码除了使用Nvidia的GPU之外,Inter的QSV也是一种不错的方案,跟Nvidia不同的是,如果希望使用ffmepg的Inter QSV ...
- 基于NVIDIA显卡的硬编解码的一点心得
前提:小编只是个研究了2个月的NVIDIA硬编解码new guy, 有些写的不明白的地方可以相互交流. 目前因为项目需要,要对硬编解码的实时编码能力做个初步的调研test report. 下面我说下从 ...
- android ndk之opencv+MediaCodec硬编解码来处理视频动态时间水印
android ndk之opencv+MediaCodec硬编解码来处理视频水印学习笔记 android视频处理学习笔记.以前android增加时间水印的需求,希望多了解视频编解码,直播,特效这一块, ...
- iOS硬编解码相关知识
1.软编与硬编概念 1.1 软编码:使用CPU进行编码. 实现直接.简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点. 1.2 硬编码:不使用CPU进行编码 ...
- ffmpeg H264 编解码配置
ffmpeg H264编解码前面有文章介绍下,本文主要介绍一些参数配置. 编码: int InitEncoderCodec( int iWidth, int iHeight) {AVCodec * p ...
- 基于iOS/Mac平台实现H.265硬编解码
本文我们会着重介绍如何在iOS/Mac上使用系统API进行H.265硬编硬解功能,读者需要有使用VideoToolBox进行硬编/解码的相关经验. 一般提到H.265,都难免要和H.264对比一番,以 ...
- Android硬编解码接口MediaCodec使用完全解析(一)
使用异步读取编码(解码)后的数据,效率会大增. 可以直接起一个线程不断地读. ------------------------------------------------------------- ...
- ffmpeg常用编解码命令
ffmpeg常用编解码命令 1 ffplay.exe (1) 播放MP4文件,指定标题以及播放分辨率 ffplay.exe -window_title "视频监控" -x 720 ...
- webrtc M66 华为手机h264硬编解码不支持问题
webrtc M66 华为手机h264硬编解码不支持问题 最近使用webrtc的h264编码时,测试发现华为都不支持,而其他手机可以,通过阅读webrtc的代码发现如下问题 webrtc 会先检测手机 ...
最新文章
- 创建零填充JavaScript数组的最有效方法?
- 多语种下的卡萨帝故事
- 2016 博客导读总结 amp; 个人感悟
- 微软2013年笔试题详解及深入
- springboot1.5 和 2.0 引入 redis 并封装工具类
- T61|NV显卡门|根据售后维修部数据显示爆发期来临|预防显卡门|解决显卡门
- brew 安装pip_pip brew wget 安装
- 角度和弧度之间的转换
- window下postgresql启动服务失败 Access is denied
- Python | Web Crawler
- 20位大厂面试官推荐的Java面试八股文
- 三阶齐次线性方程求通解_三阶常系数齐次线性差分方程解的分类
- 西湖论剑——指鹿为马
- 动态主机配置协议(DHCP)
- 汇编———标志(flag)寄存器
- 进程管理 进程的调度
- RISC-V Linux 启动流程分析
- mysql 官网下载太慢了,来这里!!!
- Informatica PowerCenter 简介(三)
- Centos 7 ngrok服务器搭建