本文来自SeattleVideo Tech 2019年9月的一篇演讲,演讲者是来自谷歌的JoeyParrish, 主要介绍了Shaka Streamer的相关内容。
Shaka Streamer集成了FFmpeg和Shaka Packager, 可以简化DASH&HLS,VOD(点播)&live(直播)的内容准备工作;它目前支持Linux和Mac系统,只需要简单的配置文件,而不是复杂的命令行形式;Shaka Streamer的安装需要Python3.5和额外的FFmpeg和打包器,已上传Github,并可以直接使用pip3进行安装。(目前只支持在单台机器上运行,不能大规模使用)
如果要将一个视频处理成DASH格式,先使用FFmpeg将一个视频用两套不同的编码器编码出4个不同比特率的视频(最高1080p),则最少需要手动输入232个词,易读性很差;然后使用Shaka Packager生成对应的.mpd文件,这一步骤仍需输入繁琐的命令行。但是,使用Shaka Streamer,这一切只需要简单的一个命令行语句,包含简单的一个输入配置文件和一个pipeline配置文件。相比第一种方式对命令行的依赖,shaka streamer使用配置文件使得系统更易于维护。输入配置文件只需要包含原始输入媒体内容(视频 音频);pipeline配置文件包含:直播/点播模式,需要转码生成的比特率列表和音视频的编解码器(可多种)。如果需要将生成的媒体内容推流到服务器,则可以直接在命令行后加上一个推流的地址。
Shaka Streamer还支持一些额外的选项:硬件编码;延迟,内容ID,加密方式等参数设置;添加任意的FFmpeg过滤器;模拟直播流的循环输入功能;可以从摄像头或任意外部命令行获取输入;可以输出到本地、谷歌云存储和亚马逊S3;可以作为命令行应用和可以用作一个Python模块。ShakaStreamer暂时缺少的内容:对Windows系统的支持;对UDP,RTMP和RTSP等网络输入的支持;对AV1,AC-3和EC-3编码器的支持;多个GPU编码支持;原始密钥加密;商标叠加;可配置的输出格式;静态的Packager和FFmpeg二进制文件;官方docker容器。
最后是Q&A环节,部分相关内容如下:
- Shaka Streamer支持多个音轨、语言和字幕,但是目前直播流尚不支持字幕
- Shaka Streamer要求ffmpeg的版本高于4.1
- Shaka Streamer主要专注于DASH/HLS协议,有可能会添加rtmp/rtsp输入的支持,但不会支持其他协议的输出