ffmpeg中使用libx264的码率控制(代码片段)

jiayayao jiayayao     2023-01-04     630

关键词:

    两种码率控制模式:crf模式和ABR模式

一、crf模式

    Constant Rate Factor(crf)优点是提供了最大的压缩效率,每一帧可以按照要求的视频质量去决定它需要的比特数。缺点是,不能计算规定时间的视频文件大小,或者准确控制输出码率。

1. 选择一个crf值

    crf值是视频质量的量化值,取值范围0~51,其中0为无损模式,23为默认值,51代表最差质量。crf值加6,输出码率大概减少一半;

2. 选择一个预设(preset)

    preset似的编码器能够在编码速度和压缩率之间做出权衡。也就是说,选择越慢的编码速度,压缩率就会越高。如果要求编码速度更快,一般选择ultrafast。

    开发者还可以基于输入内容的独特性通过使用--tune来改变参数设置。如果没有特殊要求,一般选择zerolantency。

av_opt_set(pCodecCtx->priv_data, "preset", "ultrafast", 0);
av_opt_set(pCodecCtx->priv_data, "crf", "20", AV_OPT_SEARCH_CHILDREN);

二、ABR模式

    Average Bit Rate(ABR)模式更注重码率控制,适合在一段时间内生成固定大小的视频,而不太注重视频质量的场景。

 

androidffmpeg——ffmpeg+libx264编译(代码片段)

前面博客AndroidFFMpeg(一)——编译FFmpeg中记录了在windows中利用MinGW和Msys编译FFMpeg的步骤。FFMpeg中带有264的解码,没有264的编码,需要编码功能的话,可以使用x264这个库。准备编译环境win10中内置了Linux子系统&... 查看详情

ffmpeg libx264 AVCodecContext 设置

】ffmpeglibx264AVCodecContext设置【英文标题】:ffmpeglibx264AVCodecContextsettings【发布时间】:2012-02-2816:32:49【问题描述】:我正在使用最近的Windows(2011年1月)ffmpeg版本并尝试在H264中录制视频。使用以下设置可以在MPEG4中正常录制:c-&g... 查看详情

ffmpeg中的libx264编码流程

...术A本文主要参考[1],为了更加清晰地展现出编码过程中FFmpeg与libx264的交互流程。编码流程主要有三个步骤:FFmpeg的编解码的API详细介绍可参考FFmpeg音频解码#编解码API介绍部分。FFmpeg的libx264编码器AVCodecff_libx264_encoder定义在libavco... 查看详情

ffmpeg/libx264 C API:从短 MP4 末尾丢弃的帧

】ffmpeg/libx264CAPI:从短MP4末尾丢弃的帧【英文标题】:ffmpeg/libx264CAPI:framesdroppedfromendofshortMP4【发布时间】:2017-12-2323:28:03【问题描述】:在我的C++应用程序中,我拍摄了一系列JPEG图像,使用FreeImage处理它们的数据,然后使用ffmp... 查看详情

使用 ffmpeg libav 和 libx264 从图像创建视频?

】使用ffmpeglibav和libx264从图像创建视频?【英文标题】:Creatingavideofromimagesusingffmpeglibavandlibx264?【发布时间】:2013-07-2221:32:01【问题描述】:我正在尝试使用ffmpeg库从图像创建视频。这些图像的大小为1920x1080,应该使用.mkv容器... 查看详情

如何在 macos 上为 ffmpeg 启用 libx264

】如何在macos上为ffmpeg启用libx264【英文标题】:howtoenablelibx264forffmpegonmacos【发布时间】:2020-12-2620:29:12【问题描述】:我正在运行一个运行ffmpeg的代码,但由于libx264而崩溃并出现以下错误:未知编码器\'libx264\'File"/anaconda3/lib/pyt... 查看详情

开启ffmpeg+libx264软解码的多线程特性(代码片段)

之前编译的FFmpeg+libx264可以实现分辨率为1920*1080的H264视频流的软解码,经过测试,随着码率的提高,解码效率会降低,导致解码速率跟不上实际帧率。查找资料发现FFmpeg软解码支持多线程特性,程序上不用做修改,只是在软解码... 查看详情

h264编码系列之ffmpeg和x264码率控制分析

参考技术A点击获取更多音视频技术讲解h264编码算法复杂、参数众多,单码率控制又分为三种模式。注:符号“∝”表示成正比例码率∝关键帧间隔(视频质量其他参数恒定)码率∝分辨率(视频质量其他参数恒定)码率∝帧率... 查看详情

h.264---码率控制策略

...ion发生时,马赛克很少。码率控制算法根据图像内容确定使用的比特率,图像内容比较简单则分配较少的码率(似乎码字更合适),图像内容复杂则分配较多的码字,这样既保证了质量,又兼顾带宽限制。这种算法优先考虑图像质... 查看详情

ffmpegh.264mp4编码告警:non-strictly-monotonicpts

解决方法:参考文章1:ffmpeg使用libx264编码时,为何一直出现x264[warning]:non-strictly-monotonicPTS?参考文章2:non-strictly-monotonicPTS参考文章3:FFmpeg中使用libx264进行码率控制切换到h.265编码倒没这个警告 查看详情

cygwin 上的 FFMPEG 无法编译 libx264 错误:未知类型名称“HMODULE”

】cygwin上的FFMPEG无法编译libx264错误:未知类型名称“HMODULE”【英文标题】:FFMPEGoncygwinfailedtocompilelibx264error:unknowntypename‘HMODULE’【发布时间】:2017-12-2404:00:28【问题描述】:我正在尝试在cygwin环境下在ffmpeg中编译libx264。我遵... 查看详情

如何解决“错误:找不到 libx264”?

...:2014-09-2414:14:07【问题描述】:我需要安装支持libx264的ffmpeg以启用H.264编码。我使用以下脚本成功安装了libx264,并使用了android-ndk-r9d中提供的工具链。#!/bin/bashNDK=~/android-ndk-r9dSYS 查看详情

ffmpeg 没有找到 vcodec libx264

】ffmpeg没有找到vcodeclibx264【英文标题】:ffmpegnotfindingvcodeclibx264【发布时间】:2011-06-1121:40:48【问题描述】:我已安装最新的ffmpeg,但似乎无法找到视频编解码器。我是否需要完全删除ffmpeg并重新运行./configure以使ffmpeg找到视频... 查看详情

libx264开发笔记:libx264介绍海思平台移植编译(代码片段)

...合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…&# 查看详情

windows下ffmpeg+x264编译,解决“libx264notfound”问题

参考技术A【问题】【解决方案】通过设置x264 的 PKG_CONFIG_PATH,用以解决x264头文件的路径,解决x264依赖库的位置路径问题。 查看详情

ffmpeg推流时,可能出现错误:unknownencoder'libx264'

使用如下命令推流时:p.p1margin:0.0px0.0px0.0px0.0px;font:18.0pxMenlo;color:#4d2f2d;background-color:#dfdbc3span.s1ffmpeg-re-ia.mp4-vcodeclibx264-acodecaac-fflvrtmp://172.31.102.165:1935/myapp 可能会出现如下错误 查看详情

在配置 ffmpeg 时出现错误“未找到 x264”

】在配置ffmpeg时出现错误“未找到x264”【英文标题】:whileconfiguringffmpegigettheerror"x264notfound"【发布时间】:2021-04-2509:21:46【问题描述】:我使用mingw32编译带有libx264的ffmpeg。我使用以下配置:./configure--enable-gpl--enable-nonfre... 查看详情

h264三种码率控制方法(cbr,vbr,cvbr)

...后一帧发生motion,就会导致该帧size变大,从而导致统计的码率大于预设 查看详情