FFmpeg入门详解之75:FFmpeg转码器Java版之系统分析与设计
1.引言
1.1编写目的
本系统旨在提供一套简单、通用的音视频转码系统,将目前集成的第三方音视频服务替换,打造FYXY专属品牌的音视频服务,为公司添砖加瓦,提高核心竞争力。
1.2项目背景
融媒体是新时期传统媒体行业抢占市场的关键,而融媒体新闻的特色要靠音、视频新闻来突显。在传播过程中,音视频信息变得更为重要,逐渐成为传播的重要内容,未来将成为新闻发展的核心。
目前公司的音视频服务基本都是集成第三方厂商,效果一般,且成本较高。鉴于此,有必要打造FYXY专属品牌的音视频服务,无缝集成到业务系统中。
2.系统概述
2.1目标
本软件系统提供通用的音视频转码服务,可以对市面上流行的多种视频格式进行统一转码,可以灵活设置各种参数,提供统一架构和接口,方便业务系统调用和后期扩充功能。
2.2运行环境
运行环境 环境内容
硬件环境 最低配置:8CPU:Xeon,内存:32G,HD:2TB
软件环境 操作系统:Centos 7,64位系统
2.3需求概述
通用的音视频转码服务
多种音视频输入输出格式处理
转码队列管理
转码优先级策略管理
视频元信息管理
截图管理
自适应横竖屏管理
转码模板管理
3.系统功能模块
3.1功能描述
本软件系统提供通用的音视频转码功能,可以对市面上常见的音视频格式进行转码。
提供转码模板管理,可以进行快速参数配置。
提供转码队列管理,尤其将转码失败的任务独立出来,实现后续自动重新转码。
提供转码优先级策略管理,分为普通、高级两种,高级队列的优先级高于普通队列。
提供视频元信息管理,将音视频文件的元信息提取出来,统一管理。
提供截图管理,可以根据关键帧生成各种截图。
提供自适应横竖屏管理,根据原视频的宽高比自适应转码。
提供水印管理,可以设定文字或图片水印,后续支持多种水印特效。
3.2模块设计
模块名称 功能说明
音视频转码管理 搭建转码架构,构造转码内核(ffmpeg4.3.1),充分考虑好底层设计模式
输入输出格式管理 格式封装组件,灵活处理各种格式,可以已有扩展
转码队列管理 任务队列管理:详细的任务队列,显示进度和媒体信息
错误队列管理:需要自动重新转码,辅助客户分析出错原因
转码优先级策略管理 基本的优先级策略:分为“普通”和“高级”,第一期实现。
复杂的优先级策略:后期再详细设计,需要考虑业务系统
视频元信息管理 视频元信息:包括编解码格式、分辨率、码率、帧率、等
音频元信息:包括编解码格式、采样率、码率、声道、等
字幕元信息:包括字幕格式、字幕时间、特效、等
文件元信息:包括传输协议、封装格式、作者、编辑、等
截图管理 截图信息管理:包括类型、宽高、时间点、等
截图任务管理:包括创建、查询、删除、等
自适应横竖屏管理 需要封装为统一的“视频智能识别组件”
包括的信息会比较多,目前先考虑“自适应横竖屏”
包括有些手机拍照会旋转90度,需要智能处理
转码模板管理 转码模板组件:这是一个很复杂的功能组件,
整个转码过程都围绕着“转码模板”进行统一参数配置
包括系统预置模板、用户自定义模板
包括模板参数的智能处理
包括模板信息的增删改查
接口调用管理 接口调用RESTful,需要封装为独立的组件
对外,供各个业务系统调用,需要独立、简明、可扩展
对内,供转码内核系统集成,需要充分考虑复杂度
类型,使用JSON作为各个系统与模块之间的传递类型
结构,设计好调用接口和参数类型,对外不能轻易修改
4.系统设计
4.1总体设计
4.1.1系统总体架构图
4.1.2系统转码流程图
4.1.3系统功能模块图
4.2接口设计
4.2.1转码服务相关接口
创建转码任务
暂停转码任务
取消转码任务
查询转码任务
查询转码列表
4.2.2转码模板相关接口
查询模板列表
查询模板详情
4.2.3截图相关接口
创建截图
查询截图
4.2.4媒体信息相关接口
创建媒体信息任务
查询媒体信息任务
4.3数据结构设计
4.3.1文件
TCAVFile
TranscodeInputFile
TranscodeOutputFile
4.3.2转码任务
TranscodeTask
4.3.3转码模板
TranscodeTemplate
TranscodeTemplateContent
4.3.4截图
Snapshot
SnapshotTask
SnapshotConfig
4.3.5水印
WaterMark
4.3.6媒体信息
MediaInfoTask
mediaInfo
大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦。
《FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社》
京东自营链接:https://item.jd.com/13377793.html
京东其它链接:https://search.jd.com/Search?keyword=FFmpeg%E5%85%A5%E9%97%A8%E8%AF%A6%E8%A7%A3--%E9%9F%B3%E8%A7%86%E9%A2%91%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8&enc=utf-8&suggest=1.his.0.0&wq=&pvid=24e80535073b4e1f98e30a3e6963fe81
出书过程非常艰辛,来回校正了好几遍,后续还有FFmpeg系列的其它图书。
第一本:FFmpeg入门详解--音视频原理及应用--梅会东--清华大学出版社
第二本:FFmpeg入门详解--流媒体直播原理及应用--梅会东--清华大学出版社
第三本:FFmpeg入门详解--命令行及音视频特效原理及应用--梅会东--清华大学出版社
第四本:FFmpeg入门详解--SDK二次开发及直播美颜原理及应用--梅会东--清华大学出版社
===================================
FFmpeg入门详解之75:FFmpeg转码器Java版之系统分析与设计相关推荐
- FFmpeg入门详解之6:VLC播放器简介
VLC播放器 VLC支持多种常见音视频格式,支持多种流媒体传输协议,也可当做本地流媒体服务器使用,功能十分强大. 官网下载地址:https://www.videolan.org/ VLC ...
- FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社
大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦. <FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社> 京东自营链接:https://item.jd.com/13 ...
- FFmpeg入门详解之100:搭建Nginx流媒体服务器
这里小编给大家推荐一款流媒体服务器Nginx,可以实现RTMP和HLS等.搭建完成后,可以使用FFmpeg推流,实现直播功能. 注意:操作环境是Ubuntu18.04, 总共分为几个步骤: 1.安装N ...
- FFmpeg入门详解之116:rtsp live555摄像头直播
rtsp+live555摄像头直播 Live555直播流程简介与演示 第一步,读取摄像头数据 第二步,x264编码 第三步,扩展live555 第四步,vlc或ffplay播放 ffplay -sta ...
- FFmpeg入门详解之83:流媒体与直播技术
流媒体 流媒体又叫流式媒体,它是指商家用一个视频传送服务器(比如:vlc)把节目(比如:ande10.mp4)当成数据包发出,传送到网络上.用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显 ...
- FFmpeg入门详解之117:视频监控的架构和流程
几张架构图带您快速了解视频监控 图一 图二 图三 图四 视频监控系统的简介 视频监控 视频监控是安全防范系统的重要组成部分,英文Cameras and Surveillance.传统的监控系统包括前端 ...
- FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战
5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...
- FFmpeg入门详解之122:Qt5 FFmpeg本地摄像头采集预览实战
6.Qt5+FFmpeg本地摄像头采集预览实战 源码工程:S26_Test2 FFmpeg命令行处理摄像头 ffmpeg -list_devices true -f dshow -i dummy 命令 ...
- FFmpeg入门详解之124:Qt5 FFmpeg单路网络摄像头采集预览
Qt5+FFmpeg单路网络摄像头采集预览 源码工程:S26_Test4 RTSP协议简介 RTSP(Real Time Streaming Protocol),RFC2326 RTSP(Real T ...
最新文章
- centos7下安装docker(11容器操作总结)
- nodejs 开发企业微信第三方应用入门教程
- 鸿蒙系统的逻辑,鸿蒙系统逻辑近似苹果iOS13?这华为在搞什么?
- xcode快捷键大全
- P2157 [SDOI2009]学校食堂
- 《机器学习系列-强填EM算法在理论与工程之间的鸿沟(上)》
- 独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?
- uva 10985 Rings'n'Ropes
- Shiro 整合SpringMVC 并实现权限管理,登录和注销
- 安装 Dubbo 管理控制台
- mysql单机三实例_Mysql单机多实例
- Window系统: 解决 win xp系统 最新版QQ/TIM安装包 报错误 安装包可能被非法改动导致安装失败 云云.2021-02-15
- CXF框架介绍及Spring集成
- C#实现微信扫码支付
- 文本域换行 php,js获取textarea文本域自动换行符
- artdialog v6强大的模态对话框v6版api
- 迭代需求文档规范(模板)
- 深度好文推荐阅读——阿里云的这群疯子
- JAVA的向上转型与向下转型(二)
- python代码解释4个作用域_Python中作用域的深入讲解
热门文章
- 视频转gif【不要钱!不要会员!还很方便!】
- 简单理解--java反射(面试必备)
- cmder安装及部分问题修复
- jersey初学者资源
- 体外应用Cas9系统实现对上百kb的基因组片段的靶向克隆
- 超全的时区缩写转GMT(UTC)对照表
- OpenDDS开发人员指南中文版3.23(0)序言
- FileNotFoundError: [WinError 3] 系统找不到指定的路径。的解决方法
- 51单片机c语言编写计算器仿真,基于51单片机的计算器设计c程序代码加proteus仿真...
- 从零开始创建一个个人博客前端Vue,后端node.js(第一天)