需求说明

视频转码服务,具备将高码率的视频转换为低码率的视频,和对不同编码格式的视频进行转换能力的后台服务;

规格定义

性能指标:

吞吐量和性能指标

4核 8G 1000M网卡

GeForce GT 1030 以上显卡

CPU 到 80%

网络占用率 到 70%

100路 720P 高清 2Mbps -> 640*480P 800kbps

50路 1080P 高清 4Mbps  -> 640*480P 800kbps

时延要求:转码服务对视频播放延时需要小于3S

支持的协议和编码类型:

协议类型

TCP/UDP

流媒体支持

RTP/PS/RTMP

视频类型

H264/VP8/VP9/H265

音频类型

AAC/OPUS/iLBC

架构设计

图1.整体框图

FFmpeg是可以进行多种格式的音频、视频解码、转换、流功能的多媒体开发框架,包含了libavcodec 用于多个项目中音频和视频的解码器库,libavformat进行音频与视频格式转换库,以及libavfilter用于做视频水印、叠加等特效处理的filter工具。同时,FFmpeg可通过使用Nvidia的GPU加速进行视频编解码,根据Nvidia网站上关于硬件编码和软件编码的性能对比,性能以每秒钟编码帧数为参考指标,质量以PSNR为参考指标,可看出性能方面Nvidia编码器是x264的2~5倍,质量方面对于fast stream场景来说Nvidia编码器优于x264。

ZLMediaKit是一个基于C++11的高性能、运营级、流媒体服务框架,支持多种流媒体协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV),支持协议间的互相转换,并对异步IO的网络编程模型进行了封装,是一个非常适合做转码服务器的流媒体服务框架。

线程模型

转码请求接收线程(监听固定3500端口)

接收媒体包线程

转码线程

发送线程

日志线程

类图设计

转码请求接收线程输入请求格式定义:

输入请求

{“dest_ip”:11.12.112.10,

“dest_port”:9000,

“socket_protocol”:”udp”,

“transport_protocol”:”rtp”,

“source_width”:1080,

“source_height”:1920,

“source_samplerate”:2000,

“source_media_type”:”rtp”,

“source_video_codec”:”h264”,

“source_audio_codec”:”aac”,

“dest_video_codec”:”h264”,

“dest_audio_codec”:”aac”,

“dest_width”:640,

“dest_height”:480,

“dest_samplerate”:800 }

输出

{“recv_packet_ip”:”11.12.112.10”, “recv_packet_port”:”9099”}

转码输出的目的IP、端口,网络协议, 源分辨率,源码率, 目标分辨率, 目标码率, 媒体类型(RTP/PS/RTMP/RTSP),视频格式,音频格式,目标视频格式, 目标音频格式

返回:监听的转码服务包接收IP/端口;

业务流程图

  1. 调用方先发送消息给视频转码服务后台的3500端口,配置转码相关信息,要求开始转码;
  2. 视频转码服务接收到调用方的请求后,判断是否具备转码所需要的服务能力,并将配置信息进行存储,返回接收转码包的监听IP和端口;
  3. 调用方监听目标视频的接收端口,并再接收到目标视频流后,转发给需要的客户端,也可以在第一步直接将客户端的IP和端口作为参数提交给转码服务,调用方不需要接收转码完成的视频流;
  4. 发送视频流到转码服务的接收IP和端口;
  5. 将转码完成的视频数据发送给接收IP和端口;
  6. 该步骤发送消息给3500端口结束转码

负载均衡支持

主节点和主节点之间存在心跳消息,主节点和子节点间存在心跳,子节点间不存在心跳;主节点需要负责子节点的转码任务分配,负责将请求转发到子节点,存储各子节点的任务数和吞吐量等服务器状态信息,负责子节点间的负载均衡;主节点和子节点可以分布式部署在不同的服务器上。具体的心跳消息和任务分配消息详细设计中体现。

参考:https://it3q.com/article/49

视频转码服务架构说明书相关推荐

  1. 百度开放云 视频转码服务

    在上一篇文章中,我们介绍了如何借助 百度开放云的文档转码服务 来方便的处理各种文档格式,同时还可以借助跨平台的文档播放器来方便的查看转码之后的效果. 在这篇文章里面,我们继续介绍,如何借助百度开放云的 ...

  2. 快手智能视频图像编码处理服务架构

    正文字数:9639  阅读时长:14分钟 本文来自于快手视频算法工程师团队负责人闻兴在LiveVideoStackCon2020北京站上的精彩分享.凭借本主题演讲,闻兴老师荣获此次大会评选的优秀讲师称 ...

  3. Nginx+rtmp+ffmpeg搭建视频转码服务

    第一步,安装nginx-rtmp-module 模块 因为nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块,所以先安装nginx-rtmp-module # cd /root ...

  4. 新浪微博:大规模离线视频处理系统的架构设计

    微博视频平台在4亿月活用户吃瓜嗨聊的高并发.大流量背景下,既要保证用户微博生产和消费体验,又要支持业务快速迭代,确保正确性.稳定性和高可用性.本次演将以微博视频大规模视频离线处理系统的架构设计为主题为 ...

  5. 音视频转码技术指南:国内主流云转码服务提供商对比测评

    摘要: 随着大量视频产生,怎样才能够高效精准地对视频进行云端转码和处理,来适配多终端展示需求和应对复杂的网络情况,是我们视频行业开发人员工作的重中之重.作为从业者,我们会经常接触各大云转码服务商,对音 ...

  6. Revvel如何将视频转码速度提升几十倍?

    来自Revvel的团队的Greg Femec在re:Invent 2017大会上分享了他在构建视频转码服务中遇到的挑战,以及构建基于Serverless架构的视频转码平台的经验.Revvel团队将视频 ...

  7. 分布式服务架构的设计方案上—分布式基础理论知识

    文章目录 1.什么是分布式架构 2.SOA架构和微服务架构 2.1 SOA架构 2.2 MSA 微服务架构 微服务特征 2.3 SOA 架构和微服务架构的区别 3.节点与网络 3.1 节点 3.2 网 ...

  8. 音视频转码器产品规格

    音视频转码器产品规格 QQ:16614119 一.            产品简介: 音视频转码器是一套商业级的实时.非实时转码产品.提供常用编码格式之间的转换:支持远程控制转码任务:支持多种输入输出 ...

  9. 视频转码能力哪家强?腾讯云、阿里云、七牛云多维度对比

    随着大量视频产生,怎样才能够高效精准地对视频进行云端转码和处理,来适配多终端展示需求和应对复杂的网络情况,是我们视频行业开发人员工作的重中之重.作为从业者,我们会经常接触各大云转码服务商,对音视频转码 ...

最新文章

  1. 阿里云K8S容器服务的使用
  2. SQL Server(五)——常用函数
  3. IIS 配置Http重定向到Https
  4. Jmeter也能IP欺骗!
  5. 关于AttributeError: type object ‘XXX‘ has no attribute ‘XXX‘的问题
  6. 2020牛客NOIP赛前集训营提高组(第四场)B-色球【链表】
  7. html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
  8. 如何安装mysql5.7.25_Centos7 yum安装MySQL5.7.25
  9. 【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字
  10. oracle发生重启动的介绍
  11. 找零程序Java_JAVA解惑--找零时刻
  12. 用ASP.NET上传大文件 (转载自思归blogs)
  13. Unity MeshAnimator 2.0.16 ShaderMode
  14. Ubuntu 15.10 x64 安装 Android SDK
  15. qt for android 中无法运行和调试应用程序,No Device Found,The adb tool in the Android SDK lists all......
  16. 快速解决Ubuntu缺少各种驱动的方法: 解决ThinkPad T14s没有无线网卡驱动以及WIFI无法连接等驱动问题
  17. GDPR对ITSM的影响
  18. 机器学习之PQ量化算法
  19. 微服系列之Feign使用HttpClient和OkHttp网络请求框架
  20. C++ typedef用法小结(挺好)

热门文章

  1. 通过ajax实现文件下载
  2. 规划一个配置管理数据库(CMDB)
  3. 电气CAD(即ACE)将自建块导入系统元件库中,学习笔记
  4. easypoi基本使用
  5. SSH固定资产管理系统(含论文、开题报告、答辩PPT、辅导视频)、
  6. Docker命令汇总
  7. Linux之tail命令
  8. CFA II学习记录-Economics
  9. 第6章 面向对象的程序设计
  10. uniapp开发App引导页