Protogalaxy

Planet #0

PHSS-Core开发日志#10 FFmpeg与其JavaCPP实现踩坑纪录

Ps.PHSS的这部分开发过程中还衍生出了一个基于FFmpeg的java原生音视频metadata获取的轮子,相关文章可以参考这里。 前言 在完成了简单的安全层架构,实现了基本的登录功能之后,项目中于是进入了较为核心的音视频管理功能的开发阶段,在前期技术选型时,考虑到项目的可维护性与稳定性,我最终选择了FFmpeg作为PHSS的多媒体管理外部库,作为老牌多媒体处理软件,FFmpeg的可用性与稳定性都是经过了多年生产环境检验的。 但是在编写专辑音轨管理功能的具体实现过程中,我发现FFmpeg这个东西竟然找不太到全面且易读的开发相关的Guide和Documentation。并且实际使用过程中所用到的FFmpeg的Java实现(FFmpeg-JavaCPP-Presents,基于JavaCPP,由Bytedeco编写)更是只有一个基本的demo,FFmpeg的其他更深度的内容也是一点都没提,在Google上能找到的也大多都是命令行版的FFmpeg的使用方法,在Github上能找到的音视频metadata获取相关的项目也大多都是基于命令行版FFmpeg或者是其他一些奇奇怪怪的,早已停止更新的第三方库,看起来非常的不靠谱。由于FFmpeg的Java实现是基于JavaCV的子项目,更新一直都非常稳定,所以我还是坚定不移的选择了JavaCPP版FFmpeg作为项目的多媒体处理库,因此我只能自己一点点看那个JavaDoc和网上能找到的一些零星的老版本的开发示例来一点点学习相关的开发知识,在这里记录以下,方便自己和其他有需要的老哥们日后有个参考。(以下叙述是以FFmpeg-JavaCPP作为基础,其基础技术JNI的相关介绍可以点这里)