ffmpeg是开源的媒体处理框架,使用其自带的ffmpeg工具可以很便捷的对媒体文件进行处理。ffmpeg参数很多,通过组合参数可以实现很多功能。下面我将分享一些常用的参数,总结一些经常用到的使用场景。
| 项目 | 规范 | 示例 | 说明 |
|---|---|---|---|
| 包名 | 全小写、简短、语义明确 | http, json, ossserver | 不要使用驼峰、大写、下划线 |
| 文件名 | 与包功能对应,小写加下划线分隔 | server.go, handler_test.go | 文件名可带 _test.go |
| 目录名 | 通常与包名一致 | /ossserver, /internal/ossserver | 导入路径中使用目录名 |
| 导入名 | 通常与包名相同 | import "example.com/app/ossserver" | Go 工具会自动识别 |
💡 不要在包名中包含
go或项目名重复的前缀(例如ossserver/ossserver)。
RTP 视频时间戳单位是 时钟周期,标准频率为 90 kHz(即每秒 90000 个 tick)。 它代表帧在播放时间轴上的“相对时间”,而不是发送时间。
| 十进制 Type | 十六进制示例 | 名称 | 说明 |
|---|---|---|---|
| 1 | 0x41 | 非 IDR slice | 普通 P/B 帧 |
| 5 | 0x65 | IDR slice | 关键帧 (I 帧) |
| 6 | 0x06 | SEI | 附加信息(如时间戳) |
| 7 | 0x67 | SPS | 序列参数集 |
| 8 | 0x68 | PPS | 图像参数集 |
| 9 | 0x09 | AUD | 访问单元分隔符 |
| 28 | - | FU-A | RTP 分片 (常用) |