哪個(gè)網(wǎng)站可以做計(jì)算機(jī)二級的題關(guān)鍵詞優(yōu)化系統(tǒng)
工具類說明
1. 圖像視頻轉(zhuǎn)換
1.1 視頻輸出gif
from moviepy.editor import VideoFileClip
# 設(shè)置輸入視頻文件路徑和輸出GIF文件路徑
input_video = 'video.avi'
output_gif = 'output.gif'
# 讀取視頻文件
video = VideoFileClip(input_video)
# 將視頻保存為GIF文件
video.write_gif(output_gif)
1.2 將文件夾下圖片轉(zhuǎn)視頻
import cv2
import os
def images2video( input_folder = 'demo', output_file = 'video.avi'):# 獲取圖像文件的列表image_files = os.listdir(input_folder)# 將圖像文件名列表按照數(shù)字排序image_files.sort(key=lambda x: int(x.split('.')[0]))# 獲取圖像文件的數(shù)量num_frames = len(image_files)# 創(chuàng)建一個(gè)空的視頻流fourcc = cv2.VideoWriter_fourcc(*'XVID') # 設(shè)置視頻編解碼器out = cv2.VideoWriter(output_file, fourcc, 30.0, (640, 480))# 逐個(gè)讀取并寫入每個(gè)圖像幀for i, image_file in enumerate(image_files):frame = cv2.imread(os.path.join(input_folder, image_file))if frame is None:print(f"Error reading frame {i}: {image_file}")continueframe = cv2.resize(frame, (640, 480)) # 可以根據(jù)需要調(diào)整幀大小out.write(frame)if i % 100 == 0: # 每100幀輸出一次進(jìn)度信息print(f"Processed {i + 1}/{num_frames} frames")# 完成視頻寫入并釋放資源out.release()
2. ffmpeg視頻音頻剪輯
2.1 ffmpeg安裝
FFmpeg 的官方網(wǎng)站(https://ffmpeg.org/)上找到更詳細(xì)的安裝文檔和指南。
2.1.1 linux 安裝
- 編譯安裝:如果你需要更新或自定義的 FFmpeg 版本,你可以從源代碼編譯安裝。你可以從 FFmpeg 的官方網(wǎng)站下載源代碼,并按照官方提供的編譯指南進(jìn)行安裝。
- 使用包管理器安裝:大多數(shù) Linux 發(fā)行版的軟件倉庫中都包含 FFmpeg。你可以使用包管理器(如apt、yum、dnf等)來安裝。例如,在 Ubuntu 上,可以運(yùn)行以下命令:
sudo apt-get install ffmpeg
2.1.2 windows 安裝
- 預(yù)編譯二進(jìn)制文件:你可以從 FFmpeg 的官方網(wǎng)站下載預(yù)編譯的 Windows 版本。官方提供了靜態(tài)和共享庫版本的二進(jìn)制文件,你可以根據(jù)需要選擇適合的版本。
- 第三方安裝程序:也有一些第三方安裝程序(如Gyan Dev和BtbN)提供了 Windows 版本的 FFmpeg,你可以從它們的網(wǎng)站下載并按照說明進(jìn)行安裝。
- 備注:需要將bin目錄下設(shè)置到windows環(huán)境變量
2.1.3 macos 安裝
-
Homebrew:如果你使用 Homebrew 包管理器,可以使用以下命令安裝 FFmpeg
brew install ffmpeg
-
MacPorts:如果你使用 MacPorts 包管理器,可以使用以下命令安裝 FFmpeg
sudo port install ffmpeg
-
手動編譯:你也可以從 FFmpeg 的官方網(wǎng)站下載源代碼,并按照官方提供的編譯指南進(jìn)行手動編譯安裝。
2.2 常用命令
FFmpeg 是一個(gè)功能強(qiáng)大的多媒體處理工具,提供了許多常用的命令來處理音頻和視頻文件。以下是一些常用的 FFmpeg 命令示例:
2.2.1 轉(zhuǎn)換視頻格式
ffmpeg -i input.mp4 output.avi
2.2.2 轉(zhuǎn)換音頻格式
ffmpeg -i input.mp3 output.wav
2.2.3 調(diào)整視頻分辨率
ffmpeg -i input.mp4 -s 1280x720 output.mp4
2.2.4 調(diào)整視頻幀率
ffmpeg -i input.mp4 -r 30 output.mp4
2.2.5 裁剪視頻
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 output.mp4
2.2.6 提取音頻
ffmpeg -i input.mp4 -vn output.mp3
2.2.7 合并視頻和音頻
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a copy output.mp4
2.2.8 添加水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
2.2.9 轉(zhuǎn)換視頻編碼
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
2.2.10 轉(zhuǎn)換音頻編碼
ffmpeg -i input.mp3 -c:a libopus output.opus
2.3 實(shí)用工具
2.3.1 按照幀裁剪視頻
'''
使用 setpts=PTS-STARTPTS 可以將視頻的第一幀的時(shí)間戳設(shè)置為0,這樣后續(xù)幀的時(shí)間戳就是相對于第一幀的時(shí)間差。這在一些需要對視頻進(jìn)行時(shí)間戳調(diào)整的場景中非常有用,例如剪輯視頻或重新排序視頻幀。
'''def ffmpeg_cut_video_by_frames(input_file, output_file, start_frame, end_frame):# 構(gòu)建 FFmpeg 命令# 示例用法'''input_file = 'demo.mp4' # 輸入視頻文件路徑output_file = 'output2.mp4' # 輸出視頻文件路徑start_frame = 25 # 起始幀數(shù)end_frame = 120 # 結(jié)束幀數(shù)'''command = ['ffmpeg','-i', input_file,'-vf', f'select=between(n\,{start_frame}\,{end_frame}),setpts=PTS-STARTPTS',output_file,]if os.path.exists(output_file):os.remove(output_file)# 執(zhí)行 FFmpeg 命令flag = subprocess.run(command)return flagif __name__ == '__main__':# 示例用法input_file = 'demo.mp4' # 輸入視頻文件路徑output_file = 'output2.mp4' # 輸出視頻文件路徑start_frame = 25 # 起始幀數(shù)end_frame = 120 # 結(jié)束幀數(shù)ffmpeg_cut_video_by_frames(input_file, output_file, start_frame, end_frame)