python检测视频横竖屏

python3.8.3,win10

测试了4个不同方向拍摄的视频,第一个/最后一个视频是正常横/竖向视频

工具一:moviepy1.0.3:https://github.com/Zulko/moviepy,不支持网络视频

class moviepyTest():
    __moviepy_editor = __import__('moviepy.editor')
    v_paths = [
        'D:/video/phone_crosswise.mp4',
        'D:/video/phone_inversion_crosswise.mp4',
        'D:/video/phone_inversion_vartical.mp4',
        'D:/video/phone_vertical.mp4',
    ]
    @classmethod
    def test(cls):
        for i in range(4):
            clip = cls.__moviepy_editor.editor.VideoFileClip(cls.v_paths[i])
            print(clip.rotation)
moviepyTest.test()

输出:

        0
        180
        270
        90

工具二:scikit-video版本1.1.11,最后一次更新是18年。支持网络视频

依赖包:ffmpeg,下载的是ffmpeg-5.0-full_build.7z

class scikitVideoTest():
    '''
        scikit-video(1.1.11): https://github.com/scikit-video/scikit-video
        依赖ffmppeg: http://ffmpeg.org/download.html
    '''
    @classmethod
    def test(cls):
        __skvideo = __import__('skvideo')
        __skvideo.setFFmpegPath(r'D:/ffmpeg-5.0-full_build/bin')#必须指定ffmpeg路径
        __skvideo_io = __import__('skvideo.io')
        v_paths = [
            'D:/video/phone_crosswise.mp4',
            'D:/video/phone_inversion_crosswise.mp4',
            'D:/video/phone_inversion_vartical.mp4',
            'D:/video/phone_vertical.mp4',
        ]
        # 取手机视频信息
        for i in range(4):
            v_path = v_paths[i]
            video_metadata = __skvideo_io.io.ffprobe(v_path)['video']
            if 'side_data_list' in video_metadata:
                side_data_list = video_metadata['side_data_list']
                if 'side_data' in side_data_list: 
                    side_data = side_data_list['side_data']
                    print(side_data.get('@rotation', 'None'))
                else: print('Not found side_data')
            else: print('Not found side_data_list')

输出:

        Not found side_data_list
        -180
        90
        -90

参考:Python下获取视频的旋转角度信息_m_buddy的博客-CSDN博客

工具三:pymediainfo(5.1.0),不支持网络视频

class MediaInfoTest():
    @classmethod
    def test(cls):
        __media_info = __import__('pymediainfo', fromlist=['MediaInfo'])
        for i in range(4):
            vpath = v_paths[i]
            media_info = __media_info.MediaInfo.parse(vpath)
            data = media_info.to_data()
            rotation = data['tracks'][1].get('rotation', '0')       # 取视频旋转角度
            print(rotation)
MediaInfoTest.test()

输出:0.000
180.000
270.000
90.000

参考:使用Python借助pymediainfo读取视频文件的详细信息_COCO56的博客-CSDN博客_python 读取视频信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值