什么是DASH
DASH又称MPEG DASH,是Dynamic Adaptive Stream over Http的简称, 是一种在互联网上传送动态码率的视频流技术
为什么要学DASH? 因为其加载速度
快、扩展性
好、兼容性
强、国际标准化演进与支持
优,可以说在目前是一种较为理想的视频流方案
这里有一篇来自逼站的详细介绍文章,想了解得更为详细的可以阅读
FFMpeg 处理视频
ffmpeg 是一个快速的音视频转码器,并且可是从实时的音视频源中抓取数据。他可以通过一个高质量的多相滤波器转换任意音频的采样频率,缩放任意视频的尺寸。
ffmpeg 可以从任意数量的输入文件中读取数据,输出到任意数量的文件中,这里的文件包括通常意义的文件,管道,网络流,输入设备等,输入文件可以通过-i 选项指定,输出文件通过一个纯文本的字符串指定。在命令行上发现的所有的非选项内容都被认为是输出文件名。
原则上,所有的输入或输出文件都可以包含任意数量的不同类型的流,包括视频流,音频流,字幕流,附件流和数据流。数量和类型受容器的限制。输入文件中的某一个流保存到输出文件中的哪一个流,这件事情可以由ffmpeg 自动完成或由 -map 选项来指定 (见流选择章节)。
如果某个选项是针对哪一个输入文件的,需要使用从0开始的索引号指定,第一个文件的索引号为0,第二个文件的索引号为1,以此类推。同样的,文件中的流也是用索引号来表示的。例如 2:3 代表第3个文件中的第4个流,详见流选择章节。
通用规则是,所有选项作用于其后边的第一个文件。因此,顺序是非常重要的,你可以在命令行中重复指定相同的选项,只是指定的文件不同。那些全局的选项需要在命令行中优先指定。
千万不要输入文件和输出文件交叉出现在命令行中,先统一指定所有的输入文件,然后再指定所有的输入文件。同时也不要把指定给不同文件的选项弄混了。
如果想详细了解FFMpeg的话,可以查看FFMpeg中文手册
英语没问题的同学直接看官方文档即可
了解什么是FFMpeg了,接下来我们开始使用FFMpeg
从官网上直接下载对应平台的包进行安装 官网下载地址
我随便网上找了一个视频, 疾速追杀预告下载 - 178.9M
然后开始处理视频
视频处理这里没羞没臊参考来自Making Your Own Simple MPEG-DASH Server (Windows 10)
共生成5中不同大小的分辨率的视频
1 | ffmpeg -i ~/Downloads/johnwick-tlr1_h1080p.mov -s 160x90 -c:v libx264 -b:v 250k -g 90 -an demo_video_160x90_250k.mp4 |
处理音频
1 | ffmpeg -i ~/Downloads/johnwick-tlr1_h1080p.mov -c:a aac -b:a 128k -vn demo_audio_128k.mp4 |
生成切片等文件
本来想用mp4box来生成,无奈官网太秀了,下载不了。只好换另一个工具mp4dash
下载后,为了方便使用,我们把bin目录添加到PATH环境变量中
1 | # edit ~/.zshrc or .bashrc |
或者直接拷贝命令,当让前terminal session生效即可
KEEP UPDATE