今天下午,科校长在观摩中心以视频直播的方式为高三年级全体学生讲授语文课,信息中心提前将直播端和客户端都准备好,保障活动顺利进行。
同时,我们将活动过程全程录像,并且将视频流录制视频片段及时发布到教师群。那么流媒体视频是如何进行处理的呢,请大家往下看。
一、校园网视频直播简述
观摩中心三路摄像机信号和一路计算机屏幕高清信号首先通过视频导播台切换,再通过视频编码器编码后网络推送,输出RTMP视频流。后经Nginx服务器进行视频转发后在各班级通过客户端或浏览器读取视频流实现视频直播。
1、校园网视频流格式为“rtmp://:1935/channel/c01”,端口号使用1935,为了进行视频流处理,我们在Ubuntu系统上安装FFmpeg软件,成功配置后使用如下命令可以完成视频流录制。
指令解释:将视频流录制1分钟,同时转换为Mp4格式后保存为mymovie.mp4视频文件。
2、录制成功后的视频分辨率为视频源原始分辨率,达到高清,体积较大,不便于在微信群中发布(微信视频限制为25M),为此我们需要将视频调整分辨率,适当降低视频码率,此时我们调整为720*480、450k、Mp4视频格式,使用如下命令(命令通过Php程序代码调用,请阅读注释)
视频流此时将被调整分辨率,经测试在手机端能清晰观看。
3、最终发布前我们还可以在视频上添加水印,使用学校校徽图片,以放置在左上角举例,使用指令代码示例。
指令解释:原始视频调整分辨率到,码率876k,25帧,同时在坐标140:10的位置添加logo.png作为水印,输出为out.mp4文件,同时将处理进度输出到log文件便于实时检测。
4、此时我们就可以将处理后的文件直接在微信中发布了。如果要将视频文件发布到网页并提供点播服务,还需要对视频进行切片,以确保在主流浏览器中能流畅访问,同时能在手机浏览器中点播。视频切片指令如下
指令解释:录制视频流3分钟,同时将流以10秒钟为间隔切片为ts格式,最终生成index.m3u8索引文件用于视频发布。
5、网页视频发布。以上所有操作最终使用php函数进行封装处理,所有变量使用数据库或网页提交。校园视频网站环境使用Apache+Php+Mysql,搭建于Linux系统上,网站程序全部编写完成后只需要登录后台点击相应链接,服务器即可进行完整的视频处理。前台视频播放使用video标签调用视频完成视频点播。点播页面代码示例:
拓展阅读:FFmpge简介
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。