在线教育项目之视频学习需求分析
视频学习需求分析
1.1 需求描述
腾讯课堂在线作为在线教育网站,提供多种学习形式,包括:录播、直播、图文、社群等,学生登录进入学习中 心即可在线学习,本章节将开发录播课程的在线学习功能,需求如下:
1、学生可以在windows浏览器上在线观看视频。 2、播放器具有快进、快退、暂停等基本功能。 3、学生可以方便切换章节进行学习。

什么是录播课程?
录播课程就是提供录制好课程视频,供用户在线点播,反复学习。 课程视频如何管理? 媒资管理系统专门来管理课程视频,用户视频文件上传到媒资系统,并对视频进行编码处理。
1.2 视频点播解决方案
1.2.1 流媒体
流媒体:

概括理解:流媒体就是将视频文件分成许多小块儿,将这些小块儿作为数据包通过网络发送出去,实现一边传输视 频 数据 包一边观看视频。
流式传输
在网络上传输音、视频信息有两个方式:下载和流式传输。
下载:就是把音、视频文件完全下载到本机后开始播放,它的特点是必须等到视频文件下载完成方可播放, 播放等待时间较长,无法去播放还未下载的部分视频。
流式传输:就是客户端通过链接视频服务器实时传输音、视频信息,实现“边下载边播放”。
流式传输包括如下两种方式:
- 
顺序流式传输 即顺序下载音、视频文件,可以实现边下载边播放,不过,用户只能观看已下载的视频内容,无法快进到未 下载的视频部分,顺序流式传输可以使用Http服务器来实现,比如Nginx、Apache等。 
- 
实时流式传输 实时流式传输可以解决顺序流式传输无法快进的问题,它与Http流式传输不同,它必须使用流媒体服务器并 且使用流媒体协议来传输视频,它比Http流式传输复杂。常见的实时流式传输协议有RTSP、RTMP、RSVP 等。 
流媒体系统的概要结构
通过流媒体系统的概要结构学习流媒体系统的基本业务流程。

- 
将原始的视频文件通过编码器转换为适合网络传输的流格式,编码后的视频直接输送给媒体服务器。 原始的视频文件通常是事先录制好的视频,比如通过摄像机、摄像头等录像、录音设备采集到的音视频文 件,体积较大,要想在网络上传输需要经过压缩处理,即通过编码器进行编码 。 
- 
媒体服务获取到编码好的视频文件,对外提供流媒体数据传输接口,接口协议包括 :HTTP、RTSP、 RTMP等 。 
- 
播放器通过流媒体协议与媒体服务器通信,获取视频数据,播放视频。 
1.2.2 点播方案
本项目包括点播和直播两种方式,我们先调研点播的方案,如下:
- 
播放器通过 http协议从http服务器上下载视频文件进行播放 问题:必须等到视频下载完才可以播放,不支持快进到某个时间点进行播放 
- 
播放器通过rtmp协议连接媒体服务器以实时流方式播放视频 使用rtmp协议需要架设媒体服务器,造价高,对于直播多采用此方案。 
- 
播放器使用HLS协议连接http服务器(Nginx、Apache等)实现近实时流方式播放视频 HLS协议规定:基于Http协议,视频封装格式为ts,视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3。 
HLS是什么?


采用HLS方案即可实现边下载边播放,并可不用使用rtmp等流媒体协议,不用构建专用的媒体服务器,节省成本。 本项目点播方案确定为方案3
2 视频编码
2.1 视频编码格式

首先我们要分清文件格式和编码格式:
文件格式:是指.mp4、.avi、.rmvb等 这些不同扩展名的视频文件的文件格式 ,视频文件的内容主要包括视频和音频,其文件格式是按照一 定的编码格式去编码,并且按照该文件所规定的封装格式将视频、音频、字幕等信息封装在一起,播放器会根据它们的封装格式去提取出编码,然后由播放器解码,最终播放音视频。
音视频编码格式:通过音视频的压缩技术,将视频格式转换成另一种视频格式,通过视频编码实现流媒体的传输。 比如:一个.avi的视频文件原来的编码是a,通过编码后编码格式变为b,音频原来为c,通过编码后变为d。
音视频编码格式各类繁多,主要有几下几类:
MPEG系列 (由ISO[国际标准组织机构]下属的MPEG[运动图象专家组]开发 )视频编码方面主要是Mpeg1(vcd用 的就是它)、Mpeg2(DVD使用)、Mpeg4(的DVDRIP使用的都是它的变种,如:divx,xvid等)、Mpeg4 AVC(正热门);音频编码方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(大名鼎鼎的mp3)、 MPEG-2 AAC 、MPEG-4 AAC等等。注意:DVD音频没有采用Mpeg的。
H.26X系列 (由ITU[国际电传视讯联盟]主导,侧重网络传输,注意:只是视频编码) 包括H.261、H.262、 H.263、H.263+、H.263++、H.264(就是MPEG4 AVC-合作的结晶)
目前最常用的编码标准是视频H.264,音频AAC。
提问: H.264是编码格式还是文件格式? mp4是编码格式还是文件格式?
2.2 FFmpeg 的基本使用
我们将视频录制完成后,使用视频编码软件对视频进行编码,本项目 使用FFmpeg对视频进行编码 。

FFmpeg被许多开源项目采用,QQ影音、暴风影音、VLC等。 下载:FFmpeg https://www.ffmpeg.org/download.html#build-windows


下载 :ffmpeg-20180227-fa0c9d6-win64-static.zip,并解压,本教程将ffmpeg解压到了 F:\devenv\edusoft\ffmpeg-20180227-fa0c9d6-win64-static下。
将F:\devenv\edusoft\ffmpeg-20180227-fa0c9d6-win64-static\bin目录配置在path环境变量中。
检测是否安装成功

简单的测试: 将一个.avi文件转成mp4、mp3、gif等。 比如我们将1-1.trec文件转成mp4,运行如下命令: ffmpeg -i 1-1.trec 1-1.mp4 转成mp3:ffmpeg -i 1-1.trec 1-1.mp3 转成gif:ffmpeg -i 1-1.trec 1-1.gif
官方文档(英文):http://ffmpeg.org
2.2 生成m3u8/ts文件
使用ffmpeg生成 m3u8的步骤如下:
- 
先将trec视频转成mp4 下面把各参数意思大概讲讲,大概了解意思即可,不再此展开流媒体专业知识的讲解。 -c:v 视频编码为x264 ,x264编码是H264的一种开源编码格式。 -s 设置分辨率 -pix_fmt yuv420p:设置像素采样方式,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,它的作用是 根据采样方式来从码流中还原每个像素点的YUV(亮度信息与色彩信息)值。 -b 设置码率,-b:a和-b:v分别表示音频的码率和视频的码率,-b表示音频加视频的总码率。码率对一个视频质量有 很大的作用,后边会介绍。 -r:帧率,表示每秒更新图像画面的次数,通常大于24肉眼就没有连贯与停顿的感觉了 
- 
将mp4生成m3u8  ffmpeg -i 1.mp4 -hls_time 10 -hls_list_size 0 -hls_segment_filename ./hls/yang_%05d.ts ./hls/yang.m3u8-hls_time 设置每片的长度,单位为秒 -hls_list_size n: 保存的分片的数量,设置为0表示保存所有分片 -hls_segment_filename :段文件的名称,%05d表示5位数字 生成的效果是:将mybatis.mp4视频文件每10秒生成一个ts文件,最后生成一个m3u8文件,m3u8文件是ts的索引文件。 使用VLC打开m3u8文件,测试播放效果,VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。(http://www.videolan.org/)  
2.2.1 码率的设置
码率又叫比特率即每秒传输的bit数,单位为bps(Bit Per Second),码率越大传送数据的速度越快。 码率的计算公式是:文件大小(转成bit)/ 时长(秒)/1024 = kbps 即每秒传输千位数 例如一个1M的视频,它的时长是10s,它的码率等于
1*1024*1024*8/10/1024 = 819Kbps
码率设置到多少才能达到最好,通过根据个人的经验或参考一些视频网台给出的参考,下图是优酷对码率的要求

如果要将视频上传到优酷则必须按照上面的要求,如果是自己搭建视频服务器,码率设置不易过大,最终达到的视 频清晰度满足业务需求即可
- 点赞
- 收藏
- 关注作者
 
            

 
           
评论(0)