FFMPEG H264/H265 编码延迟问题

最新使用FFmpeg进行H264的编码时,发现视频编码有延迟,不是实时编码,进过一番研究发现,只要在调用avcodec_open2函数

打开编码器时,设置AVDictionary参数即可,关键代码如下:

avcodec_open2函数:

int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);

解决方案:

AVDictionary *param = NULL;
//H264, 设置为编码延迟为立即编码
if(c->codec_id == AV_CODEC_ID_H264)
{
	av_dict_set(¶m, "preset", "superfast",   0);
	av_dict_set(¶m, "tune",   "zerolatency", 0);
}
//H.265
if(c->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);
}  

//使用给定的AVCodec初始化AVCodecContext
ret = avcodec_open2(参数, 参数, ¶m);

时间: 2024-11-11 02:28:12

FFMPEG H264/H265 编码延迟问题的相关文章

ffmpeg H264 编码配置

ffmpeg H264编码前面有文章介绍下,本文主要介绍一些参数配置. int InitEncoderCodec( int iWidth, int iHeight) { AVCodec * pH264Codec = avcodec_find_encoder(AV_CODEC_ID_H264); if(NULL == pH264Codec) { printf("%s", "avcodec_find_encoder failed"); return -1; } outP

ios 视频流H264硬编码---分解LFLiveKit

#import "LFHardwareVideoEncoder.h" #import <VideoToolbox/VideoToolbox.h> @interface LFHardwareVideoEncoder (){ VTCompressionSessionRef compressionSession; // 编码器 NSInteger frameCount; // 帧数(用于设置关键帧) NSData *sps; NSData *pps; FILE *fp; BOOL

H265编码等级以及图像的基础知识

目录: 1.H265编码等级 2.图像的基础知识 2.1:像素,分辨率,PPI(像素密度),BPP 扫盲 2.2:RGB.YUV图片像素格式的理解 1. H265编码等级 H264编码profile & level控制 .H265编码初探 H265 profile H265 Profile & Level & Tier 介绍 2. 图像的基础知识 2.1 像素,分辨率,PPI(像素密度),BPP 扫盲: 像素,分辨率,PPI(像素密度),BPP 扫盲 2.2 RGB.YUV图片像素

(转)FFMPEG:H264解码-SDL显示(RGB32、RGB24、YUV420P、YUV422)

FFMpeg对视频文件进行解码的大致流程 1. 注册所有容器格式: av_register_all()2. 打开文件: av_open_input_file()3. 从文件中提取流信息: av_find_stream_info()4. 穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO5. 查找对应的解码器: avcodec_find_decoder()6. 打开编解码器: avcodec_open()7. 为解码帧分配内存: avcodec_alloc_frame()8. 不停地从码

测试h265和h264的编码效果

OS:CentOS6.4-64bit --------编译 FFMPEG with h265-------- 1.安装 hg tool #yum install hg 2.下载 x265 source code 并 make #hg clone https://bitbucket.org/multicoreware/x265 #cd x265/build/linux #make #make install 3.下载  x264 and ffmpeg source 并 make 请参考我之前的一篇

H264/H265 Nal Unit Header

NAL全称Network Abstract Layer,即网络抽象层.在H.264/H.265视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL).其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输.NAL单元是NAL的基本语法结构,H264 NAL包含一个字节的头信息和一系列来自VCL的称为原始字节序列载荷(RBSP)的字节流,H265 NAL包含两个字节的头信息和一系列来自VCL的称为原始

使用ffmpeg将图片编码为x264视频文件

ffmpeg开源库,实现将bmp格式的图片编码成x264文件.参考资料:http://blog.csdn.net/eightdegree/article/details/7425635#reply 自己根据博客的代码,vs2010搭建的测试环境.资源下载 具体代码: #define _AFXDLL #include<afxwin.h> #ifdef __cplusplus extern "C" { #endif #include <libavcodec/avcodec

视频直播技术(二):实时视频编码之H264硬编码

1.硬编码 & 软编码 硬编码:通过Android系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软编码:使用CPU进行编码,如常见C/C++代码,编译生成二进制文件,速度相对较慢.例如使用Android NDK编译H264生成so库,编写jni接口,再使用java调用so库. 2.硬编码过程和原理 过程:通过MediaRecoder采集视频,再将视频流映射到LocalSocket实现收发. 原理:详见[流媒體]H264-MP4格式及在MP4文

FFmpeg源代码结构图 - 编码

===================================================== FFmpeg的库函数源代码分析文章列表: [通用] FFmpeg 源代码简单分析:av_register_all() FFmpeg 源代码简单分析:avcodec_register_all() FFmpeg 源代码简单分析:内存的分配和释放(av_malloc().av_free()等) FFmpeg 源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame