随着媒体流的技术增长,m3u8在直播和点播行业成为主流,但因视频资源都是整体文件,需要自行或使用高额的第三方切片,所以在这里为大家测试一下入门级服务器的切片和转码性能,供大家参考和学习到底是自行切片还是第三方服务切片
如果你想从事视频切片到分发(包括不限于对象存储),可以看下这篇技术文章,你只管资源,剩下的交给技术
普及一下,视频服务包含 切片服务+对象存储+分发流量,尤其是第三方切片和分发流量费用高昂,请理性计算成本,并且请遵守服务所在地和和用户所在地的版权法和图像影音传播相关法律
腾讯云服务器
Gold 6133 主频2.5GHz *1 分配4核心4线程
内存8G
硬盘 云SSD 100G
上海的年付轻量云,没研究是否锁了云服务器性能,仅供参考
Centos 7.9 64位
ffmpeg-5.1
具体安装方法自行百度,或者查看我的文章https://blog.csdn.net/dsx5ds/article/details/129014472
某1080P电影
文件名:mg.mp4
格式:mp4
时长:01:42:05
大小:1.7GB
分辨率:1920*1080(标准1080P)
数据速率:2221kbps
总比特率:2381kbps
帧速率:23.98帧
音频比特率:160kbps
频道: 2
常用命令
mp4视频转换为ts文件
ffmpeg -y -i 原视频.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 输出名.ts
ts文件切片并生成m3u8文件
ffmpeg -i 源文件.ts -c copy -map 0 -f segment -segment_list 输出m3u8文件.m3u8 -segment_time 10 输出文件前缀_%3d.ts
直接切片
ffmpeg -i 原视频.mp4 -c:v copy -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 输出名.m3u8
转码指定分辨率
ffmpeg -i 原视频.mp4 -vf scale=宽:高 -y 输出名.mp4
H264编码
ffmpeg -i 原视频.mp4 -c:v libx264 -preset slow -crf 22-c:a copy 输出名.mp4
更多指令,请参考ffmpeg官方文档
测试前说明:
1.因为视频默认1080P 所以部分选项是没必要测试的,用null代替
2.h264不是强制性要求,现在大部分视频都是h264编码,他的特点只是同等编码压缩下,体积更小,并且H264或其他编码会消耗服务器大量资源,如需强制需求,建议使用显卡独立服务器
3.举个例子 1080P电影 转换 720P直接切片等于 2小时30分 + 12秒
4.仅演示mp4为源文件,像mkv avi等文件理论上也可以上述操作,具体请实际分析
5.上述命令仅为测试用,详细参数请看官方文档,里边详细包含了截图gif 声道 截取指定时间段 水印等等
下边是整体测试表格数据
一部1080P 100分钟电影电影 | 1080P | 720P | 480P | 240P | 服务器性能 |
---|---|---|---|---|---|
转TS耗时 | 13秒 | 13秒 | 13秒 | 13秒 | 占用20% 负载低 |
TS切片耗时 | 11秒 | 11秒 | 11秒 | 11秒 | 占用20% 负载低 |
直接切片耗时 | 216秒 | 195秒 | 190秒 | 166秒 | 占用20% 负载低 |
转码指定分辨率 | 不需要 | 2小时30分 | 1小时14分 | 25分钟 | 占用100% 负载偏高 |
H264编码 | 5小时 | 占用100% 负载满载 |
1.转码指定分辨率没研究过是否可以GPU加速,其实大部分网络资源视频都是H264编码,不必强求
2.还没有测试关于加密切片,应该数据差不了多少
3.同一m3u8多清晰度,请自行百度
建议:
1.短视频的话,不需要考虑编码和分辨率,直接切片,云服务器性能足以,搭配腾讯云的内网传输对象存储,很方便
2.如果是大工程,如自制电影,点播等,推荐上GPU服务器,速度瓶颈上能快几倍甚至几十倍
3.如果你手里没有一套完整的程序,我推荐以下
视频切片管理(自行开发):对接linux磁力下载工具 + ffmpeg切片 + 数据同步