基于FastDFS、ffmpeg、videojs实现自建视频点播平台

随着网络基础设施技术的不断提高,在线视频播放领域发展蒸蒸日上。基于此背景,本文详细介绍如何通过FastDFS、ffmpeg、videojs等开源框架实现自建视频点播平台,实现视频文件的处理、存储、播放功能。

  1. 技术介绍

1.1、FastDFS

FastDFS是一个开源的轻量级分布式文件系统。主要功能包括:文件存储,文件同步,文件访问(上传下载)。它可以解决高容量和负载均衡的问题。FastDFS适合用来做文件相关的网站,如图片分享、视频分享等。

FastDFS有两种角色:tracker和storage。tracker负责文件访问的跟踪和负载均衡。storage负责存储文件,它的功能包括:文件存储、文件同步、提供文件访问接口

1.2、ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。

1.3、videojs

Video.js是一款web视频播放器,支持html5和flash两种播放方式。更有自定义皮肤,插件,组件,语言还有丰富的选项配置。

​​​​​​​​​​​​​​1.4、HLS协议

HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前HLS协议被广泛的应用于视频点播和直播领域。

通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件, 然后提供一个配套的媒体列表文件, 提供给客户端, 让客户端顺序地拉取这些媒体文件播放, 来实现看上去是在播放一条流的效果.

2.系统架构

基于FastDFS、ffmpeg、videojs实现自建视频点播平台_第1张图片

 

3.技术实现

3.1、转码

从待转码队列获取需要转码的视频文件信息,通过多线程并发执行转码任务提高转码效率。根据业务需要使用ffmpeg将视频转多种清晰度。

3.2、切片

从待切片队列读取需要切片的视频文件信息,通过多线程并发执行切片任务提高切片效率。

切片命令:

ffmpeg -i output.ts -hls_time 2 -hls_list_size 0 output.m3u8

3.3、播放

配置视频播放专用CDN加速域名,访问视频切片信息时根据客户端信息自动分配到就近的网络节点,当CDN网络节点缓存有视频切片信息时,直接将视频切片信息返回客户端,减轻源站访问压力,当CDN网络节点没有视频切片缓存信息时,从源站拉取切片信息并缓存到节点然后将切片信息返回到客户端,下次再有同样的请求过来时直接返回缓存的切片信息。

4.功能

4.1、稳定转码

    高速稳定的并行转码系统,转码任务规模无缝扩展,保障视频转码质量和效率。

4.2、播放体验

多码率、多清晰度、多格式的差异化视频流,满足全终端的播放需求。

跨运营商、跨地域全网覆盖的视频分发网络,提供更稳定、更流畅的视听体验。

4.3、视频安全

       通过RSA加密算法将ts文件进行加密后上传到文件存储服务器,videojs集成解密逻辑,加载ts文件流时进行在线解密。

4.4、文件存储

       部署FastDFS分布式文件存储系统,实现资源统一存储管理。

有对具体细节感兴趣的可以私信我。

你可能感兴趣的:(视频处理,分布式存储,加密解密)