Python如何实现视频裁剪
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,小编给大家分享一下Python如何实现视频裁剪,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!环境依赖本文主要使用到的不是f
千家信息网最后更新 2025年02月02日Python如何实现视频裁剪
小编给大家分享一下Python如何实现视频裁剪,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
环境依赖
本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中。
ffmpy安装:
pip install ffmpy -i https://pypi.douban.com/simple
代码
不废话,上代码。
#!/user/bin/env python# coding=utf-8"""@project : csdn@author : 剑客阿良_ALiang@file : cut_out_pic_tool.py@ide : PyCharm@time : 2022-01-20 10:38:53"""import osimport uuidfrom ffmpy import FFmpeg # 视频裁剪def cut_out_video(video_path: str, output_dir: str, start_pix: tuple, size: tuple): ext = os.path.basename(video_path).strip().split('.')[-1] if ext not in ['mp4', 'avi', 'flv']: raise Exception('format error') result = os.path.join(output_dir, '{}.{}'.format(uuid.uuid1().hex, ext)) ff = FFmpeg(inputs={video_path: None}, outputs={ result: '-vf crop={}:{}:{}:{} -y -threads 5 -preset ultrafast -strict -2'.format(size[0], size[1], start_pix[0], start_pix[1])}) print(ff.cmd) ff.run() return result if __name__ == '__main__': print(cut_out_video(r'C:\Users\huyi\Desktop\test2.mp4', r'C:\Users\huyi\Desktop', (0, 0), (512, 512)))
代码说明
1、cut_out_video方法参数分别为,视频地址、输出目录地址、起始像素点位置、需要裁剪的宽高。
2、做了简单的视频格式校验,如需添加,可以自己看着来。
3、最终视频名使用uuid避免重复。
4、截取的视频宽高不能超过原视频大小。
验证一下
准备的视频分辨率。
执行结果
C:\Users\huyi\.conda\envs\python36\python.exe "C:\Program Files\JetBrains\PyCharm 2020.1.3\plugins\python\helpers\pydev\pydevconsole.py" --mode=client --port=3021import sys; print('Python %s on %s' % (sys.version, sys.platform))sys.path.extend(['D:\\spyder\\csdn', 'D:/spyder/csdn'])PyDev console: starting.Python 3.6.13 |Anaconda, Inc.| (default, Mar 16 2021, 11:37:27) [MSC v.1916 64 bit (AMD64)] on win32runfile('D:/spyder/csdn/cut_out_video_tool.py', wdir='D:/spyder/csdn')ffmpeg -i C:\Users\huyi\Desktop\test2.mp4 -vf crop=512:512:0:0 -y -threads 5 -preset ultrafast -strict -2 C:\Users\huyi\Desktop\afc1de8879f211eca313e454e8bf1461.mp4ffmpeg version n4.3.1-20-g8a2acdc6da Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.3-win32 (GCC) 20200320 configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libtwolame --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomp libavutil 56. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libavformat 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\huyi\Desktop\test2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.45.100 description : Packed by Bilibili XCoder v2.0.2 Duration: 00:09:00.58, start: 0.000000, bitrate: 1558 kb/s Stream #0:0(und): Video: h364 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1556 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default) Metadata: handler_name : VideoHandlerStream mapping: Stream #0:0 -> #0:0 (h364 (native) -> h364 (libx264))Press [q] to stop, [?] for help[libx264 @ 000002069d5e7200] using SAR=1/1[libx264 @ 000002069d5e7200] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2[libx264 @ 000002069d5e7200] profile Constrained Baseline, level 3.0, 4:2:0, 8-bit[libx264 @ 000002069d5e7200] 264 - core 161 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=5 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=23 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0Output #0, mp4, to 'C:\Users\huyi\Desktop\afc1de8879f211eca313e454e8bf1461.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 description : Packed by Bilibili XCoder v2.0.2 encoder : Lavf58.45.100 Stream #0:0(und): Video: h364 (libx264) (avc1 / 0x31637661), yuv420p, 512x512 [SAR 1:1 DAR 1:1], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default) Metadata: handler_name : VideoHandler encoder : Lavc58.91.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/Aframe=12961 fps=945 q=-1.0 Lsize= 30056kB time=00:09:00.54 bitrate= 455.5kbits/s speed=39.4x video:30004kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.173805%[libx264 @ 000002069d5e7200] frame I:52 Avg QP:12.98 size: 25387[libx264 @ 000002069d5e7200] frame P:12909 Avg QP:15.91 size: 2278[libx264 @ 000002069d5e7200] mb I I16..4: 100.0% 0.0% 0.0%[libx264 @ 000002069d5e7200] mb P I16..4: 7.0% 0.0% 0.0% P16..4: 27.6% 0.0% 0.0% 0.0% 0.0% skip:65.4%[libx264 @ 000002069d5e7200] coded y,uvDC,uvAC intra: 25.4% 24.6% 3.3% inter: 10.3% 7.3% 0.2%[libx264 @ 000002069d5e7200] i16 v,h,dc,p: 46% 20% 15% 19%[libx264 @ 000002069d5e7200] i8c dc,h,v,p: 61% 16% 19% 4%[libx264 @ 000002069d5e7200] kb/s:454.67C:\Users\huyi\Desktop\afc1de8879f211eca313e454e8bf1461.mp4
结果视频分辨率
以上是"Python如何实现视频裁剪"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
视频
篇文章
代码
内容
分辨率
地址
结果
上代
不怎么
像素
剑客
参数
大小
大部分
废话
方法
更多
格式
点位
环境
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
打不开找不到服务器
对日软件开发包装
我的世界服务器排行显示
数据库如何插入属性列的数据信息
重庆网络安全教育平台
绵阳市网络安全培训班
2000字论文网络安全范文
国内网络安全培训现状
工控网络安全宣传展板
dns 服务器部署
印签服务器
php探针测试数据库连接
海外新闻 数据库
如何查询别人宝塔服务器地址
软件开发企业进项税额抵扣额
玩单机游戏无法访问服务器
数据库工厂管理设计
做软件开发的公司排名
软件开发技术基础书
怎样找回服务器管理员密码
青浦区数据软件开发值多少钱
网络安全具有4个
常用ftp服务器软件
网络安全手抄报复杂又好
软件开发有多少种模式
网络安全颁布的顺序
大专网络技术就业周记
服务器事故的定义
软件开发网站资讯
domcer服务器需要正版吗