步骤如下:
- 安装和准备FFmpeg:确保包含所需编码器(如libx264)。
- 基本命令行编码:使用ffmpeg命令进行转码,设置视频编码器、CRF、预设等。
- API编码流程(针对开发者):
a. 注册组件(旧版本可能需要,新版本可能自动处理)
b. 初始化上下文和输出格式
c. 查找并打开编码器
d. 配置编码参数(分辨率、帧率、码率等)
e. 处理输入帧(读取、转换格式)
f. 编码循环(发送帧,接收包)
g. 时间戳处理和时间基转换
h. 写入输出文件
i. 清理资源 - 常见参数说明:CRF、preset、profile、tune等。
- 错误处理和调试:处理权限问题、编码器缺失、内存管理等。
一、命令行工具操作指南
1. 基础编码命令
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 23 -c:a aac -b:a 128k output.mp4
- 参数解析:
-c:v libx264:指定H.264视频编码器。-preset slow:平衡编码速度与压缩率(可选值:ultrafast, superfast, veryfast, fast, medium, slow等)。-crf 23:恒定质量模式(CRF范围0-51,值越小质量越高,推荐18-28)。-c:a aac:音频编码为AAC格式。-b:a 128k:音频码率设为128kbps。
2. 常用参数扩展
- 分辨率调整:
ffmpeg -i input.mp4 -vf "scale=1280:720" -c:v libx264 output.mp4
错误信息:
main.bash: line 1: ffmpeg: command not found (exit status 127)
- 帧率控制:
ffmpeg -i input.mp4 -r 30 output.mp4 # 强制输出帧率为30fps
- 关键帧间隔(GOP):
ffmpeg -i input.mp4 -g 60 -keyint_min 60 # 每60帧一个关键帧[[21]]
- 硬件加速编码(如NVIDIA NVENC):
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p7 -cq 21 output.mp4
3. 高级功能示例
- 提取YUV数据:
ffmpeg -i input.mp4 -c:v rawvideo -pix_fmt yuv420p output.yuv
- 多路流封装:
ffmpeg -i video.mp4 -i audio.wav -map 0:v -map 1:a -c copy output.mkv
二、API开发流程(基于libavcodec)
1. 核心步骤
- 初始化上下文
avformat_alloc_output_context2(&fmt_ctx, NULL, NULL, output_file);
- 查找编码器
AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_H264);
AVCodecContext *codec_ctx = avcodec_alloc_context3(codec);
FFmpeg视频编码操作指南

最低0.47元/天 解锁文章
3874

被折叠的 条评论
为什么被折叠?



