成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何用 Python 和 EV 剪輯短視頻

開發 后端
本文借助python和EV剪輯制作我們所要的視頻效果,不僅免費,而且沒有廣告水印。

 現在小視頻非常流行,如何進行高效簡便的視頻剪輯,是各個up主的必備技能。本文借助python和EV剪輯制作我們所要的視頻效果,不僅免費,而且沒有廣告水印。

一、將圖片轉化成視頻

通過python的opencv庫就可以把圖片轉成視頻,要注意的是把幀率設置成30,方便后續和其他視頻拼接,因為幀率不同會導致拼接出錯。 

  1. import cv2,os  
  2. import matplotlib.pyplot as plt  
  3. from PIL import Image  
  4. canshu=0.5  #設置視頻分辨率參數  
  5. img = Image.open('中國票據發展報告.jpg')  
  6. img.save('ddd.jpg')  
  7. img = cv2.imread('ddd.jpg') #設置一個圖片的大小作為指定大小  
  8. imgimgInfo = img.shape  
  9. size = (int(imgInfo[1]*canshu),int(imgInfo[0]*canshu))  
  10. fourcc = cv2.VideoWriter_fourcc('M','J','P','G')   
  11. videoWrite = cv2.VideoWriter('3.avi',fourcc,30,size,True)  #參數依次是:文件路徑;指定編碼器;幀率;畫面大小;是彩色還是黑色  
  12. file_list = os.listdir('./1//')   #獲取文件夾里的列表  
  13. for i in range(0,len(file_list)):  
  14.     fileName ='./1//'+file_list[i] 
  15.     img = Image.open(fileName)  
  16.     #根據樣本圖片調整圖片大小  
  17.     (x00,y00) = img.size  
  18.     x_s = x00*canshu  
  19.     y_s = int(y00 * x_s / x00)   
  20.     imgimg = img.resize(size,Image.ANTIALIAS)  
  21.     img.save('ddd.jpg')  
  22.     img = cv2.imread('ddd.jpg') #讀取圖像  
  23.     #因為是單張圖片的時間太短,每一張圖片插入20幀  
  24.     for j in range(0,20):  
  25.         videoWrite.write(img)  
  26. videoWrite.release() 

但是如果要將圖片做一些簡單的動畫效果,例如做一個畫面逐漸縮小的動畫,那就要借助EV剪輯,調整圖片的大小,加上白背景,然后導出視頻。

注意導出的時候要設置幀率,如果時間過長,可以設置設置幀率低一點,然后用python程序把播放速度提升,幀率也會相應提高。 

  1. import cv2  
  2. vdop = "4.mp4"#輸入視頻路徑  
  3. cap = cv2.VideoCapture(vdop)   
  4. fps = cap.get(cv2.CAP_PROP_FPS) #獲取輸入視頻的幀率 
  5. size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),  
  6.         int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))#獲取輸入視頻的大小  
  7. fourcc = cv2.VideoWriter_fourcc('I', '4', '2', '0')  #These are the FOURCCs to compressed formats  
  8. out_path = "8.mp4" #輸出2倍速的avi格式的視頻路徑  
  9. output_viedo = cv2.VideoWriter()  
  10. fps = (29.5/26.8)*fps #2倍速處理  
  11. #isColor:如果該位值為Ture,解碼器會進行顏色框架的解碼,否則會使用灰度進行顏色架構  
  12. output_viedo.open(out_path , fourcc, fps, size, isColor=True 
  13. rval = True  
  14. while rval:  
  15.     rval, img = cap.read()#逐幀讀取原視頻  
  16.     output_viedo.write(img)#寫入視頻幀  
  17. output_viedo.release()  
  18. cap.release() 

用opencv處理過的視頻會失去音頻。我們也可以使用ffmpeg來調速,可以保留聲音,特別適合微調。要使用FFmpeg,安裝完之后,設置環境變量,就能在python調用FFmpeg。 

  1. import os  
  2. os.system('ffmpeg -i 4.mp4 -vf  "setpts=2*PTS" 8.mp4')  #圖像兩倍慢速  

二、將視頻添加音頻作為背景音樂 

  1. import subprocess,os  
  2. mp4_f = './2.avi'  
  3. mp3_f = './背景音.mp3'  
  4. n_mp4_n = 'new' + mp4_f.split('/')[-1] 
  5. n_mp4_f = mp4_f.replace(mp4_f.split('/')[-1],n_mp4_n)  
  6. com = f'D:\\ffmpeg\\bin\\ffmpeg.exe -i "{mp3_f}" -i "{mp4_f}" ' \ f' -acodec copy -vcodec copy "{n_mp4_f}"'  
  7. print(com)  
  8. os.system(com) 

三、合并視頻

1.剪切視頻 

  1. import os  
  2. import subprocess,cv2  
  3. com = f'ffmpeg -i 5.mp4 -c copy -t 00:00:20.0 output.mp4'  # 截取前20秒  -ss 00:00:00.0   起始位置  
  4. os.system(com) 

2.要將不同的視頻合并,首先要確保幀率和畫布大小一樣,這樣才能確保合并起來不出錯。下面代碼是調整畫布。將形狀不同的視頻畫面,要按照原視頻的比例,調整到一個框里面去。 

  1. import subprocess,os  
  2. import cv2  
  3. #獲取樣本的畫布大小  
  4. video_path = "2\\1.mp4"  
  5. cap = cv2.VideoCapture(video_path)  
  6. frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))# 獲取視頻高度  
  7. frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 獲取視頻寬度  
  8. fps = cap.get(cv2.CAP_PROP_FPS) #視頻平均幀率  
  9. h0=frame_height  
  10. w0=frame_width  
  11. file_list = os.listdir('3\\')   #獲取文件夾里的所有文件列表  
  12. for i in file_list:  
  13.   #獲取當前視頻的  
  14.   video_path = '3\\'+i  
  15.   cap = cv2.VideoCapture(video_path)  
  16.   frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) 
  17.   # 獲取視頻高度、寬度  
  18.   frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  
  19.   h=frame_height  
  20.   w=frame_width   
  21.   if h/w>h0/w0:    
  22.     strn=f'ffmpeg -i %s -vf "scale=(%s*%s/%s):%s,pad=%s:%s:(%s-(%s*%s/%s))/2:0:black" %s'%  (video_path,w,h0,h,h0,        w0,h0,w0,w,h0,h,i)  
  23.   else:               
  24.      strn=f'ffmpeg -i  %s -vf "scale=%s:%s*%s/%s,pad=%s:%s:0:((%s-(%s*%s/%s))/2):black"  %s'%    (video_path,w0,w0,h,w,       w0,h0,          h0,w0,h,w,i)  
  25.                               #本圖縮放后=寬:高,位置=總寬:總高:水平方向放置的位置:垂直方向放置的位置  
  26.   os.system(strn) 

3.將視頻合并

將視頻先轉化成ts格式,然后再合并,成功率更高。 

  1. import os  
  2. lista='kaishiwizhi'  
  3. #先獲取這些MP4文件,轉換成ts格式  
  4. for each in os.listdir():  
  5.     if each[-3:] in ['mp4','avi'] :  
  6.         os.system('ffmpeg.exe -i %s -c copy -vbsf h264_mp4toannexb %s.ts' % (each, each[:-4]))  
  7.         listalista=lista +('|%s.ts'%(each[:-4]))  
  8. listalista=lista.replace('kaishiwizhi|','')  
  9. import subprocess,cv2  
  10. #subprocess.call(cmd, shell=True 
  11. com = f'ffmpeg -i "concat:%s" -c copy 333333.avi'%lista  
  12. #com = f'mencoder -forceidx -of lavf -oac copy -ovc copy -o output.avinew 2.avi new 2.avi'  
  13. print(com)  
  14. os.system(com)  

 

責任編輯:龐桂玉 來源: Python中文社區
相關推薦

2019-12-23 09:27:43

Python短視頻視頻

2015-06-16 16:26:27

2021-06-02 15:10:20

PythonScrapy視頻

2017-06-29 11:11:17

2022-05-12 09:25:19

Python播放視頻攝像頭

2020-06-28 14:35:54

OBSWebSockets開源

2018-06-06 16:17:41

視頻剪輯

2022-01-21 09:31:37

PythonLinux視頻

2018-11-09 15:47:07

剪輯工具

2022-08-16 16:22:07

計算機視覺

2022-04-06 14:25:19

視頻跨頁面技術

2019-11-18 10:14:19

AI 數據人工智能

2021-09-09 06:55:43

Web剪輯視頻

2018-03-27 18:12:12

PythonHTML

2023-02-27 22:41:44

Python水印短視頻

2020-07-10 09:49:53

數據清理數據分析查找異常

2023-02-08 07:09:40

PythonChatGPT語言模型

2017-07-20 21:06:44

PythonExcelSQL

2017-06-27 13:38:38

互聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费在线观看一区二区三区 | 一区二区三区视频在线 | 久婷婷| 成人网在线 | 欧美另类视频在线 | 韩国理论电影在线 | 国产一区二区三区久久久久久久久 | 亚洲免费一区二区 | 久草网址| av黄色免费| 蜜桃在线视频 | av在线二区 | 九九国产| www.中文字幕| 97精品一区二区 | 激情免费视频 | 日本天堂视频在线观看 | 三区在线观看 | 毛片网站在线观看 | 国产精品1区2区 | 一区二视频| 在线免费看黄 | 欧美日韩国产高清视频 | 色天天综合 | 91精品久久久久久综合五月天 | 一级毛片成人免费看a | 黄色大片网 | 国产成人在线视频播放 | 在线成人av| 日韩欧美不卡 | 99精品久久久国产一区二区三 | 欧美成人一区二区 | 亚洲视频www | 日韩影院一区 | 自拍偷拍亚洲欧美 | 国产欧美精品一区二区三区 | 亚洲精品片 | 午夜精品久久久久久不卡欧美一级 | 一区二区三区亚洲 | 四虎最新视频 | 狠狠色狠狠色综合系列 |