您现在的位置是:主页 > news > wordpress深度优化/百度seo优化服务项目
wordpress深度优化/百度seo优化服务项目
admin2025/5/4 12:18:41【news】
简介wordpress深度优化,百度seo优化服务项目,自己搭建服务器做视频网站,小程序开发平台哪家公司好由于转码是非常耗时的操作。 为了加快视频文件的转码,对视频文件进行切分,分成多片,在多台机器并行执行,最后做合并来提升性能。以下做一个实验,对分片前后的数据做一个对比, 验证分片转码的性能提升效果。…
由于转码是非常耗时的操作。
为了加快视频文件的转码,对视频文件进行切分,分成多片,在多台机器并行执行,最后做合并来提升性能。以下做一个实验,对分片前后的数据做一个对比, 验证分片转码的性能提升效果。
1.原始 mov 转码为 mp4文件(不切片)
输入:218s 的视频文件,文件大小:215.3M,由 iPhone 11 Pro 拍摄的视频。 原始文件格式:
Duration: 00:03:38.22, start: 0.000000, bitrate: 7894 kb/s
Stream #0:0(und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, bt709), 1920x1080, 7676 kb/s, 29.97 fps, 29.97 tbr, 600 tbn, 600 tbc (default)
time(ffmpeg -i 4_minute_video.mov 4_minute_video.mp4)
real 5m42.127s
user 40m41.547s
sys 0m19.006s
218s的mov视频文件转码为mp4,转码耗时:342s
2.拆分成5段视频
time(~/workspace/video-splitter/ffmpeg-split.py -f 4_minute_video.mov -c 5)
实际的执行命令:
ffmpeg -i 4_minute_video.mov -vcodec copy -acodec copy -ss 0 -t 44 4_minute_video-1-of-5.movffmpeg -i 4_minute_video.mov -vcodec copy -acodec copy -ss 44 -t 44 4_minute_video-2-of-5.movffmpeg -i 4_minute_video.mov -vcodec copy -acodec copy -ss 88 -t 44 4_minute_video-3-of-5.movffmpeg -i 4_minute_video.mov -vcodec copy -acodec copy -ss 132 -t 44 4_minute_video-4-of-5.movffmpeg -i 4_minute_video.mov -vcodec copy -acodec copy -ss 176 -t 44 4_minute_video-5-of-5.mov
real 0m3.699s
user 0m0.503s
sys 0m0.892s
调整脚本, -ss 作用于输入文件:
ffmpeg -ss 0 -t 44 -i 4_minute_video.mov -vcodec copy -acodec copy 4_minute_video-1-of-5.movffmpeg -ss 44 -t 44 -i 4_minute_video.mov -vcodec copy -acodec copy 4_minute_video-2-of-5.movffmpeg -ss 88 -t 44 -i 4_minute_video.mov -vcodec copy -acodec copy 4_minute_video-3-of-5.movffmpeg -ss 132 -t 44 -i 4_minute_video.mov -vcodec copy -acodec copy 4_minute_video-4-of-5.movffmpeg -ss 176 -t 44 -i 4_minute_video.mov -vcodec copy -acodec copy -y 4_minute_video-5-of-5.mov
real 0m3.487s
user 0m0.382s
sys 0m0.760s
耗时几乎没有区别。
-ss 放在后面,作用于输出文件时,文件做了解码操作,解码的时间非常短。大约3秒钟,视频218秒。
分片的时间大约是视频时长的 1/70
可以这样测试解码+解封装的性能:
time(ffmpeg -i 4_minute_video.mov -f null -)
命令执行 25s。 这个时间比 ffmpeg -ss 切分的耗时要长很多, 说明做切片的时候不需要做完整的解码,只需要部分解码甚至不解码。
解码的耗时大约是视频时长的 11/100。(Mac Pro上的性能)
Null – FFmpeg
3.分段编码
前面对视频做了切片,分成了5片,下面分别对5个分片进行 mp4 转码。
time(ffmpeg -i 4_minute_video-1-of-5.mov 4_minute_video-1-of-5.mp4)
frame= 1321 fps= 19 q=-1.0 Lsize= 109386kB time=00:00:43.97 bitrate=20375.5kbits/s speed=0.636x
video:108648kB audio:690kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.043928%
real 1m9.403s
user 7m54.299s
sys 0m4.347s
time(ffmpeg -i 4_minute_video-2-of-5.mov 4_minute_video-2-of-5.mp4)
frame= 1321 fps= 20 q=-1.0 Lsize= 115025kB time=00:00:44.00 bitrate=21414.7kbits/s speed=0.667x
video:114288kB audio:690kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.041689%
real 1m6.275s
user 7m36.624s
sys 0m4.166s
time(ffmpeg -i 4_minute_video-3-of-5.mov 4_minute_video-3-of-5.mp4)time(ffmpeg -i 4_minute_video-4-of-5.mov 4_minute_video-4-of-5.mp4)time(ffmpeg -i 4_minute_video-5-of-5.mov 4_minute_video-5-of-5.mp4)
后面3片的转码耗时分别为:
real 1m8.489s
real 1m3.646s
real 0m57.631s
每一段 44s 的切片,编码时间大约为 1m9秒, 约70秒。 (Mac Pro 机器上面的转码倍速为 0.63)
4.合并最终的结果
对分片转码得到的 mp4 进行合并。
echo "file 4_minute_video-1-of-5.mp4" > concatenate.txtecho "file 4_minute_video-2-of-5.mp4" >> concatenate.txtecho "file 4_minute_video-3-of-5.mp4" >> concatenate.txtecho "file 4_minute_video-4-of-5.mp4" >> concatenate.txtecho "file 4_minute_video-5-of-5.mp4" >> concatenate.txttime(ffmpeg -f concat -i concatenate.txt -c copy 4_minute_video_merged.mp4)
执行的耗时:
frame= 6549 fps=5318 q=-1.0 Lsize= 537526kB time=00:03:38.57 bitrate=20146.3kbits/s speed= 177x
video:533872kB audio:3422kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.043218%
real 0m1.356s
user 0m0.560s
sys 0m0.478s
合并花了1s的时间。
生成的文件对比:
ffprobe 4_minute_video_merged.mp4
Duration: 00:03:38.58, start: 0.000000, bitrate: 20145 kb/s
ffprobe 4_minute_video.mp4
Duration: 00:03:38.25, start: 0.000000, bitrate: 20151 kb/s
最终两个文件的耗时相差了 0.33s。 这个差异可能跟分片的准确度有关。
5.并行转码耗时总结
原始文件转码耗时:342s
切片耗时:3.4s
5个分片分别转码,最长分片的耗时:1m9.403s = 69.4s
结果合并耗时:1.3s
如果分布到不同机器上执行,忽略网络传输的耗时,分片转码的总耗时:3.4 + 69.4 + 1.3 = 74.2
分成5片, 耗时占比原始耗时的 74.2/342 = 21%, 大约提升5倍的性能。
结论:视频转码主要的耗时在编码(Encoding)上面,通过分片转码,可以大幅提升转码效率,对于长文件,几乎可以达到线性的提升效果(跟机器数成正比)。