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;
	}
	outPutEncContext = avcodec_alloc_context3(pH264Codec);
	outPutEncContext->gop_size = 30;
	outPutEncContext->has_b_frames = 0;
	outPutEncContext->max_b_frames = 0;
	outPutEncContext->codec_id = pH264Codec->id;
	outPutEncContext->time_base.num = 2;
	outPutEncContext->time_base.den = 15;
	outPutEncContext->pix_fmt            = *pH264Codec->pix_fmts;
	outPutEncContext->width              =  iWidth;
	outPutEncContext->height             = iHeight;
	outPutEncContext->qmin = 34;
	outPutEncContext->qmax = 50;
	AVDictionary *options = nullptr;
	outPutEncContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
	av_opt_set(outPutEncContext->priv_data,"tune","zerolatency",0);
	int ret = avcodec_open2(outPutEncContext, pH264Codec, &options);
	if (ret < 0)
	{
		printf("%s", "open codec failed");
		return  ret;
	}
	return 1;
}

  codec 的time_base实际上表示视频的帧率,qmin,qmax决定了编码的质量,qmin,qmax越大编码的质量越差。zerolatency参数的作用是提搞编码的实时性。

如需交流请加qq群流媒体/Ffmpeg/音视频 127903734 ,或加QQ350197870。

时间: 2024-10-12 09:07:00

ffmpeg H264 编码配置的相关文章

FFmpeg的H264编码有内存泄漏吗??!!!

靠,内存泄漏好严重.开始怀疑是自己代码问题,调试了半天,又反复改写和优化代码,还是泄漏严重. 拿网上现成的FFMPEG H264编码的范例来测试,同样泄漏很严重. 百度了一下,有很多人遇到同样的问题,他们说是编码库本身的内存泄漏...., 无语,操,那FFMPEG的H264编码还能用吗!!!! 抓狂! 有没有遇到同样问题的大神,可以交流一下! QQ: 77914189

ffmpeg与H264编码指南

ffmpeg与H264编码指南 注:本文属于转载译文,原文地址:http://blog.csdn.net/vblittleboy/article/details/8982857. 英文地址:https://trac.ffmpeg.org/wiki/Encode/H.264.内容有一定出入,但是可以借鉴学习. x264是一个 H.264/MPEG4 AVC 编码器,本指南将指导新手如何创建高质量的H.264视频. 对于普通用户通常有两种码率控制模式:crf(Constant Rate Factor

android4.0 USB Camera实例(六)ffmpeg mpeg编码

前面本来说是做h264编码的 研究了两天发现ffmpeg里的h264编码似乎是要信赖第三方库x264 还是怎么简单怎么来吧所以就整了个mpeg编码 ffmpeg移植前面我有一篇ffmpeg解码里已经给了 具体链接在这http://blog.csdn.net/hclydao/article/details/18546757 怎么使用那里面也已经说了 这里主要是通过ffmpeg将yuv422格式转换成rgb 然后就是yuv422转成mpeg格式 接前面几篇 获取到yuv422数据后 为了能显示出来

xcode5下ffmpeg静态库配置

1.要安装xcode命令行工具 1).xcode5安装命令行工具方法: 在终端执行命令Using xcode-select --install 2).xcode5之前安装命令行工具方法: 2.xcode5以前都是gcc编译的,在xcode5以后都是clang编译,在脚本中有所体现 3.xcode5以前还要下载gas-preprocessor.pl脚本包,然后使用cp命令拷贝到usr/bin下面, 在xcode5以后不需要下载这个gas-preprocessor.pl脚本 4.下载ffmpeg源码

关于iOS上使用ffmpeg的编译配置

使用ffmpeg进行音视频开发,首先编译需要把ffmpeg的源码编译成静态库,编译不是大问题,关键问题是编译的时候的各种配置该怎么设置的问题.之前在网上搜索学习,这篇文章不错:iOS: FFmpeg编译和使用问题总结 .有些文章给出编译的整个命令,有的给脚本链接,但是都有一些问题,因为ffmpeg版本更新了.iOS版本更新了(我下的是ffmpeg2.3).最后东拼西凑,终于编译成功了一个,编译命令是: (1) ./configure --prefix=../i386 --disable-ffmp

ffmpeg音频编码

在弄音频采集时,需要设置缓存的大小,如果只是简单的采集和直接播放PCM数据,缓存的大小一般不影响播放和保存. 但是,如果需要使用FFMpeg音频编码,这时,音频缓存的大小必须设置av_samples_get_buffer_size函数返回的大小.以下是几点注意的 1. m_pFrame = av_frame_alloc();m_pFrame->format = ffSampleFormat;m_pFrame->nb_samples = nSampleRate;//帧的大小 2. m_nBuff

ffmpeg实时编码解码部分代码

程序分为编码端和解码端,两端通过tcp  socket通信,编码端一边编码一边将编码后的数据发送给解码端,解码端一边接收数据一边将解码得到的帧显示出来. 代码中的编码端编码的是实时屏幕截图.代码调用了Qt SDK. #ifndef MAPTHREAD_H #define MAPTHREAD_H #include <QThread> #include <QTcpSocket> #include <QTimer> #include <QColor> #inclu

(转)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. 不停地从码

采集音频和摄像头视频并实时H264编码及AAC编码

0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术,适用于这种实时性的应用,通过处理采集出来的音视频的每一帧,实现实时编码,实时输出.这是我做直播系列应用的一部分,目前的情况是输入端采用DirectShow技术捕获音视频,然后对视频进行h.264编码,对音频进行aac编码,输出端则是生成文件,接下来还要进一步扩展输入端和输出端,以支持文件.桌面输入,