【ffmpeg基础】ffmpeg视频编码

这篇具有很好参考价值的文章主要介绍了【ffmpeg基础】ffmpeg视频编码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ffmpeg编码H264

输入为YUV输出为H264

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 BlowingBubbles_416x240_50.h264

通过-s来指定输入yuv的分辨率(需要先指定分辨率);

通过-pix_fmt来指定输入yuv的像素格式;

通过-i来指定输入yuv的路径和名称;

通过-r 来指定要编码的帧率;

通过-vcodec来指定视频编码的编码器为libx264

输入为YUV输出为MP4(h264)

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 BlowingBubbles_416x240_50.mp4

输入为MP4(包含音频)输出为MP4(H264)去掉音频

ffmpeg -i input.mp4 -vcodec libx264 -an output.mp4

通过-an参数来去掉输入input.mp4中的音频,并通过-vcodec libx264将输入的视频进行h264重新编码。

ffmpeg -i input.mp4 -vcodec copy -an output.mp4

通过-an参数来去掉输入input.mp4(h264)中的音频,并通过-vcodec copy将输入的视频复制到out.mp4中,视频编码类型和大小不会变化。

H264编码参数设置[I帧间隔、B帧个数(B帧决策类型)、crf、码率配置等]

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 -x264-params "scenecut=0:keyint=50:b-adapt=0:bframes=3:bitrate=500" BlowingBubbles_416x240_50.h264

通过-x264-params来设置libx264编码器参数;编码参数通过= :的形式,=是给具体编码参数赋值,而:是表示下一个参数;参数需要是libx264支持的参数。scenecut=0表示场景切换关闭;keyint=50表示I帧间隔为50(即gop为50);b-adapt=0表示b帧类型决策关闭,采用固定b帧个数;bframes=3表示b帧个数为3;bitrate=500表示编码码率为500k。-x264-params中的部分参数也可以在写在外面,比如bframes=3可以使用-nb 3;bitrate=500可以使用-vb=500k。如下:

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 -vb 500k -bf 3 -x264-params "scenecut=0:keyint=53:b-adapt=0" BlowingBubbles_416x240_50.h264

上面的命令实际上配置的是libx264的平均码率模式(ABR(Average Bit Rate)),即-vb 500k 配置了编码平均码率为500k。此外可以配置libx264的“固定码率”模式(CBR(Constant Bit Rate)),如下命令;-minrate 500k表示编码最小码率为 500k;-maxrate 500k 表示编码最大码率为 500k -bufsize 400k表示编码器的vbvbuff大小为500k(某一时刻的瞬时码率的最大值);通过-vb(平均码率)、-minrate(最小码率),maxrate(最大码率),bufsize(瞬时码率最大值)设置相同值可以模拟CBR。 bufsize参数越大码率波动越大,但是越能得到较高的画质,如果不是极其严格要求码率固定,可以将bufsize的大小设置比maxrate大一点。

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 -vb 500k -minrate 500k -maxrate 500k -bufsize 500k -bf 3 -x264-params "scenecut=0:keyint=53:b-adapt=0" BlowingBubbles_416x240_50.h264

通过 -x264-params也能配置libx264的“固定码率”模式(CBR(Constant Bit Rate)),如下命令。在-x264-params中添加bitrate=500:vbv-maxrate=500:vbv-bufsize=500参数

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264  -bf 3 -x264-params "scenecut=0:keyint=53:b-adapt=0:bitrate=500:vbv-maxrate=500:vbv-bufsize=500" BlowingBubbles_416x240_50.h264

libx264编码编码模式常用的有ABR、CBR外还有CRF模式,如下命令;-crf的范围为0-51和QP的范围一致,在编码器内部crf参数其实会影响编码的QP值。crf值从低到高编码出来的视频画质是逐渐降低的,也就是说crf的值越低编码画质越高,同时编码出的码率也是越高的,crf的值越高编码画质越低,同时编码出的码率也是越低的,这个特性和QP是一样的。通常crf设置为18-31是比较均衡的一个范围,即画质和码率能得到较好的均衡。

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 -crf 26 -x264-params "scenecut=0:keyint=53:b-adapt=0:bframes=3" BlowingBubbles_416x240_50_1.h264

libx264编码时候可以选择不同的档次来加快编码速度;档次可以通过-preset参数来设置支持的档次有10种,如下;其中medium为默认档次;从左往右编码速度是越来越慢;-preset不仅影响编码速度也会影响编码质量,从左往右编码质量是越来越高,也就是说-preset是调节编码速度和编码质量的一个参数。

"ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"

-preset的使用示例如下[-preset faster]。

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx264 -crf 26 -preset faster -x264-params "scenecut=0:keyint=53:b-adapt=0:bframes=3" BlowingBubbles_416x240_50_1.h264

二、ffmpeg编码H265

输入为YUV输出为H265

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 BlowingBubbles_416x240_50.h265

通过-s来指定输入yuv的分辨率(需要先指定分辨率);

通过-pix_fmt来指定输入yuv的像素格式;

通过-i来指定输入yuv的路径和名称;

通过-r 来指定要编码的帧率;

通过-vcodec来指定视频编码的编码器为libx265

输入为YUV输出为MP4(h265)

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 BlowingBubbles_416x240_50.mp4

注意编码h265并封装输出为mp4,则建议在ffmpeg命令行中添加-vtag hvc1这个参数,如果不加这个参数编码出的h265的mp4文件在有些播放器上无法播放(mac平台上的QuickTime Player就无法播放)。

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 -vtag hvc1 BlowingBubbles_416x240_50.mp4

输入为MP4(包含音频)输出为MP4(H265)去掉音频

ffmpeg -i input.mp4 -vcodec libx265 -an output.mp4

通过-an参数来去掉输入input.mp4中的音频,并通过-vcodec libx265将输入的视频进行h265重新编码。

ffmpeg -i input.mp4 -vcodec copy -an output.mp4

通过-an参数来去掉输入input.mp4(h265)中的音频,并通过-vcodec copy将输入的视频复制到out.mp4中,视频编码类型和大小不会变化。

H265编码参数设置[I帧间隔、B帧个数(B帧决策类型)、crf、码率配置等]

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 -x265-params "scenecut=0:keyint=50:b-adapt=0:bframes=3:bitrate=500" BlowingBubbles_416x240_50.h265

通过-x265-params来设置libx265编码器参数;编码参数通过= :的形式,=是给具体编码参数赋值,而:是表示下一个参数;参数需要是libx265支持的参数。scenecut=0表示场景切换关闭;keyint=50表示I帧间隔为50(即gop为50);b-adapt=0表示b帧类型决策关闭,采用固定b帧个数;bframes=3表示b帧个数为3;bitrate=500表示编码码率为500k。-x265-params中的部分参数也可以在写在外面,比如bframes=3可以使用-nb 3;bitrate=500可以使用-vb=500k。如下:

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 -vb 500k -bf 3 -x265-params "scenecut=0:keyint=53:b-adapt=0" BlowingBubbles_416x240_50.h265

libx265编码器和libx264一样有ABR、CBR以及CRF模式,甚至参数都一样;如下是libx265编码下CRF配置。

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 -crf 26 -x265-params "scenecut=0:keyint=53:b-adapt=0:bframes=3" BlowingBubbles_416x240_50_1.h265

libx265也支持-preset参数来设置编码速度和编码质量的调节。和libx264一样libx265的-preset参数也有10种档次,如下所示。

"ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"

libx265也支持-preset设置编码命令如下;文章来源地址https://www.toymoban.com/news/detail-621419.html

ffmpeg -s 416x240 -pix_fmt yuv420p -i BlowingBubbles_416x240_50.yuv -r 50 -vcodec libx265 -crf 26 -preset faster -x265-params "scenecut=0:keyint=53:b-adapt=0:bframes=3" BlowingBubbles_416x240_50.h265

到了这里,关于【ffmpeg基础】ffmpeg视频编码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频学习之ffmpeg常用基础命令整理

    基于windows环境安装好必要的ffmpeg后,对ffmpeg基础命令进行一些了解:   有时候写入MP4文件会不成功,改成flv就好 1:视频裁剪:   2:文字水印: 编译的时候需要支持 FreeType、FontConfig、iconv,系统中需要有相关的子库, 在 FFmpeg 中增加纯字母水印可以使用 drawtext 滤镜进行支持

    2024年02月12日
    浏览(34)
  • 【音视频处理】基础框架介绍,FFmpeg、GStreamer、OpenCV、OpenGL

    大家好,欢迎来到停止重构的频道。  本期我们介绍 音视频处理的基础框架 。 包括FFmpeg、GStreamer、OpenCV、OpenGL 。 我们按这样的分类介绍 : 1、编解码处理:FFmpeg、GStreamer 2、图像分析:OpenCV 3、复杂图像生成:OpenGL 首先是编解码处理的基础框架,这类基础框架的 应用场景

    2024年02月08日
    浏览(37)
  • Java如何整合FFmpeg、FFprobe等音视频处理工具,零基础照样玩

    最后奉上工具的学习资料(感兴趣的可以看看),废话不多说!!!!! FFmpeg是啥 :​ ffmpeg(命令行工具) 是一个快速的音视频转换工具。 FFmpeg能干啥 :如果你用过爱剪辑的话或者其他一些音视频处理软件的话,你可以理解他们能做的你用玩意都能做。 为啥要用FFmpeg :开源

    2024年02月02日
    浏览(49)
  • ffmpeg@音视频工具@音视频合并

    FFmpeg中文网 (github.net.cn) FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓

    2024年03月17日
    浏览(54)
  • 音视频 FFmpeg音视频处理流程

    推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(44)
  • 音视频 ffmpeg命令提取音视频数据

    保留封装格式 提取视频 提取音频 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    浏览(45)
  • 【FFmpeg】音视频录制 ① ( 查询系统中 ffmpeg 可录制的音视频输入设备 | 使用 ffmpeg 命令录制音视频数据 | 录制视频数据命令 |录制音频数据| 同时录制音频和视频数据命令 )

    在 Windows 系统中 , 使用 ffmpeg 命令 录制 音视频 , 需要先获取 系统的 音视频设备 信息 , 录制 音视频 本质上是从 系统音视频设备 中获取数据 ; 执行 命令 , 可以获取 系统中 ffmpeg 可用的 DirectShow 音视频输入设备 ; 命令参数解析 : -list_devices true : 列出所有 ffmpeg 的 指定类型的可

    2024年04月25日
    浏览(71)
  • 音视频 ffmpeg视频裁剪

    将输入视频帧的宽度和高度从x和y值表示的位置裁剪到指定的宽度和高度;x和y是输出的左上角坐标,协调系统的中心是输入视频帧的左上角。 如果使用了可选的keep_aspect参数,将会改变输出SAR(样本宽比)以补偿新的DAR(显示长宽比) 推荐一个零声学院项目课,个人觉得老师讲得不

    2024年02月10日
    浏览(38)
  • 音视频开发 RTMP协议发送H.264编码及AAC编码的音视频(C++实现)

    RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如 FMS , Red5 , crtmpserver 等。RTMP协议可用于实现直播、点播应用,通过 FMLE(Flash Media Live Encoder) 推送音

    2023年04月08日
    浏览(47)
  • 音视频 ffmpeg命令视频录制(Windows)

    先安装dshow软件 Screen Capturer Recorder, 项目地址:https://sourceforge.net/projects/screencapturer/files/ 然后查看可用设备名字:ffmpeg -list_devices true -f dshow -i dummy 录制视频(默认参数) 录制声音(默认参数) 同时录制声音和视频(默认参数) 查看视频录制的可选参数 查看视频录制的可

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包