音频码率转换V1.0 技术方案建议书
音频码率转换V1.0
技术方案建议书
北京盖思拓科技有限公司
2022年8月
1. 目录
1. 目录
1 需求描述
1.1 引言
1.1.1 需求概述
1.1.2 项目目标
1.2 技术方案说明
1.2.1 方案概要
1.2.2 音频转码服务完成的功能
2 系统开发方案
2.1 系统技术架构
2.1.1 音频转码服务
1 需求描述
1.1 引言
1.1.1 需求概述
考虑到音乐人发布无损音质.wav文件过大问题,传输,播放过程中耗时问题,提出音乐文件转码方案,经过多次实验论证,市场验证 .wav播放文件在不被人类听觉所感知的情况下降低比特率,转成.mp3文件,本次所转换的mp3文件比特率为192,验证结论 .wav原文件大小 32.2MB 转成192码率的mp3文件大小是2.9MB ,大大的降低了音乐存储的空间和使用过程中读取的效率问题,
转码成功后的音乐需要上传到远程S3服务中存储,并且替换业务库里原有的S3存储字段
1.1.2 项目目标
集成开源项目FFmpeg组件, 实现命令行调用,音乐码率转换操作,集成现有的微服务体系架构SpringCloud生态中,集成现有的注册,配置中心Nacos,完成转码过程中状态记录,错误排查,转码成功后的音乐上传到S3服务存储,并且替换业务库里原有的S3存储字段
1.2 技术方案说明
1.2.1 方案概要
1.2.1.1 音乐转码服务系统交互架构说明:
架构图说明:
1、转码服务目前只为公司内部提供音频转码服务,集成了微服务网关中,使用者可以在Naocs中获取到该服务的名称,并且使用名称映射到本服务内,匹配到本服务提供的外部接口地址 从而触发本服务内部的转码工作线程。
2、内部服务收到转码的请求后,会记录各个环节工作的状态信息,并且完成转码。
3、对于完成转码后的音频文件,会调用上传服务上传到S3远程服务器中,并且存储返回的Url地址。
4、修改业务数据的S3音乐字段,.wav文件替换成.mp3文件并且维护最终状态,至此完成转码操作。
1.2.2 音频转码服务完成的功能
调用者在Nacos中获取到本服务名并且发起调用,安全认证为互信机制,也可以通过网关验证Token权限并且发起调用。
1.2.2.1 音频转码服务
对于音频转码服务实现功能重点说明如下:
调用者通过Nacos获取服务名或通过网关调用服务到本服务内,平台目前包括: 音频转码FFmpeg、调用记录状态维护 、上传S3 维护业务发起方数据库信息、 等四个功能模块。具体功能模块和所包含的子功能如下:
服务 |
功能 |
子功能 |
soundsright _transcoding 音频转码 服务 |
搭建服务 |
创建SpringBoot项目并且引入SpringCloud |
项目集成到Nacos注册,配置中心 |
||
引入相关服务jar包,和需要的组件,FFmpeg组件 |
||
数据库 |
数据库,数据表创建 |
|
封装FFmpeg相关Api |
封装调用类 |
|
维护操作状态 |
添加请求记录状态信息 |
|
修改请求记录状态信息 |
||
查询请求记录状态信息 |
||
转码操作环节 |
捕获异常 |
|
维护状态 |
||
日志查询 |
||
转码后的文件存储 |
||
调用S3服务 |
组装本地文件调用,MD5值上送 |
|
维护调用状态 |
||
业务数据维护 |
写入业务数据音频文件字段 |
|
维护最终状态 |
2 系统开发方案
2.1 系统技术架构
2.1.1 音频转码服务
2.1.1.1 数据库表设计如下
表名 |
字段 |
类型 |
长度 |
必填项 |
描述 |
SR_Transcoding_dev.t_transcoding_log表 |
id |
int |
11 |
否 |
主键 |
old_url |
varchar |
255 |
|
(需要转换)旧的音频文件路径 |
|
new_url |
varchar |
255 |
|
转换后的音频文件路径 |
|
bit_rate |
int |
11 |
|
转换的比特率 |
|
old_suffix |
int |
1 |
|
旧的音频文件类型 示例 1:wav |
|
new_suffox |
int |
1 |
|
转换后的音频文件类型 示例 1:mp3 |
|
state |
int |
1 |
|
1:处理中,2 : 转码完成,3:转码失败,4:上传s3成功,5:上传s3失败 ,6:业务数据库更新成功 |
|
s3_result_url |
varchar |
255 |
|
上传s3返回的地址 |
|
|
|
|
|
|
|
2.1.1.2 功能性交互分类
2.1.1.2.1 服务提供对外请求转码接口
名称、标识符 |
调用者提供转码接口 |
功能描述 |
操作角色: 其他需要转码的服务平台发起调用, 功能: 收到调用后,记录到本地数据库 并且维护好状态,发起转码操作,捕获异常,成功转码后上传s3服务,并且修改状态,s3上传成功后修改业务系统数据库字段,完成转码流程最终态 |
输入 |
1. file_url 需要转码的文件路径地址 2. 业务id |
输出 |
1. code : 200操作标识 成功 2. message : 操作描述 |
2.1.1.2.2 调用S3服务平台文件接口
名称、标识符 |
上传S3文件接口 |
功能描述 |
操作角色: 转码服务发起调用, 功能: 转码服务平台转码成功后,会将临时的转码后的文件,组装成文件流对象并且调用上传S3文件接口,完成上传,调用成功或失败记录状态, s3上传成功后修改业务系统数据库字段,完成转码流程最终态 |
输入 |
1.file 文件资源File类型 2.checksum 资源内容MD5值 3.type类型 3 歌曲 |
输出 |
1. code : 200 操作标识 成功 , 3. msg: 操作描述 4. data: 对象 包含如下: "addr": //文件资源地址 "contentMd5": //S3响应的Content-MD5 "metadata": { "contentLength" //文件大小byte "contentType" //文件类型 "etag": //s3对应实体标签,以后可能会用到 }} //返回数据
|