使用ffmpeg编码时,如何设置恒定码率,并控制好关键帧I帧间隔 - 黑色幽默2018 - 博客园

标签: | 发表时间:2019-05-21 14:05 | 作者:
出处:https://www.cnblogs.com

      1. 大家在 使用 ffmpeg进行视频 编码时, 使用-b命令,想 控制比特率,却发现结果并没有如我们 设置所愿,通过码流分析器观察视频码流, 码率的波动还是很大的, ffmpeg 控制的并不好,这时候,我们可以通过以下命令解决:

-maxrate biterate -minrate biterate -bf1-b_strategy0

      其中 -maxrate、-minrate为 设置最小最大比特率,-bf为设置B帧数目,其实就是设置 编码是B、P、I帧的结构,我这里设置的为IPBPBP结构,-b_strategy这个命令是为了自适应的添加B帧数目,ffmpeg编码器会根据视频的应用场景,自适应的添加B帧,通过设置-b_strategy 0,,将这个功能关闭,那么就会根据你的设置要求进行编码。除此之外,还可以使用-pass,进行2次 码率控制,编出来的视频效果更好;下面我介绍-pass的使用方法:

      (1) -pass 1 -passlogfile ffmpeg2pass 第一步先编一次,生成 ffmpeg2pass 文件

      (2) -pass 2 -passlogfile ffmpeg2pass 第二次会根据第一次生成的ffmpeg2pass 文件,再进行码率控制。

2.  如何设置视频 关键帧I帧间隔问题

       刚开始我只使用-g命令,设置GOP长度,编码后,发现I帧间隔长度并不是我想要的,后来我通过以下命令问题解决了:

-keyint_min60-g60-sc_threshold0

     其中-keyint_min为最小 关键帧间隔,我这里设置为60帧;-sc_threshold这个命令会根据视频的运动场景,自动为你添加额外的I帧,所以会导致你编出来的视频关键帧间隔不是你设置的长度,这是只要将它设为0,问题就得到解决了!!

 

        3.在用ffmpeg转换视频到flv过程中,需要设置关键帧的间隔,以便在播放过程中实现精确定位。在网上查找了不少,最后发现这个指令有效:

-g1-keyint_min2

 

// 将关键帧帧间隔设置为2s

./ffmpeg -i ~/Documents/video/fc.mkv -acodec libfdk_aac -vcodec libx264 -keyint_min 50 -g 50 -sc_threshold 0 fc_transcode.mkv

 

如果使用OBS推流,可以在设置中设置关键帧间隔

相关 [ffmpeg 编码 恒定] 推荐:

使用ffmpeg编码时,如何设置恒定码率,并控制好关键帧I帧间隔 - 黑色幽默2018 - 博客园

- -
控制比特率,却发现结果并没有如我们. 设置所愿,通过码流分析器观察视频码流,. 控制的并不好,这时候,我们可以通过以下命令解决:.       其中 -maxrate、-minrate为. 设置最小最大比特率,-bf为设置B帧数目,其实就是设置. 编码是B、P、I帧的结构,我这里设置的为IPBPBP结构,-b_strategy这个命令是为了自适应的添加B帧数目,ffmpeg编码器会根据视频的应用场景,自适应的添加B帧,通过设置-b_strategy 0,,将这个功能关闭,那么就会根据你的设置要求进行编码.

Ubuntu安装FFmpeg编码出MP4文件的方法

- - 开源软件 - ITeye博客
Ubuntu安装FFmpeg编码出MP4文件的方法. 2011-09-06 16:42 佚名 linux公社 字号:. FFmpeg是Ubuntu下强大的视频、音频编解码工具. x264可以编码出高质量的h.264视频,iPad必须要h.264编码或mpeg-4编码的视频才能正常播放. Ubuntu官方源默认是不提供h.264编码的,这就需要我们手工编译安装FFmpeg的h.264支持,使之能够编码出MP4文件.

ffmpeg轉檔

- - SSORC.twSSORC.tw
ffmpeg 是一個命令列工具,用來對視訊檔案轉換格式. -i = 來源影片 (後面的參數先不接的話可以查看來源影片的詳細資訊,可供想要轉成什麼品質的參考). -vcodec = video code (如果要保留原格式就用 -vcodec copy). -acoder = audio code  (如果要保留原格式就用 -vcodec copy).

ffmpeg裁剪合并视频

- - inJava
这里裁剪是指时间轴裁剪,不是空间裁剪. 比如说,你想把视频的从一分20秒开始,30秒的视频裁剪出来,保存成一个视频. ffmpeg提供简单的命令参数:. -ss 开始时间,如: 00:00:20,表示从20秒开始;. -t 时长,如: 00:00:10,表示截取10秒长的视频;. -i 输入,后面是空格,紧跟着就是输入视频文件;.

玩转 FFmpeg 的 7 个小技巧

- mk - OSMSG
FFmpeg堪称音频和视频应用程序的瑞士军刀,提供了丰富的选项和灵活性.很多时候用户为了看视频和听音乐都安装了ffmeg.更多关于ffmeg的详细介绍:here,可以通过ffmpeg -formats查看FFmpeg支持的视音频格式,左侧若是E表明可以编码,D表明可以解码. 本文着重介绍命令行下ffmeg的7个技巧:.

Nginx+ffmpeg搭建Apple Http Live Streaming笔记

- - 移动开发 - ITeye博客
起始Nginx来搭建HLS步骤非常少. 安装好Nginx,然后跑起来. 把切片好的视频和m3u8文件放到部署目录,直接访问就可以了. 网上国内国外的找了好多博客. 这里一定注意一点,不要用VLC播放器来测试,最好用iPad或者iPhone,再么用Safari 开发模式下模拟iPad、iPhone的浏览器模式播放.

CentOS 下通过 JavaCPP 调用 FFMPEG

- - CSDN博客综合推荐文章
   FFMPEG 是一个广泛用于媒体处理的库,在Java的世界里,处理视频的能力相当弱,于是有很大需求需要Java 调用 FFMPEG.   Java 调用C 的方式有很多,可以用最原始的JNI方式,也可以JNA方式,还可以是命令行.    采用命令行的方式比较简单,不过有很大局限性,尤其是涉及到 视频的处理和分析的时候,比如要取出某个packet,然后进行处理.

FFmpeg和一千多次bug修正

- - Solidot
Google透露,它在两年多时间内帮助开源跨平台多媒体编解码器库FFmpeg发现和修复了1000多个bug. Google称,它不仅仅重视自家产品的安全,它的安全团队和Google雇员还经常评估外部软件,并将结果报告给软件供应商或维护者. FFmpeg和它的衍生版本Libav被许多项目广泛使用,其中包括Google Chrome、MPlayer、VLC和xine,Google认为帮助FFmpeg发现bug将会让数以百万计的用户受益.

ffmpeg 视频转码例子集合

- - 开源软件 - ITeye博客
-muxrate 复用码率,设置之后整体码率模式才是CBR. -c:v mpeg2video MPEG2视频编码. -flags ildct+ilme 隔行扫描. -top 隔行扫描前场/后场优先模式 ,1是前场(顶场),0是后场(底场). -streamid 设置视频、音频PID,0视频,1音频.

如何用FFMpeg生成视频

- - 掘金 后端
FFMpeg读做“FF Mpeg”, “FF”指的是 “Fast Forward”,而“Mpeg”指的是 Moving Picture Experts Group(动态图像专家组). 根据官方介绍,FFMpeg是一个完整的、跨平台的音频和视频录制、转换和流媒体解决方案. 简单来说,只要涉及 音视频开发,基本绕不开这个工具.