<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
python 中的視訊處理模組,有一個叫做 moviepy,今天我們就來嘮嘮它。
pip install moviepy
接下來完成第一個 Demo,為後續學習提高信心,擷取視訊中的一段。
下述程式碼重點使用的是 subclip
方法,但需要提前宣告一個 VideoFileClip
物件, VideoFileClip
類別建構函式在程式碼後進行說明。
from moviepy.editor import * import time clip = VideoFileClip('./1644974996.mp4').subclip(10, 20) new_file = str(int(time.time())) + '_subclip.mp4' clip.write_videofile(new_file)
程式碼執行結果如下所示:
subclip(t_start,t_end)
方法中的時間引數可以用 (t_start=10)
,以秒的時間來表示,也可以用 (t_start=(1,20))
,以1分20秒的形式來表示,還可以 (t_start=(0,1,20))
或者 (t_start=(00:01:20))
, 以小時: 分鐘: 秒的形式表示, t_end
的預設值就是視訊的長度
VideoFileClip
類別建構函式如下所示:
__init__(self, filename, has_mask=False, audio=True, audio_buffersize=200000, target_resolution=None, resize_algorithm='bicubic', audio_fps=44100, audio_nbytes=2, verbose=False, fps_source='tbr')
其中只有 filename
為必填項,其餘都為選填內容。
filename
:視訊檔名,一般常見格式都支援;has_mask
:是否包含遮罩;audio
:是否載入音訊;audio_buffersize
:音訊緩衝區大小;target_resolution
:載入後需要變換到的解析度;resize_algorithm
:調整解析度的演演算法,預設是 bicubic
,可以設定為 bilinear
,fast_bilinear
;audio_fps
:聲音的取樣頻率;audio_nbytes
:取樣的位數;verbose
:是否輸出處理資訊。subclip(t1,t2)
方法的含義為擷取t1到t2時間段內的片段。write_videofile()
方法用於視訊輸出。
from moviepy.editor import * # 讀取2個視訊檔 videoclip_a = VideoFileClip("1644974996.mp4") videoclip_b = VideoFileClip("1644974998.mp4") # 提取A視訊檔的音訊部分 audio_a = videoclip_a.audio # 給B設定音訊,注意視訊最終合成的大小會依據長的為準 videoclip_c = videoclip_b.set_audio(audio_a) # 輸出新的視訊檔 videoclip_c.write_videofile("videoclip_c.mp4")
使用 VideoFileClip
物件的 audio
屬性,可以獲取視訊的音訊部分,然後呼叫 set_audio()
方法對檔案進行音訊設定,這裡要注意一點,合成的音訊和視訊等於長度長的。
from moviepy.editor import * video = VideoFileClip('1644974996.mp4') video = video.without_audio() video.write_videofile('cc.mp4')
without_audio()
方法見名知意 - 去除聲音。
視訊的解析度和時間可以直接通過屬性讀取
from moviepy.editor import * video = VideoFileClip('1644974996.mp4') print(dir(video)) print(video.size) # 獲取解析度 print(video.duration) # 獲取視訊總時長
獲取檔案大小就比較簡單了,使用 os
模組的 os.path.getsize()
方法即可,得到的是位元組大小。
from moviepy.editor import * video = VideoFileClip('1644974996.mp4') size = os.path.getsize('1644974996.mp4') print(size)
讀取視訊,呼叫 speedx()
方法,其中設定要加速到的倍數。
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4') video_1 = clip.speedx(2) video_1.write_videofile('sss.mp4')
很多時候我們需要生成視訊的封面,直接使用下述幾行程式碼,即可實現。
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4') clip.save_frame("frame.jpg") # 儲存第1幀 clip.save_frame("frame.png", t=2) # 儲存2s時刻的那1幀
如果想要把目標視訊中的某段音訊擷取出來,可以使用如下程式碼
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4').subclip(10, 20) audioclip1 = clip.audio # 從視訊物件中提取音訊 audioclip1.write_audiofile('a.mp3') # 寫入音訊檔
擷取視訊中的一段,將其儲存為 gif
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4').subclip(10, 20) # clip.write_gif('demo.gif',fps=15) # 生成之後的檔案大 clip.write_gif('demo.gif',fps=5) # 生成之後的檔案小
到這裡,相信你能順著這個思路去學習 moviepy 更多的高階用法啦。
到此這篇關於python moviepy 的用法入門篇的文章就介紹到這了,更多相關python moviepy用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45