視頻拼接,拼接時長版本

目錄

視頻較長,分辨率較大,這個效果很好,不耗用內存 ffmpeg

imageio,適合視頻較短


視頻較長,分辨率較大,這個效果很好,不耗用內存 ffmpeg


import subprocess
import glob
import os
from natsort import natsorted
base_dir = r'C:\Users\Administrator\Videos\shuiyin\result'
output_file = r'output_shuiyin.mp4'
video_paths = glob.glob(base_dir + '/*.mp4')
video_paths = natsorted(video_paths)
with open('file_list.txt', 'w') as f:for file in video_paths:f.write(f"file '{file}'\n")
ffmpeg_command = ['ffmpeg','-f', 'concat',           # 指定拼接模式'-safe', '0',             # 允許絕對路徑'-i', 'file_list.txt',    # 輸入的文件列表'-c:v', 'libx264',        # 使用 libx264 編碼器'-c:a', 'aac',            # 使用 aac 編碼音頻'-strict', 'experimental',# 使用實驗性編碼output_file               # 輸出文件路徑
]
subprocess.run(ffmpeg_command, check=True)print(f"視頻拼接完成,輸出文件:{output_file}")

imageio,適合視頻較短


import glob
from natsort import natsorted
from moviepy.editor import VideoFileClip, concatenate_videoclips
import glob
import os.pathfrom natsort import natsorted
import cv2
import imageioif __name__ == '__main__':#內存base_dir =r"C:\Users\Administrator\Videos\shuiyin\0127"base_dir =r'C:\Users\Administrator\Videos\shuiyin\result'output_path = "pinjie_shuiyin.mp4"video_paths =glob.glob(base_dir +'/*.mp4')video_paths=natsorted(video_paths)imgs=[]res = []for file in video_paths:cap_a = cv2.VideoCapture(file)  # 打開視頻Bfps = cap_a.get(cv2.CAP_PROP_FPS)frame_count = 0print(file)while True:ret, frame_a = cap_a.read()if not ret:break  # 如果沒有讀取到幀,則跳出循環res.append(cv2.cvtColor(frame_a, cv2.COLOR_BGR2RGB))frame_count += 1  # 釋放視頻資源cap_a.release()imageio.mimsave(output_path, res, "mp4", fps=fps, macro_block_size=None)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67453.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67453.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue.js 什么是 Composition API?

Vue.js 什么是 Composition API? 今天我們來聊聊 Vue 3 引入的一個重要特性:組合式 API(Composition API)。如果你曾在開發復雜的 Vue 組件時感到代碼難以維護,那么組合式 API 可能正是你需要的工具。 什么是組合式 …

Selenium配合Cookies實現網頁免登錄

文章目錄 前言1 方案一:使用Chrome用戶數據目錄2 方案二:手動獲取并保存Cookies,后續使用保存的Cookies3 注意事項 前言 在進行使用Selenium進行爬蟲、網頁自動化操作時,登錄往往是一個必須解決的問題,但是Selenium每次…

計算機畢業設計Python+知識圖譜大模型AI醫療問答系統 健康膳食推薦系統 食譜推薦系統 醫療大數據 機器學習 深度學習 人工智能 爬蟲 大數據畢業設計

溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 作者簡介:Java領…

關于el-table翻頁后序號列遞增的組件封裝

需求說明: 項目中經常會用到的一個場景,表格第一列顯示序號(1、2、3...),但是在翻頁后要遞增顯示序號,例如10、11、12(假設一頁顯示10條數據),針對這種情況,封…

Elasticsearch的索引生命周期管理

目錄 說明零、參考一、ILM的基本概念二、ILM的實踐步驟Elasticsearch ILM策略中的“最小年齡”是如何計算的?如何監控和調整Elasticsearch ILM策略的性能? 1. **監控性能**使用/_cat/thread_pool API基本請求格式請求特定線程池的信息響應內容 2. **調整…

AI大模型開發原理篇-3:詞向量和詞嵌入

簡介 詞向量是用于表示單詞意義的向量, 并且還可以被認為是單詞的特征向量或表示。 將單詞映射到實向量的技術稱為詞嵌入。在實際應用中,詞向量和詞嵌入這兩個重要的NLP術語通常可以互換使用。它們都表示將詞匯表中的單詞映射到固定大小的連續向量空間中…

[內網安全] 內網滲透 - 學習手冊

這是一篇專欄的目錄文檔,方便讀者系統性的學習,筆者后續會持續更新文檔內容。 如果沒有特殊情況的話,大概是一天兩篇的速度。(實驗多或者節假日,可能會放緩) 筆者也是一邊學習一邊記錄筆記,如果…

【學術會議征稿-第二屆生成式人工智能與信息安全學術會議(GAIIS 2025)】人工智能與信息安全的魅力

重要信息 時間:2025年2月21日-23日 地點:中國杭州 官網:http://www.ic-gaiis.org 簡介 2025年第二屆生成式人工智能與信息安全將于 2025年2月21日-23日在中國杭州舉行。主要圍繞“生成式人工智能與信息安全”的最新研究展開,…

Vscode的AI插件 —— Cline

簡介 vscode的一款AI輔助吃插件,主要用來輔助創建和編輯文件,探索大型項目,使用瀏覽器并執行終端命令(需要多個tokens),可以使用模型上下文協議(MCP)來創建新工具并擴展自己(比較慢…

2024 CVPR Highlight Learning-Feedback

圖像增強 Towards Robust Event-guided Low-Light Image Enhancement: A Large-Scale Real-World Event-Image Dataset and Novel Approach 解決的主要問題是低光照條件下的圖像增強 通過多尺度整體融合分支提取事件和圖像的結構和紋理信息,并引入信噪比&#xff0…

小白一命速通JS中的windowglobal對象

筆者注意到JS中的window對象與global對象經常被混淆,盡管它們在相當一部分使用情況下可以等同,但是本質上仍然存在很多不同,下面是對于兩者的詳細拆解 1. window 對象 定義:window 對象表示 瀏覽器環境中的全局上下文。作用域&am…

機器學習2 (筆記)(樸素貝葉斯,集成學習,KNN和matlab運用)

樸素貝葉斯模型 貝葉斯定理: 常見類型 算法流程 優缺點 集成學習算法 基本原理 常見方法 KNN(聚類模型) 算法性質: 核心原理: 算法流程 優缺點 matlab中的運用 樸素貝葉斯模型 樸素貝葉斯模型是基于貝葉斯…

HTB:Active[RE-WriteUP]

目錄 連接至HTB服務器并啟動靶機 信息收集 使用rustscan對靶機TCP端口進行開放掃描 將靶機TCP開放端口號提取并保存 使用nmap對靶機TCP開放端口進行腳本、服務掃描 使用nmap對靶機TCP開放端口進行漏洞、系統掃描 使用nmap對靶機常用UDP端口進行開放掃描 使用nmap對靶機…

Git圖形化工具【lazygit】

簡要介紹一下偶然發現的Git圖形化工具——「lazygit」 概述 Lazygit 是一個用 Go 語言編寫的 Git 命令行界面(TUI)工具,它讓 Git 操作變得更加直觀和高效。 Github地址:https://github.com/jesseduffield/lazygit 主要特點 主要…

58.界面參數傳遞給Command C#例子 WPF例子

界面參數的傳遞,界面參數是如何從前臺傳送到后臺的。 param 參數是從界面傳遞到命令的。這個過程通常涉及以下幾個步驟: 數據綁定:界面元素(如按鈕)的 Command 屬性綁定到視圖模型中的 RelayCommand 實例。同時&#x…

selenium定位網頁元素

1、概述 在使用 Selenium 進行自動化測試時,定位網頁元素是核心功能之一。Selenium 提供了多種定位方法,每種方法都有其適用場景和特點。以下是通過 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…

51單片機(STC89C52)開發:點亮一個小燈

軟件安裝: 安裝開發板CH340驅動。 安裝KEILC51開發軟件:C51V901.exe。 下載軟件:PZ-ISP.exe 創建項目: 新建main.c 將main.c加入至項目中: main.c:點亮一個小燈 #include "reg52.h"sbit LED1P2^0; //P2的…

29. C語言 可變參數詳解

本章目錄: 前言可變參數的基本概念可變參數的工作原理如何使用可變參數 示例:計算多個整數的平均值解析: 更復雜的可變參數示例:打印可變數量的字符串解析: 總結 前言 在C語言中,函數參數的數量通常是固定的&#xff…

RoboMaster- RDK X5能量機關實現案例(一)識別

作者:SkyXZ CSDN:https://blog.csdn.net/xiongqi123123 博客園:https://www.cnblogs.com/SkyXZ 在RoboMaster的25賽季,我主要負責了能量機關的視覺方案開發,目前整體算法已經搭建完成,實際方案上我使用的上…

shell腳本批量修改文件名之方法(The Method of Batch Modifying File Names in Shell Scripts)

shell腳本批量修改文件名方法 我們可以使用Shell腳本來實現這個功能。Shell腳本是一種用于自動化任務的編程語言,它可以在Unix/Linux操作系統上運行。在這個腳本中,我們將使用一個for循環來遍歷目標目錄下的所有文件,并使用mv命令將每個文件…