色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

python基于moviepy實(shí)現(xiàn)音視頻剪輯

瀏覽:7日期:2022-06-16 17:43:33
目錄實(shí)踐步驟完整代碼參考實(shí)踐步驟

1.尋找合適的Python庫(安裝是否麻煩、使用是否簡便、執(zhí)行會(huì)不會(huì)太久)

moviepy 音視頻庫。分析需要用的API:代碼示例

2.定義輸入輸出

輸入:一個(gè)音視頻文件的地址,需要剪出來的時(shí)間段 輸出:剪輯片段的文件

3.設(shè)計(jì)執(zhí)行流程并一步步實(shí)現(xiàn)(定義函數(shù),與使用具體API相關(guān))

讀入并創(chuàng)建clip對象。 剪輯subclip,輸入時(shí)間參數(shù)可以是時(shí)間格式的字符串。 導(dǎo)出write_videofile。

4.結(jié)論:時(shí)間太久,片段多長就花了多久的時(shí)間;CPU全跑滿了。

stackoverflowConcat videos too slow using Python MoviePY 里面有個(gè)答案說,調(diào)用包里封裝的ffmpeg函數(shù)會(huì)快一些:

You have some functions that perform direct calls to ffmpeg: github.com/Zulko/movie… And are therefore extremely efficient, for simple tasks such as yours.

5.重新設(shè)計(jì)和實(shí)現(xiàn),直接使用moviepy.video.io.ffmpeg_tools里的函數(shù):ffmpeg_extract_subclip(源音視頻文件,起,止,輸出名)。

這個(gè)函數(shù)中輸入的起止時(shí)間參數(shù)只能是數(shù)字,不能是字符串,而庫基本使用的接口函數(shù)傳入的是字符串。看源碼發(fā)現(xiàn)是有個(gè)把時(shí)間字符串轉(zhuǎn)換成數(shù)字的裝飾器的,一步步找就可以找到那個(gè)轉(zhuǎn)換的函數(shù)了。

6.結(jié)論:時(shí)間快了很多,幾乎是幾秒內(nèi)就完成。

但并不明白為什么快了這么多

7.優(yōu)化:一次處理多個(gè)時(shí)間段

輸入由一個(gè)起止時(shí)間,變?yōu)橐唤M起止時(shí)間 循環(huán)處理每一組起止時(shí)間 輸出的文件名按順序拼接

8.優(yōu)化:每段時(shí)間配上名字

輸入除了每一組的起止時(shí)間,還有后綴名 文件名+后綴得到輸出的文件名

9.優(yōu)化:輸入輸出的合法性校驗(yàn)

校驗(yàn)輸入地址是合法文件 校驗(yàn)時(shí)間段(沒什么必要) 不可以小于0不可以大于視頻時(shí)間起小于止完整代碼

需要pip install moviepy

簡單的使用

from moviepy.editor import VideoFileClip, concatenate_videoclipsclipOri = VideoFileClip('E:/2020-03-29 19-31-39.mkv')#截取兩個(gè)subclip再拼接#time_length = int(clipOri.duration) 這句可以獲取片子的時(shí)#超過時(shí)長會(huì)報(bào)錯(cuò),時(shí)長默認(rèn)用秒,也可以寫得更細(xì),(00:03:50.54)->3分50秒cut1 = clipOri.subclip(0, 7053)cut2 = clipOri.subclip(7059, 8941)finalClip = concatenate_videoclips([cut1,cut2])finalClip.write_videofile('E:/acut.mp4')

import osimport moviepy.video.io.ffmpeg_tools as fftoolfrom moviepy.tools import cvsecsdef add_suffix(file_name, suffix): # 文件名拼接后綴 index = file_name.rfind(’.’) # 最后一個(gè)點(diǎn)號 res = file_name[:index] + ’_’ + suffix + file_name[index:] return res# 輸入file_name = r'./XXX.mkv'output_arr = [ (’04:20’,’05:07’, ’自我介紹’), (’05:07’,’17:47’, ’項(xiàng)目經(jīng)歷’), (’17:37’,’24:40’, ’HTTPS’), (’24:40’,’28:10’, ’實(shí)現(xiàn)讀寫鎖’),]if not os.path.isfile(file_name): # 校驗(yàn) print('不合法的輸入', file_name)for startStr, endStr, suffix in output_arr: start = cvsecs(startStr) end = cvsecs(endStr)if start < 0 or start >= end: # 校驗(yàn)print('不合法的時(shí)間',startStr, endStr)continue full_output_name = add_suffix(file_name, suffix) print(’處理文件:’, file_name, ’時(shí)間:’, startStr, ’-’, endStr) fftool.ffmpeg_extract_subclip(file_name,start,end,full_output_name) # 剪輯并輸出 print(’處理功成功,輸出:’,full_output_name)參考 moviepy的文檔 moviepy中文文檔英文文檔GitHub地址 博文:用moviepy將視頻剪掉一段stack overflow Concat videos too slow using Python MoviePY

以上就是python基于moviepy實(shí)現(xiàn)音視頻剪輯的詳細(xì)內(nèi)容,更多關(guān)于python moviepy實(shí)現(xiàn)音視頻剪輯的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 2019天天操天天干天天透 | 成a人v| 亚洲aⅴ天堂| 国内精品久久影院 | 亚欧在线视频 | 国产精品秦先生手机在线 | 亚洲天堂中文网 | 欧美啊啊啊 | 手机在线看福利 | 一区二区三区精品视频 | 国产一级二级三级视频 | 毛片网站大全 | 日本韩国一区二区三区 | 国产在线步兵一区二区三区 | 武松大战潘金莲三级在线 | 99在线视频观看 | 国产一有一级毛片视频 | 国产精品久久久久网站 | 酒色影院| 综合久色 | 国产欧美另类性视频 | 成人免费夜片在线观看 | 一级性片 | 日韩理论视频 | 国产欧美日韩综合二区三区 | 成人免费观看一区二区 | 日本道综合一本久久久88 | 欧美在线亚洲国产免m观看 欧美在线一级精品 | 欧美一级成人毛片影院 | 欧美精品一区二区三区在线 | 国产成人爱片免费观看视频 | 男人和女人的做刺激性视频 | 日本三级久久 | 久久精品男人的天堂 | 在线播放性xxx欧美 在线播放亚洲视频 | 三级视频网站在线观看 | 国产色手机在线观看播放 | 欧美久久久久欧美一区 | 曰本女同互慰高清在线观看 | 久久性生大片免费观看性 | 欧美日韩一区二区三区在线 |