自已做的MP4在线WEB站一直存在播放首屏卡的问题,严重的卡近10S,还以为是高清/码率/分辨率过大的问题,如果像大站那样优化也太麻烦了,因为是自己用,所以也并不在意那种开始时的卡顿,近日无意阅读一篇文章,谈到这种问题
简单来说就是网上下载的MP4视频没有moov.udta.meta,导致浏览器不能很快获取到视频总体的信息,解决方法就是用ffmpeg重新处理,单个文件处理就是
ffmpeg -i input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
这样的命令。处理后首屏卡的情况的确大大改善,因文件较多,把ffmpeg加入系统path变量,然后写了一个python批量处理。代码如下:
#coding:utf-8 from pathlib import Path import os mp4_filepath=Path('D:\视频\WEB视频') save_path=mp4_filepath.joinpath('处理后视频') #拼合保存路径 save_path.mkdir(exist_ok=True) #如路径目录不存在创建 for x in mp4_filepath.glob('*'): #列出目录下所有文件 if x.suffix.upper()=='.MP4': #判断扩展名为mp4的文件再进入处理 save_as_path=save_path.joinpath(x.name) #拼合保存的绝对路径,文件名为原文件名 exe_command= f'ffmpeg -i "{x}" -movflags faststart -acodec copy -vcodec copy "{save_as_path}"' #拼合执行命令,注意如文件有空格需用双引号括起来,windows用单引号会有问题 try: x1=os.popen(exe_command) #执行 print(x1.read()) #读出信息流 except: print(f"视频{x}出错了!")