FFMPEG H264/H265 编码延迟问题
参考:http://blog.csdn.net/aoshilang2249/article/details/40397199?utm_source=tuicool&utm_medium=referral
最新使用FFmpeg进行H264的编码时,发现视频编码有延迟,不是实时编码,进过一番研究发现,只要在调用avcodec_open2函数
打开编码器时,设置AVDictionary参数即可,关键代码如下:
avcodec_open2函数:
- int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
解决方案:
- //H264, 设置为编码延迟为立即编码
- if(c->codec_id == AV_CODEC_ID_H264)
- {
av_dict_set(ctx->priv_data, "preset", "superfast", 0);
- av_dict_set(ctx->priv_data, "tune", "zerolatency", 0);
- }
- //H.265
- if(c->codec_id == AV_CODEC_ID_H265)
- {
av_dict_set(ctx->priv_data, "x265-params", "qp=20", 0); av_dict_set(ctx->priv_data, "preset", "ultrafast", 0); av_dict_set(ctx->priv_data, "tune", "zero-latency", 0);
- }
- //使用给定的AVCodec初始化AVCodecContext
- ret = avcodec_open2(参数, 参数,NULL);
还有这种方式:
- // Set Option
- AVDictionary *param = 0;
- //H.264
- if(pCodecCtx->codec_id == AV_CODEC_ID_H264) {
- av_dict_set(?m, "preset", "slow", 0);
- av_dict_set(?m, "tune", "zerolatency", 0);
- }
- //H.265
- if(pCodecCtx->codec_id == AV_CODEC_ID_H265){
- av_dict_set(¶m, "x265-params", "qp=20", 0);
- av_dict_set(¶m, "preset", "ultrafast", 0);
- av_dict_set(¶m, "tune", "zero-latency", 0);
- }
- //Dump Information 输出格式信息
- av_dump_format(pFormatCtx, 0, out_file, 1);
- pCodec = avcodec_find_encoder(pCodecCtx->codec_id);
- if (!pCodec){
- printf("Can not find encoder! 没有找到合适的编码器!\n");
- return -1;
- }
- if (avcodec_open2(pCodecCtx, pCodec,¶m) < 0){
- printf("Failed to open encoder! 编码器打开失败!\n");
- return -1;
- }
FFMPEG H264/H265 编码延迟问题相关推荐
- 如何让ffplay或者ffmpeg支持H265编码的rtmp/http-flv 实时直播流
很多初学者不知道ffplay或者ffmpeg是不支持flv封装的rtmp/http-flv流的,其原因是flv不支持H265编码payload的,因为当时制定flv封装协议的时候,H265还没出来,现 ...
- FFmpeg支持H265编码
目前FFmpeg已经能够支持H265编码,我们可以通过configure添加 --enable-gpl --enable-libx265来配置. 这就需要我们的系统环境中已经安装了libx265,且其 ...
- Android6.0 dump h264/h265编码裸流(二)
1.dump h264/h265的NALU(VPS/SPS/PPS)与数据 路径:frameworks/av/media/libstagefright/MPEG4Writer.cpp<1> ...
- FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库
先决条件: 需要安装msys2(是一个在windows中模拟linux操作系统的软件) 由于在linux中编译ffmpeg比较简单, 所以利用一下msys2, 直接去官网下载安装即可 需要安装visu ...
- ffmpeg转换h265编码视频到h264编码
ffmpeg -i inputfile -map 0 -c:a copy -c:s copy -c:v libx264 output.mkv
- Linux系统安装ffmpeg + h264视频编码
通过我这篇文章安装的小伙伴可能会遇到h264编码转换失败的问题,本篇文章将完美解决这个问题. 此篇文章方法也适合未安装ffmpeg的系统,忽略第一步即可. 1.首先,进入你安装的ffmpeg文件夹下, ...
- android ffmpeg 编码h264,Mac系统下ffmpeg+h264+flv编码的android录制屏幕实现2
接上一篇. activity_flv.xml xmlns:tools="http://schemas.android.com/tools" android:layout_width ...
- ffmpeg使用h264、h265编码转换
1.编译x264 git clone https://code.videolan.org/videolan/x264.git cd x264 ./configure --enable-shared - ...
- iOS H264,H265视频编码(Video encode)
本例需求:使用H264, H265实现视频数据的编码并录制开始200帧存为文件. 原理:比如做直播功能,需要将客户端的视频数据传给服务器,如果分辨率过大如2K,4K则传输压力太大,所以需要对视频数据进 ...
最新文章
- 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计
- MyBatis 的执行流程,写得太好了!
- python判断文件是否存在、不存在则创建_python判断文件是否存在,不存在就创建一个的实例...
- 闭包案例产生多个相同的随机数 沙箱
- eclipse中Lombok注解无效
- 《Reids 设计与实现》第五章 对象
- 基于 Android NDK 的学习之旅-----Java 调用C(附源码)
- Failed to start LSB: start and stop MariaDB
- Discuz = 7.2 SQL注入漏洞详情
- VMware安装Windows Server 2003提示Operating System not found
- 几何画板如何画曲线方程?
- 【计算机三级数据库技术】三级数据库技术应用题集锦
- ppt编辑数据链接文件不可用_excel表格编辑数据不可用-ppt插入的自带图表点击编辑数据时显示链接文件不可用...
- android logo颜色渐变,华为悄然更新品牌Logo:无渐变色,更加扁平化
- 脱壳进阶篇——IAT修复与解密
- CF1155F Delivery Oligopoly
- 佳人何处有,明月寄相思
- 微信模板消息发送失败
- 从键盘上输入两个字符串,将两个字符串首尾相连接后,再输出新的字符串(c语言)
- 网络七层协议具体是什么?
热门文章
- 问题集锦(30-35)
- python查看函数调用栈
- java统计字符串中每个字符出现的次数,统计字符串中每个字符出现的次数
- mega_[MEGA DEAL]带有Kotlin捆绑包的完整Android Oreo(95%折扣)
- commons-io_从Commons CLI迁移到picocli
- java 6位日期 0001,当日期范围更改为从01-01-0001开始时,DimDate将不会加载
- python文本分类评价指标 top1如何计算_python – Keras:如何计算多标签分类的准确......
- python多线程输出_Python多线程
- 计算机专业文档写作课件,计算机专业论文写作的方法.ppt
- 皮一皮:好的团队合作比什么都有用!