FFMPEG相關解密,打水印,合并,推流,

1:ffmepg進行打水印解密

前提ffmepg安裝利用靜態版就可以這個什么都有,不用再配置其他信息:(這個利用ffmpeg終端命令是沒問題的,但是如果要是再C++中調用ffmpeg庫那么還需要從新編譯安裝下)

各個版本

Index of /ffmpeg/old-releases

1.1 獲取水印的列表

def get_json2txt(jsonpath):with open(jsonpath,'r',encoding='utf8')as fp:            datajson = json.load(fp)list_json = datajson["heart_beats"]watermark_texts =["none"]*20for i in range(len(list_json)):# text =[]train_id    =  "車號  "+list_json[i]['train_id']task_number =  "車次  "+list_json[i]['task_number']speed       =  "速度  "+str(list_json[i]['speed'])K_NUM = int(list_json[i]['mileage'])//1000LEF_NUM = int(list_json[i]['mileage'])%1000mileage     = "位置  "+f'K{K_NUM}+{LEF_NUM}'timetimestamp = int(list_json[i]['capturedAt'])dtime=dt.datetime.fromtimestamp(timetimestamp,tz=dt.timezone(dt.timedelta(hours=8)))formatted_time= "時間  "+ dtime.strftime("%Y-%m-%d %H-%M-%S")text= train_id +'\n' + task_number +'\n' + str(speed) +'\n' + mileage +'\n' +  formatted_timewatermark_texts[i]=text# print(text)return watermark_texts

1.2 將水印列表打印到視頻上

def create_dynamic_watermark_stable(input_video, output_video, text_list,key):"""更穩定的動態水印實現方案使用時間表達式來模擬列表索引變化"""# 構建包含多個drawtext濾鏡的命令filters = []for i, text in enumerate(text_list):# 每個文本顯示1秒start_time = iend_time = i + 1filters.append(f"drawtext=text='{text}':fontcolor=white:fontsize=40:box=1:boxcolor=black@0.5:boxborderw=5:x=10:y=10:enable='between(t\\,{start_time}\\,{end_time})'")filter_str = ",".join(filters)cmd = ['/home/administrator/workspace/SJPTFF/ffmpeg-4.4.1-amd64-static/ffmpeg','-decryption_key',key,#這個是解密用'-i', input_video,'-vf', filter_str,'-c:a', 'copy',# '-c:v', 'copy','-y',output_video,]try:result = subprocess.run(cmd, capture_output=True, text=True)if result.returncode == 0:logger_ffmpeg.info(f"成功生成帶動態水印的視頻: {output_video}")else:logger_ffmpeg.error(f"處理視頻時出錯: {result.stderr}")except Exception as e:logger_ffmpeg.error(f"發生錯誤: {e}")

2 ffmpeg進行合并

 def concat_videos_subprocess(self,concatvideo,videoslist,flag=0):'''絕對路徑,list內也包含絕對路徑'''concat_videospath = os.path.dirname(concatvideo)concat_videos_path = os.path.join(os.path.dirname(concat_videospath),'videos_de')concat_list_txt = os.path.join(concat_videospath,'concat_list.txt')with open(concat_list_txt,"w") as f:# if flag:#     f.write(f"file '{concatvideo}' \n")for videos_path_index in range(len(videoslist)):videos_abspath = os.path.join(concat_videos_path,videoslist[videos_path_index][1])f.write(f"file '{videos_abspath}' \n")self.update_mile_time(videoslist,os.path.dirname(concat_videospath))output_path = concatvideo.rstrip('.mp4')+'temp.mp4'cmd = ['ffmpeg','-f','concat','-y','-safe','0','-i',concat_list_txt,'-c','copy',output_path]subprocess.run(cmd,check=True)os.system(f'cp {output_path}  {concatvideo}')

3 ffmpeg 進行推流

3.1 部署srs服務

SRS (Simple Realtime Server) 是一個用 C++ 編寫的開源流媒體服務器,支持 RTMP、WebRTC、HLS、HTTP-FLV、SRT、GB28181 等多種協議。它設計簡潔、性能高、易于部署,適合構建低延遲、高并發的實時音視頻系統。

GitHub 項目地址:https://github.com/ossrs/srs

3.2 ffmpeg推流

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

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

相關文章

MySql知識梳理之DML語句

注意: 插入數據時,指定的字段順序需要與值的順序是一一對應的。 字符串和日期型數據應該包含在引號中。 插入的數據大小,應該在字段的規定范圍內注意:修改語句的條件可以有,也可以沒有,如果沒有條件,則會修改整張表的所…

GaussDB GaussDB 數據庫架構師修煉(十八)SQL引擎-SQL執行流程

1 SQL執行流程查詢解析:詞法分析、語法分析、 語義分析 查詢重寫:視圖和規則展開、基于規則的查詢優化 計劃生成:路徑搜索和枚舉、選出最優執行計劃 查詢執行:基于優化器生成的物理執行計劃對數據進行獲取和計算2 解析器和優化器S…

grpc 1.45.2 在ubuntu中的編譯

要在 Ubuntu 上編譯 gRPC 1.45.2,需要按照以下步驟操作。以下指南基于 gRPC 官方文檔和相關資源,確保環境配置正確并成功編譯。請確保你有管理員權限(sudo)以安裝依賴項和執行相關命令。 1. 準備環境 確保你的 Ubuntu 系統已安裝…

lesson45:Linux基礎入門指南:從內核到實踐操作全解析

目錄 一、Linux簡介與核心概念 1.1 Linux的起源與發展 1.2 內核與發行版的關系 二、Linux內核版本解析 2.1 內核版本命名規則 2.2 2025年主流內核版本 三、主流Linux發行版對比 3.1 桌面用戶首選 Ubuntu 24.04 LTS Linux Mint 22 3.2 技術愛好者之選 Fedora 41 Ar…

PCL點云庫入門(第24講)——PCL庫點云特征之NARF特征描述 Normal Aligned Radial Feature(NARF)

一、算法原理 1、NARF 特征概述 NARF(Normal Aligned Radial Feature)是 2011 年由 Bastian Steder 等人在論文 《Point Feature Extraction on 3D Range Scans Taking into Account Object Boundaries》中提出的一種 稀疏局部 3D 特征描述子。 核心目標是提取具有“邊界意…

使用 eventpp 構建跨 RT-Thread 與 ARM-Linux 的輕量級 Active Object(AO)事件驅動框架

0. 引言 本文展示一個實踐路徑:以輕量級 C 事件庫 eventpp 為核心,設計并實現一個面向嵌入式的、可移植的 Active Object(AO)事件驅動架構。該架構滿足以下目標: 跨平臺兼容:單套代碼在 RT-Thread&#xff…

【python實用小腳本-193】Python全能PDF小助手:剪切/合并/旋轉/加密一條龍——再也不用開會員

Python全能PDF小助手:剪切/合并/旋轉/加密一條龍——再也不用開會員 PDF編輯, 本地處理, 零會員費, 多功能腳本, 瑞士軍刀 故事開場:一把瑞士軍刀救了周五下班的你 周五 17:55,老板甩來一堆 PDF: “把第 3、7 頁刪掉”“再和合同合…

Ubuntu根分區擴容

目錄 1.先查看/dev/sda 整塊磁盤設備的分區占用情況: 2.在VMware中編輯虛擬機: 3.進入虛擬機,進入disk應用程序: 4.擴容文件系統 5.最后通過df-h lsblk或通過可視化GParted進行驗證。 1.先查看/dev/sda 整塊磁盤設備的分區占…

智慧城市SaaS平臺/市政設施運行監測系統之空氣質量監測系統、VOC氣體監測系統、污水水質監測系統及環衛車輛定位調度系統架構內容

1. 空氣質量監測系統1) 監測點管理 a) 監測點基本信息 支持記錄空氣質量監測點的名稱、位置、類型、設備配置等信息。 b) 監測點分布地圖 支持通過GIS地圖展示監測點的分布情況,支持地圖查詢和導航。 2) 空氣質量監測 a) 實時數據采集 支持實時采集空氣質量數據&…

PiscCode迅速集成YOLO-Pose 實現姿態關鍵點軌跡跟蹤應用

在計算機視覺領域,人體姿態檢測與軌跡跟蹤是很多應用場景的核心技術,例如運動分析、行為識別、智能監控等。本文將介紹如何在 PiscCode 平臺上,利用 YOLO-Pose 模型進行姿態估計,并實現多人關鍵點軌跡跟蹤。 一、什么是 PiscCode …

HTTP的狀態碼有哪些,并用例子說明一下

問題HTTP的狀態碼有哪些,并用例子說明一下我的回答HTTP狀態碼是服務器對客戶端請求的響應碼,它們按照不同的功能被分為五大類。我來介紹一下主要的狀態碼及其實際應用場景:1xx(信息性狀態碼):表示請求已接收…

【51單片機】【protues仿真】基于51單片機寵物投食器系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 1、LCD1602液晶顯示當前時間 2、按鍵設置時間,5個定時投喂時間? 3、可以通過手動按鍵進行投喂食物 4、步進電機模擬投喂食物 二、使用步驟 基于51單片機的寵物自動投…

掌握設計模式--命令模式

命令模式(Command Pattern) 命令模式(Command Pattern)是一種行為型設計模式,它將請求(命令)封裝成對象,從而使您能夠參數化客戶端(調用者)使用不同的請求、…

STM32之beep、多文件、延遲、按鍵以及呼吸燈

一、Beep控制 原理圖分析: 蜂鳴器三極管控制引腳對應 MCU PB8。當前蜂鳴器對應的電路中,三極管是 NPN 三極管,當前【基極】存在小電流,當前三極管導通。要求對應 PB8 引腳對外輸出電壓 / 電流。當前 PB8 輸出高電平,當…

C++的struct里面可以放函數,討論一下C++和C關于struct的使用區別

我們來看一個C代碼下面的struct結構體: struct UserValue {float lx;float ly;float rx;float ry;float L2;// 【構造函數】UserValue() {setZero();}// 【成員函數】void setZero() {lx 0;ly 0;rx 0;ry 0;L2 0;} };在這篇文章中,我們將來詳細解釋一下為什么 U…

【Kubernetes知識點】資源配額與訪問控制

目錄 1.解釋ResourceQuota的作用。 2.解釋Service Account的用途。 3.詳細解釋Role和ClusterRole。 4.什么是K8s的NetworkPolicy? 5.詳細描述在K8s中如何控制跨Namespace的Pod訪問? 1.解釋ResourceQuota的作用。 ResourceQuota(資源配額…

在SAP Query中添加雙擊事件

在SAP系統中,SAP Query是一個強大的工具,允許用戶自定義報告以滿足特定的數據查詢需求。它提供了靈活的報表設計功能,使非編程背景的用戶也能創建和修改查詢。在某些情況下,我們可能希望在查詢結果上添加交互性,比如通…

c++:MFC中sqlite3的使用(附實際案例)

MFC中sqlite3的使用sqlite3介紹sqlite3安裝常用API函數操作流程接口函數執行sql語句函數回調函數MFC中案例實踐控制臺實踐sqlite3介紹 SQLite 是一個軟件庫,實現了自給自足的、無服務器的、零配置的、事務性的 SQL 數據庫引擎。SQLite 是在世界上最廣泛部署的 SQL …

LeetCode第1019題 - 鏈表中的下一個更大節點

題目 解答 class Solution {Stack<Integer> stack new Stack<>();List<Integer> values new LinkedList<>();public int[] nextLargerNodes(ListNode head) {nextLargerNodes2(head);return values.stream().mapToInt(x -> x).toArray();}publi…

STM32 硬件I2C讀寫MPU6050

本文代碼基于 STM32 單片機&#xff0c;通過 I2C 總線驅動 MPU6050 六軸傳感器&#xff08;集成加速度計與陀螺儀&#xff09;&#xff0c;實現傳感器初始化、ID 讀取、原始數據采集&#xff0c;并借助 OLED 顯示屏實時展示加速度&#xff08;AccX、AccY、AccZ&#xff09;與角…