九、ffmpeg视频转码

2023-06-26  本文已影响0人  LucXion

转码流程:ffmpeg会自动选择适合的工具对目标文件进行解码解封装,还原成原始文件PCM或YUV,然后使用用户指定的编码器进行编码封装。

CPU软编码

一般使用 libx264、libx265、librav1e 之类的编码器编码,当然也有人用 OpenH264 或者其他自己定制的编码器。

libx264

$ ffmpeg -h encoder=libx264

如果使用性能调优类模版 zerolatency,它包含了很多低延迟编码参数,常应用于画面延迟低的直播流。
-sliced-threads,将每一帧图片分成多份,放到多线程去并发处理。
--sync-lookahead O、--rc-lookahead 0,不需要提前预存帧,也没有双向参考帧,最大限度降低画面延迟
恒定码率:nal-hrd cbr、maxrate、minrate 与 bufsize,一般 bufsize 控制比 maxrate 小大概 1/3 ~ 1/2

ffmpeg -i  input.mp4 -pix_fmt yuv420p -vcodec libx264 -nal-hrd cbr -tune zerolatency -preset superfast -maxrate 900k -minrate 890k -bufsize 300k -x264opts "open-gop=1" output.ts
// 可通过 ffprobe -show_entries frame=pict_type -select_streams v -of xml a.mp4 查看 nal-hrd cbr 是否已经生效
GPU硬编码
// 查看mac的videotoolbox框架支持的视频编码器
ffmpeg -encoders | grep videotoolbox
// 使用 h264_videotoolbox 编码器进行转码操作
ffmpeg -i a.mp4 -vcodec h264_videotoolbox -b:v 2000k output.mp4
上一篇 下一篇

猜你喜欢

热点阅读