无需下载即可查找在线视频的视频尺寸



我想确保 example.com/video.mp4 的在线视频不是在智能手机上提交的,并且视频尺寸类似于 1920 x 1080。

下载的视频很容易获得尺寸,

import cv2
vcap = cv2.VideoCapture('video.mp4') # 0=camera
width = vcap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)
height = vcap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)

但是我不想下载mp4文件,我想快速找到文件大小 - 如果我下载文件,我就做不到。

我设法通过下载 100KB 的视频文件来获得尺寸:

import cv2
import requests
def get_dimensions(url):
    r = requests.get(url, stream=True)
    with open('output', 'wb') as f:
        for chunk in r.iter_content(chunk_size=100000):
            if chunk:
                f.write(chunk)
                break
    vcap = cv2.VideoCapture('output')
    return int(vcap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(vcap.get(cv2.CAP_PROP_FRAME_HEIGHT))

我已经在互联网上的几个文件上对其进行了测试,这是我得到的:

>> get_dimensions('http://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_1920_18MG.mp4')
(1920, 1080)
>> get_dimensions('http://file-examples.com/wp-content/uploads/2018/04/file_example_AVI_640_800kB.avi')
(640, 360)
>> get_dimensions('https://www.sample-videos.com/video123/mkv/720/big_buck_bunny_720p_1mb.mkv')
(1280, 720)

最新更新