本帖最后由 不二如是 于 2024-5-28 08:57 编辑
这个问题有意思,一开始觉得“人脸识别”,搞复杂了
判断款告别确实可以!
普遍情况下,如果一个视频的宽高比接近16:9,那么它更可能是为宽屏电脑或者电视屏幕优化的。
如果宽高比接近9:16,那么它则可能是为手机屏幕竖向播放优化的。
但对于横向视频,这个方法仍然适用。
在鱼油提供的代码中,您检查了分辨率的宽和高,但没有检查宽高比。
如果要根据宽高比来区分,可以增加一个计算宽高比并根据结果来判断视频是宽频(适用于电脑)还是窄屏(适用于手机)的逻辑。
import subprocess
import json
def judge_video_resolution(video_path):
# 执行ffprobe命令获取视频信息
command = ['ffprobe', '-v', 'error', '-show_entries', 'stream=width,height', '-of', 'json', video_path]
result = subprocess.run(command, capture_output=True, text=True)
# 解析ffprobe输出结果
output = json.loads(result.stdout)
streams = output.get('streams')
if streams:
width = streams[0].get('width')
height = streams[0].get('height')
# 计算宽高比
aspect_ratio = width / height
# 判断宽高比
if aspect_ratio >= 1.7: # 宽屏通常16:9或者更宽
print("这是一个电脑宽频视频")
elif aspect_ratio <= 0.65: # 竖屏通常为9:16
print("这是一个手机竖屏视频")
else:
print("这是一个未知类型视频")
else:
print("无法解析视频信息")
# 调用函数并传入视频路径
judge_video_resolution('video.mp4')
这里的1.7是16:9宽高比的近似值。你可以根据具体情况调整这个比例。
对于9:16的竖屏视频,通常用于手机,比例阈值设置为0.65(即1/1.7的倒数)。
如果视频有不同于这两种典型格式的比例,可以根据需要调整判断逻辑或者添加更多的分类逻辑。
这种方法通常用于基本的视频类型区分,但对于一些特殊格式或自定义比例的视频,可能需要更详细的分析。
|