2个版本
0.0.2 | 2022年3月8日 |
---|---|
0.0.1 | 2021年5月11日 |
#200 in 视频
98KB
1.5K SLoC
moonfire-ffmpeg
一个Rust包装器,用于Moonfire NVR所需的ffmpeg的部分功能
- 基本流媒体:连接到RTSP流。(尽管最终我希望Moonfire NVR用纯Rust来实现这个功能;请参阅scottlamb/moonfire-nvr#37。)
- 视频分析:解码H.264(可能最终也会解码H.265;并且最终可能具有硬件加速),将其色彩空间转换为RGB,并缩小尺寸以供moonfire-tflite使用。
有一个功能更全的ffmpeg crate。但我使用自己的几个原因:
- ffmpeg crate没有积极维护。(尽管有一些分支。也许ffmpeg4是你想要的。)
- 构建moonfire-ffmpeg不需要bindgen,这在一些平台上可能很难安装。(请参阅其要求。)相反,moonfire-ffmpeg使用一个非常薄的C包装器围绕ffmpeg,以避免嵌入(可能特定版本的)ffmpeg ABI细节,如结构布局。
- moonfire-ffmpeg检查编译时使用的ffmpeg和实际运行的ffmpeg之间的ABI兼容性,这对于使它与共享库兼容非常重要。我认为ffmpeg crate更倾向于与静态库一起使用。
- moonfire-ffmpeg公开了一些非常具体的ffmpeg API片段,这些是我需要的,而ffmpeg crate没有,例如读取
avcodec_open2
的非理解参数。 - moonfire-ffmpeg根据MIT和Apache-2.0许可,而ffmpeg crate是WTFPL。我认为这是moonfire-ffmpeg的优势,因为WTFPL吓跑了一些人和公司。
依赖关系
~0.4–5.5MB
~16K SLoC