python?moviepy?的用法入門(mén)篇
python 中的視頻處理模塊,有一個(gè)叫做 moviepy,今天我們就來(lái)嘮嘮它。
模塊安裝使用如下命令即可
pip install moviepy
接下來(lái)完成第一個(gè) Demo,為后續(xù)學(xué)習(xí)提高信心,截取視頻中的一段。
截取視頻
下述代碼重點(diǎn)使用的是 subclip
方法,但需要提前聲明一個(gè) VideoFileClip
對(duì)象, VideoFileClip
類(lèi)的構(gòu)造函數(shù)在代碼后進(jìn)行說(shuō)明。
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)
代碼運(yùn)行結(jié)果如下所示:
subclip(t_start,t_end)
方法中的時(shí)間參數(shù)可以用 (t_start=10)
,以秒的時(shí)間來(lái)表示,也可以用 (t_start=(1,20))
,以1分20秒的形式來(lái)表示,還可以 (t_start=(0,1,20))
或者 (t_start=(00:01:20))
, 以小時(shí): 分鐘: 秒的形式表示, t_end
的默認(rèn)值就是視頻的長(zhǎng)度
VideoFileClip
類(lèi)的構(gòu)造函數(shù)如下所示:
__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
為必填項(xiàng),其余都為選填內(nèi)容。
filename
:視頻文件名,一般常見(jiàn)格式都支持;has_mask
:是否包含遮罩;audio
:是否加載音頻;audio_buffersize
:音頻緩沖區(qū)大??;target_resolution
:加載后需要變換到的分辨率;resize_algorithm
:調(diào)整分辨率的算法,默認(rèn)是bicubic
,可以設(shè)置為bilinear
,fast_bilinear
;audio_fps
:聲音的采樣頻率;audio_nbytes
:采樣的位數(shù);verbose
:是否輸出處理信息。
subclip(t1,t2)
方法的含義為截取t1到t2時(shí)間段內(nèi)的片段。write_videofile()
方法用于視頻輸出。
提取A視頻的音頻,注入到B視頻中
from moviepy.editor import * # 讀取2個(gè)視頻文件 videoclip_a = VideoFileClip("1644974996.mp4") videoclip_b = VideoFileClip("1644974998.mp4") # 提取A視頻文件的音頻部分 audio_a = videoclip_a.audio # 給B設(shè)置音頻,注意視頻最終合成的大小會(huì)依據(jù)長(zhǎng)的為準(zhǔn) videoclip_c = videoclip_b.set_audio(audio_a) # 輸出新的視頻文件 videoclip_c.write_videofile("videoclip_c.mp4")
使用 VideoFileClip
對(duì)象的 audio
屬性,可以獲取視頻的音頻部分,然后調(diào)用 set_audio()
方法對(duì)文件進(jìn)行音頻設(shè)置,這里要注意一點(diǎn),合成的音頻和視頻等于長(zhǎng)度長(zhǎng)的。
去掉視頻聲音
from moviepy.editor import * video = VideoFileClip('1644974996.mp4') video = video.without_audio() video.write_videofile('cc.mp4')
without_audio()
方法見(jiàn)名知意 - 去除聲音。
獲取視頻信息
視頻的分辨率和時(shí)間可以直接通過(guò)屬性讀取
from moviepy.editor import * video = VideoFileClip('1644974996.mp4') print(dir(video)) print(video.size) # 獲取分辨率 print(video.duration) # 獲取視頻總時(shí)長(zhǎng)
獲取文件大小就比較簡(jiǎn)單了,使用 os
模塊的 os.path.getsize()
方法即可,得到的是字節(jié)大小。
from moviepy.editor import * video = VideoFileClip('1644974996.mp4') size = os.path.getsize('1644974996.mp4') print(size)
設(shè)置視頻倍速播放
讀取視頻,調(diào)用 speedx()
方法,其中設(shè)置要加速到的倍數(shù)。
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4') video_1 = clip.speedx(2) video_1.write_videofile('sss.mp4')
截取視頻封面
很多時(shí)候我們需要生成視頻的封面,直接使用下述幾行代碼,即可實(shí)現(xiàn)。
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4') clip.save_frame("frame.jpg") # 保存第1幀 clip.save_frame("frame.png", t=2) # 保存2s時(shí)刻的那1幀
提取視頻中的音頻內(nèi)容
如果想要把目標(biāo)視頻中的某段音頻截取出來(lái),可以使用如下代碼
from moviepy.editor import * clip = VideoFileClip('./1644974996.mp4').subclip(10, 20) audioclip1 = clip.audio # 從視頻對(duì)象中提取音頻 audioclip1.write_audiofile('a.mp3') # 寫(xiě)入音頻文件
截取視頻中的一段,將其保存為 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) # 生成之后的文件小
寫(xiě)在后面
到這里,相信你能順著這個(gè)思路去學(xué)習(xí) moviepy 更多的高級(jí)用法啦。
到此這篇關(guān)于python moviepy 的用法入門(mén)篇的文章就介紹到這了,更多相關(guān)python moviepy用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MoviePy簡(jiǎn)介及Python視頻剪輯自動(dòng)化
- python用moviepy對(duì)視頻進(jìn)行簡(jiǎn)單的處理
- Python使用MoviePy輕松搞定視頻編輯
- MoviePy常用剪輯類(lèi)及Python視頻剪輯自動(dòng)化
- Python視頻剪輯Moviepy庫(kù)使用教程
- python基于moviepy實(shí)現(xiàn)音視頻剪輯
- Python使用MoviePy實(shí)現(xiàn)編輯音視頻并添加字幕
- Python使用moviepy讀取字幕srt文件報(bào)錯(cuò)的解決方法詳解
- Moviepy模塊實(shí)現(xiàn)視頻添加圖片水印
- 基于Python和MoviePy實(shí)現(xiàn)照片管理和視頻合成工具
- 使用MoviePy實(shí)現(xiàn)圖像序列合成視頻并添加背景音樂(lè)
相關(guān)文章
Python如何實(shí)用File文件的實(shí)現(xiàn)
本文主要介紹了Python如何實(shí)用File文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02從運(yùn)行效率與開(kāi)發(fā)效率比較Python和C++
今天小編就為大家分享一篇關(guān)于從運(yùn)行效率與開(kāi)發(fā)效率比較Python和C++,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼)
這篇文章主要介紹了python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼),需要的朋友可以參考下2020-02-02python如何發(fā)送xml格式請(qǐng)求數(shù)據(jù)
這篇文章主要介紹了python如何發(fā)送xml格式請(qǐng)求數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06