|
xuguozhi925
| 来自湖北
嗯,微信电脑版里我给朋友发mp4视频会提示不能超过25M的大小限制,一般我都是用小丸工具箱来压缩的,质量相当好,问题是,每个mp4视频的大小不一致,有什么快速方法能直接半自动化算出需要压缩到的比特率bitrate而刚好小于25M?
我刚写了个Python+FFmpeg脚本,配合电脑的右键发送到某个批处理bat来直接计算出,很赞的体验。
然后写个批处理来右键执行这个py脚本
------将视频压缩到25M内小丸工具箱 2Pass 压缩的比特率.cmd
接着把这个批处理文件复制进
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\SendTo
于是可以愉快地玩耍了
选择电脑里任何一个比较大的mp4视频,右键那个啥
获得了要压缩的比特率
最后用小丸工具箱伺候,很爽的
生成的刚好小于25M的文件可以发送给微信好友了
<hr/>我都发出来代码的截图了,有很多人还是不肯自己敲一遍代码啊,受折磨了咩?
华而不实,为所欲为!
批处理:
@echo off
cls
set PATH=%PATH%;
:my_loop
if &#34;%~1&#34;==&#34;&#34; goto completed
echo %1
python &#34;E:\MyPython\获得视频bitrate比特率信息.py&#34; %1
SHIFT
goto my_loop
:completed
PAUSEPython脚本:
#coding=utf-8
import subprocess
import re
import sys, os
#获取视频的 时长 长 宽
def get_video_bitrate(path):
process = subprocess.Popen([&#39;ffmpeg&#39;, &#39;-i&#39;, path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout, stderr = process.communicate()
print(stdout.decode(&#39;utf-8&#39;))
pattern_bitrate = re.compile(&#34;(\d+)\s*kb\/s&#34;)
matches = re.findall(pattern_bitrate, stdout.decode(&#39;utf-8&#39;))
print(matches)
return matches
path = sys.argv[1]
print(path)
print(&#39;*&#39;*50)
print(get_video_bitrate(path))
video_bitrate = int(get_video_bitrate(path)[1])
audio_bitrate = int(get_video_bitrate(path)[-1])
filesize = os.path.getsize(path)
compress_bitrate = 25000000*(video_bitrate + audio_bitrate)/filesize - audio_bitrate
print(&#39;小丸工具箱 2Pass 压缩的比特率为:&#39; + str(int(compress_bitrate))) |
|