如何在保持视频高度不变的前提下拉伸mpv/mplayer的播放宽度
播放器适配竖屏下方70%区域播放方案
以下为mpv和mplayer两个播放器的实现命令,均可以实现视频宽度拉伸填满屏幕宽度、播放区域固定在屏幕下方70%范围的效果,允许画面比例拉伸。
mpv 播放器方案
mpv参数支持更灵活的比例控制,推荐优先使用。
手动指定参数命令
假设你的竖屏屏幕分辨率为1080x2340(宽度1080px,高度2340px),对应下方70%播放区域高度为1638px,窗口顶部Y轴偏移为702px,命令如下:
mpv out.mp4 --geometry=1080x1638+0+702 --no-keepaspect --video-aspect-override=1080/1638 --border=no
参数说明:
--geometry=宽x高+x偏移+y偏移:指定播放窗口的尺寸和位置,x偏移设为0保证贴齐屏幕左侧,y偏移设为屏幕总高度减去播放区域高度,保证窗口贴齐屏幕底部--no-keepaspect:关闭默认的视频宽高比锁定--video-aspect-override:强行指定输出视频的宽高比为播放区域的宽高比,实现宽度拉满效果--border=no:关闭窗口边框,避免窗口尺寸被标题栏挤压
如果需要严格保持原视频的高度不做缩放,仅拉伸宽度,可直接用mpv内置变量ih指代原视频高度,调整命令如下:
mpv out.mp4 --geometry=1080xih+0+702 --no-keepaspect --vf=scale=w=1080:h=ih --border=no
自动适配屏幕脚本
无需手动查询屏幕分辨率,可直接适配当前竖屏参数,Linux平台下保存为mpv_play.sh,添加执行权限后运行./mpv_play.sh 视频文件路径即可:
#!/bin/bash # 获取当前主屏幕分辨率 SCREEN_W=$(xrandr | grep '*' | awk '{print $1}' | cut -d'x' -f1) SCREEN_H=$(xrandr | grep '*' | awk '{print $1}' | cut -d'x' -f2) # 计算下方70%播放区域参数 PLAY_H=$(( SCREEN_H * 7 / 10 )) PLAY_Y=$(( SCREEN_H - PLAY_H )) # 启动播放(如需保留原视频高度,可将PLAY_H替换为ih,scale参数同步修改为w=${SCREEN_W}:h=ih) mpv "$1" --geometry="${SCREEN_W}x${PLAY_H}+0+${PLAY_Y}" --no-keepaspect --video-aspect-override="${SCREEN_W}/${PLAY_H}" --border=no
mplayer 播放器方案
手动指定参数命令
同样以1080x2340竖屏分辨率为例,命令如下:
mplayer -vf scale=1080:1638 -geometry 1080x1638+0+702 -zoom -noborder out.mp4
参数说明:
-vf scale=目标宽:目标高:通过滤镜强行将视频拉伸到指定分辨率,无视原视频比例,如需保留原视频高度可将第二个参数替换为原视频的实际高度值-geometry:指定播放窗口的尺寸和位置,逻辑同mpv-noborder:关闭窗口边框
自动适配屏幕脚本
Linux平台下保存为mplayer_play.sh使用即可:
#!/bin/bash # 获取当前主屏幕分辨率 SCREEN_W=$(xrandr | grep '*' | awk '{print $1}' | cut -d'x' -f1) SCREEN_H=$(xrandr | grep '*' | awk '{print $1}' | cut -d'x' -f2) # 计算下方70%播放区域参数 PLAY_H=$(( SCREEN_H * 7 / 10 )) PLAY_Y=$(( SCREEN_H - PLAY_H )) # 启动播放 mplayer -vf scale=${SCREEN_W}:${PLAY_H} -geometry ${SCREEN_W}x${PLAY_H}+0+${PLAY_Y} -zoom -noborder "$1"
内容的提问来源于stack exchange,提问作者vinita
相关产品推荐
相关产品推荐

