电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

python用moviepy對視頻進(jìn)行簡單的處理

瀏覽:90日期:2022-06-25 13:39:43
楔子

隨著自媒體時(shí)代,現(xiàn)在對視頻的處理變得越來越常見。我們可以使用Adobe的一些專業(yè)工具,但是效率不高;如果只是對視頻進(jìn)行一些簡單的處理的話,或者視頻的數(shù)量非常多的話,那么使用專業(yè)軟件顯然就不太適合了。

而python中有專門用于處理視頻的庫:moviepy,可以非常方便地對視頻進(jìn)行一些簡單處理,下面我們就來看一看。

首先是安裝:pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple,個(gè)人推薦安裝的時(shí)候使用清華源,因?yàn)閙oviepy需要依賴另一個(gè)庫:imageio_ffmpeg,這個(gè)庫里面包含了一個(gè)50多MB的ffmpeg二進(jìn)制文件,直接從pypi上拉取的話會很長時(shí)間,如果網(wǎng)絡(luò)不行的話。當(dāng)然安裝moviepy的時(shí)候,imageio_ffmpeg就順帶安裝了。

從這里我們也看到,moviepy底層還是依賴ffmpeg這個(gè)專業(yè)軟件的,而ffmpeg是跨平臺的,所以moviepy也可以在任意平臺上使用。

moviepy的簡單使用

我們來簡單看一下如何使用moviepy這個(gè)模塊,不過在使用之前我們需要一個(gè)視頻,就使用you-get工具從bilibili上下載一個(gè)吧。

python用moviepy對視頻進(jìn)行簡單的處理

下面我們就使用這個(gè)下載的視頻進(jìn)行演示。

一個(gè)小栗子

我們以一個(gè)小栗子,來演示一下使用moviepy是怎么操作視頻的。

from moviepy import editor# 調(diào)用 `VideoFileClip(文件名)` 即可將視頻加載進(jìn)來# 可以讀取各種格式的視頻文件video_clip = editor.VideoFileClip(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv')# 調(diào)用subclip方法,傳入起始時(shí)間和結(jié)束時(shí)間,即可截取視頻中的指定部分'''video_clip.subclip(): 截取視頻全部,相當(dāng)于沒做處理video_clip.subclip(10): 從視頻的 `第10秒` 截取到 `結(jié)尾`video_clip.subclip(10, -2): 從視頻的 `第10秒` 截取到結(jié)尾的 `前兩秒`video_clip.subclip((1, 35), (3, 10)): 從視頻的 `第1分35秒` 截取到 `3分10秒` video_clip.subclip((1, 2, 18), (2, 1, 34)): 從視頻的 `第1小時(shí)2分18秒` 截取到 `第2小時(shí)1分34秒`'''video_clip = video_clip.subclip(5, 20)# 調(diào)整音量,變?yōu)樵瓉淼?.5video_clip = video_clip.volumex(0.5)# 做一個(gè)文本剪貼板,自定義樣式、顏色。text_clip = editor.TextClip('hanser, little angel', fontsize=40, color='blue')# 讓文本在屏幕的正中間顯示,持續(xù)10秒,設(shè)置透明度為0.8'''屏幕左上角為(0, 0),右下角為(屏幕寬度, 屏幕高度)set_position((800, 500)): 顯示在800, 500的位置上set_position(('center', 'center')): 顯示在屏幕的正中央set_position((0.4, 0.6), True): 顯示在距離左邊百分之40、距離上邊百分之60的位置上set_duration(10): 持續(xù)10秒set_opacity(0.6): 設(shè)置透明度為0.6'''text_clip = text_clip.set_position(('center', 'center')).set_duration(10).set_opacity(0.8)# 然后把文本剪貼板貼在視頻上video_clip = editor.CompositeVideoClip([video_clip, text_clip])# 然后導(dǎo)出視頻,可以是其它的視頻格式video_clip.write_videofile('1.mp4')# 下面很重要:r'''如果你是在Windows上執(zhí)行,不出意外的話,當(dāng)你在執(zhí)行 editor.TextClip() 的時(shí)候,會報(bào)出如下錯(cuò)誤:OSError: MoviePy Error: creation of None failed because of the following error:[WinError 2] 系統(tǒng)找不到指定的文件。..This error can be due to the fact that ImageMagick is not installed on your computer, or (for Windows users) that you didn’t specify the path to the ImageMagick binary in file conf.py, or that the path you specified is incorrect這個(gè)錯(cuò)誤是由于你的電腦上缺少ImageMagick造成的,我們需要去http://www.imagemagick.org/script/download.php這個(gè)網(wǎng)站上下載對應(yīng)操作系統(tǒng)的ImageMagick,我這里是Windows。可能下載的比較慢,畢竟是外網(wǎng)。如果覺得速度無法忍受的話,我提供了相應(yīng)了網(wǎng)盤鏈接: 鏈接:https://pan.baidu.com/s/1n1xNohD7V-abQbX81UENJQ 提取碼:usl3,可以進(jìn)行保存下載下載完畢之后,直接安裝在指定的目錄。然后修改site-packagesmoviepyconfig_defaults.py, 在文件的尾部有如下內(nèi)容:import osFFMPEG_BINARY = os.getenv(’FFMPEG_BINARY’, ’ffmpeg-imageio’)IMAGEMAGICK_BINARY = os.getenv(’IMAGEMAGICK_BINARY’, ’auto-detect’)我們把 `IMAGEMAGICK_BINARY = ` 后面的內(nèi)容,換成你剛才ImageMagick的安裝路徑下magick.exe的絕對路徑:import osFFMPEG_BINARY = os.getenv(’FFMPEG_BINARY’, ’ffmpeg-imageio’)IMAGEMAGICK_BINARY = r’E:ImageMagick-7.0.10-Q16magick.exe’'''# 然后執(zhí)行就沒有問題了

python用moviepy對視頻進(jìn)行簡單的處理

我們看到此時(shí)文字就添加進(jìn)去了,并且該視頻只有15秒,也就是我們截取的部分。

那么moviepy是如何工作的呢?

moviepy使用ffmpeg對視頻、音頻文件進(jìn)行讀取和導(dǎo)出,使用ImageMagick生成文字等等。

首先我們使用VideoFileClip對視頻進(jìn)行讀取,得到VideoFileClip對象,我們記作clip。我們可以對這個(gè)clip進(jìn)行任意的操作(剪切、合并、調(diào)整亮度、速度、和其它的clip拼接在一起等等)。并且我們需要注意的是,這些操作是可以鏈?zhǔn)秸{(diào)用的,因?yàn)槊恳淮尾僮鞫紩玫揭粋€(gè)新的clip,不會影響原來的。我們上面演示了視頻的讀取、以及指定部分的截取、音量的調(diào)整、以及添加文字等等,我們后面還會介紹更多操作。

并且我們最后調(diào)用clip的write_videofile方法,可以將處理之后的視頻寫入本地。當(dāng)然我們還可以使用pygame,或者jupyter notebook進(jìn)行展示。為了方便,我們后面就使用jupyter notebook。

視頻屬性

我們說一個(gè)視頻,肯定有大小、寬高、fps、時(shí)長等等屬性,下面我們就來看看如何獲取這些屬性。

from moviepy import editor# 調(diào)用 `VideoFileClip(文件名)` 即可將視頻加載進(jìn)來# 可以讀取各種格式的視頻文件video_clip = editor.VideoFileClip(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv')# 獲取寬度和高度print(video_clip.size) # [800, 600]print(video_clip.w, video_clip.h) # 800 600# 獲取fpsprint(video_clip.fps) # 23.976023976023978# 獲取時(shí)長,單位是秒print(video_clip.duration) # 155.12# 獲取大小,可以直接使用os模塊import os# 大概16兆print(os.stat(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv').st_size) # 16852110print(os.stat(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv').st_size / 1024 ** 2) # 16.07142448425293視頻合成

視頻合成有兩種方式:

1.多個(gè)視頻按照先后順序拼接起來。比如一個(gè)一分鐘和一個(gè)兩分鐘的視頻組合起來,變成三分鐘。

from moviepy import editorvideo_clip = editor.VideoFileClip(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv')# 截取10到20秒video_clip1 = video_clip.subclip(10, 20)# 截取1分45秒到結(jié)尾的前兩秒video_clip2 = video_clip.subclip((1, 45), -2)# 然后前后拼接起來clip = editor.concatenate_videoclips([video_clip1, video_clip2])# 使用jupyter進(jìn)行展示,設(shè)置一個(gè)寬度clip.ipython_display(width=360)

python用moviepy對視頻進(jìn)行簡單的處理

此時(shí)視頻就展示在jupyter上了,而且是兩個(gè)視頻拼接在一起的。并且在concatenate_videoclips中還可以指定一個(gè)transition參數(shù)(也是一個(gè)VideoFileClip對象),作為銜接之間的過渡。

還是比較簡單的,假設(shè)我們有5個(gè)視頻,如果只是簡單的前后拼接就可以這么做。

from moviepy import editorvideos = ['1.mp4', '2.mp4', '3.flv', '4.mp4', '5.flv']clips = []for video in videos: clips.append(editor.VideoFileClip(video))editor.concatenate_videoclips(clips).write_videofile('xxx.mp4')

這里值得一提的是,多個(gè)clip進(jìn)行拼接,并不需要這些clip之間有相同的尺寸、時(shí)長什么的,僅僅是將它們按照順序拼接起來而已。

另外,當(dāng)你用jupyter進(jìn)行展示時(shí),視頻不要過長,否則報(bào)錯(cuò)。當(dāng)然你也可以給ipython_display函數(shù)傳遞一個(gè)maxduration參數(shù),讓它支持顯示更大時(shí)長的視頻文件。但是注意:如果文件過大,在jupyter上可能會耗光你的內(nèi)存。

2.多個(gè)視頻在同一個(gè)畫面上顯示

from moviepy import editor# margin: 設(shè)置外邊距video_clip = editor.VideoFileClip(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv').margin(10)video_clip1 = video_clip.subclip(10, 20)# editor.vfx.mirror_x: x軸鏡像video_clip2 = video_clip1.fx(editor.vfx.mirror_x)# editor.vfx.mirror_y: y軸鏡像video_clip3 = video_clip1.fx(editor.vfx.mirror_y)# resize: 等比縮放video_clip4 = video_clip1.resize(0.8)# 列表里面有兩個(gè)列表,所以會將屏幕上下等分# 上半部分顯示video_clip1, video_clip2,下半部分顯示video_clip3, video_clip4clip = editor.clips_array([[video_clip1, video_clip2], [video_clip3, video_clip4]])clip.ipython_display(width=600)

python用moviepy對視頻進(jìn)行簡單的處理

所以我們看到concatenate_videoclips是將多個(gè)視頻前后拼接,而clips_array是將多個(gè)視頻同時(shí)顯示在一個(gè)畫面里面。

修改視頻屬性

from moviepy import editorclip = editor.VideoFileClip(r'C:UserssatoriDesktop警察蜀黍!!!就是這個(gè)人!!!! 翻唱.flv').subclip(10, 20)clip = (clip.fx(editor.vfx.resize, width=460) # 調(diào)整尺寸,保持比例 .fx(editor.vfx.speedx, 2) # 調(diào)整倍數(shù) .fx(editor.vfx.colorx, 0.5) # 畫面調(diào)暗 )視頻音頻合成

假設(shè)我們有一個(gè)視頻A和一個(gè)視頻B,我要將視頻B的音頻和視頻A組合起來,怎么做呢?

from moviepy import editorclipA = editor.VideoFileClip(r'A.mp4')clipB = editor.VideoFileClip(r'B.mp4')# 獲取B的音頻audioB = clipB.audio# 將B的音頻和A組合起來clipA = clipA.set_audio(audioB)# 然后保存即可# 或者我們也可以直接加載一個(gè)音頻audio = editor.AudioFileClip('b.mp3')

以上就是python用moviepy對視頻進(jìn)行簡單的處理的詳細(xì)內(nèi)容,更多關(guān)于python moviepy對視頻處理的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 标策网-专注公司商业知识服务、助力企业发展 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 宠物店加盟_宠物连锁店_开宠物店-【派多格宠物】 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 广州企亚 - 数码直喷、白墨印花、源头厂家、透气无手感方案服务商! | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 5L旋转蒸发器-20L-50L旋转蒸发器-上海越众仪器设备有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 非甲烷总烃分析仪|环控百科 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 桌上式超净工作台-水平送风超净工作台-上海康路仪器设备有限公司 | 干法制粒机_智能干法制粒机_张家港市开创机械制造有限公司 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 加盟店-品牌招商加盟-创业项目商机平台 | 四川实木门_成都实木门 - 蓬溪聚成门业有限公司 | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 农业仪器网 - 中国自动化农业仪器信息交流平台 |