ffmpeg-將多個視頻切片成一個新的視頻

使用 ffmpeg 工具可以輕松完成將多個視頻切片合并為一個新的視頻。以下是實現這一目標的具體步驟和命令。

步驟概覽
1、將多個視頻切片。
2、創建文本文件列出切片的視頻片段。
3、使用 ffmpeg 合并這些切片為一個新的視頻。

一:安裝 ffmpeg
確保你的系統中已經安裝 ffmpeg。如果未安裝,可以通過以下方式安裝:

Windows
下載 ffmpeg官網(https://ffmpeg.org/download.html) 提供的二進制文件。
將 ffmpeg.exe 添加到系統環境變量。
Linux
使用包管理器安裝:

 sudo apt updatesudo apt install ffmpeg

Mac
使用 Homebrew 安裝:

brew install ffmpeg

安裝完成后,運行以下命令檢查版本:

 ffmpeg -version

二:將多個視頻切片
假設需要將不同視頻文件切片為多個片段,可以針對每個視頻執行以下截取命令:
命令示例:截取視頻

ffmpeg -i input1.mp4 -ss 00:00:10 -t 00:00:05 -c copy slice1.mp4
ffmpeg -i input2.mp4 -ss 00:00:20 -t 00:00:10 -c copy slice2.mp4
ffmpeg -i input3.mp4 -ss 00:01:00 -t 00:00:08 -c copy slice3.mp4

解釋:
-i inputX.mp4:指定源視頻文件。
-ss 00:00:10:從視頻的第 10 秒開始截取。
-t 00:00:05:截取時長為 5 秒。
-c copy:使用無損方法進行切割(避免重新編碼)。
這段命令會從不同的視頻源中分別獲取特定片段并保存為 slice1.mp4、slice2.mp4 等切片文件。

三. 創建列舉視頻片段的列表文件
ffmpeg 需要一個文本文件來列舉參與合并的所有視頻切片。可以按如下格式創建一個文件,例如命名為 file_list.txt:

file 'slice1.mp4'
file 'slice2.mp4'
file 'slice3.mp4'

注意:
每一行使用 file 開頭,后面是文件名并用單引號包裹。
文件路徑支持絕對路徑。如果使用相對路徑,則 file_list.txt 需要與切片文件位于相同目錄。

四、 使用 ffmpeg 合并切片視頻
無重新編碼合并
如果所有視頻切片的編碼格式一樣(如同樣為 H.264 編碼)且分辨率一致,可直接合并:

ffmpeg -f concat -safe 0 -i file_list.txt -c copy output.mp4

解釋:
-f concat:指定要進行“文件拼接”的操作。
-safe 0:允許對路徑中帶特殊字符的文件處理。
-i file_list.txt:輸入文件列表。
-c copy:直接拼接而不重新編碼(速度更快、無損)。
重新編碼合并
若視頻切片格式或分辨率不一致,可以選擇重新編碼合并:

ffmpeg -f concat -safe 0 -i file_list.txt -c:v libx264 -preset fast -crf 23 -c:a aac output.mp4

解釋:
-c:v libx264:指定視頻編碼器為 H.264(使用較高兼容性)。
-crf 23:視頻質量參數(可選,范圍 0-51,數值越小質量越高)。
-c:a aac:設置音頻編碼為 AAC。
-preset fast:規定編碼的速度等級(如 ultrafast, slow 等)。

五. 合并完成后測試輸出視頻
合并完成后,可以播放并檢查生成的視頻:

ffplay output.mp4

或使用系統自帶的視頻播放器打開 output.mp4。

六、高級功能:自動批量處理
如果需要從大量視頻中截取多個片段并合并,可以使用腳本自動化這一流程。以下是一個簡單的 Bash 腳本示例:

#!/bin/bash# 要處理的視頻列表
videos=("input1.mp4" "input2.mp4" "input3.mp4")# 截取片段
for i in ${!videos[@]}; doffmpeg -i "${videos[$i]}" -ss 00:00:05 -t 00:00:10 -c copy "slice$((i+1)).mp4"
done# 創建拼接列表文件
echo > file_list.txt
for i in $(seq 1 ${#videos[@]}); doecho "file 'slice$i.mp4'" >> file_list.txt
done# 合并視頻片段
ffmpeg -f concat -safe 0 -i file_list.txt -c copy output.mp4echo "合并完成,生成視頻:output.mp4"

問題與注意事項
拼接失敗報錯:concat format is not supported
視頻編碼格式或分辨率不一致會導致此問題。
使用重新編碼方式解決(見“重新編碼合并”)。
切片視頻不同步
使用 -c copy 時,只能合并具有相同時間戳格式的視頻。
添加標志 -reset_timestamps 1 處理時間戳問題。
音頻處理問題
如果音頻部分需要統一,則建議重新編碼并使用統一的音頻采樣率和音頻編碼器。

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

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

相關文章

【第2月_day10】Pandas數據查看與選擇

以下是專為小白設計的 Pandas數據查看與選擇 學習內容,從基礎到應用逐步講解,附帶清晰示例和注意事項: 一、數據查看:快速了解你的數據 1. head() 和 tail() 作用:查看數據的前幾行或后幾行,默認顯示5行。…

Jetpack LiveData 使用與原理解析

一、引言 在 Android 開發中,數據的變化需要及時反映到界面上是一個常見的需求。然而,傳統的方式可能會導致代碼復雜、難以維護,并且容易出現內存泄漏等問題。Jetpack 組件中的 LiveData 為我們提供了一種優雅的解決方案,它是一種…

Unity2D 五子棋 + Photon聯網雙人對戰

開發環境配置 Unity版本2022.3 創建Photon賬號以及申請Photon中國區服務 官網申請賬號:Multiplayer Game Development Made Easy Photon Engine 中國區服務: 光子引擎photonengine中文站 成都動聯無限科技有限公司(vibrantlink.com) 導入PUN2插件以及…

(UI自動化測試web端)第二篇:元素定位的方法_css定位之屬性選擇器

看代碼里的【find_element_by_css_selector( )】( )里的表達式怎么寫? 文章介紹了第四種寫法屬性選擇器 ,你要根據網頁中的實際情況來判斷自己到底要用哪一種方法來進行元素定位。每種方法都要多練習,全都熟了之后你在工作當中使用起來元素定…

預編譯能否 100%防 sql 注入?

🌟 什么是 SQL 注入? SQL 注入(SQL Injection)是指攻擊者利用特殊輸入,讓數據庫執行它本來不應該執行的代碼,從而獲取或篡改數據。 就像在考試的時候偷偷改題目,讓老師改成你想要的內容&#…

第十五章 | Layer2、Rollup 與 ZK 技術實戰解析

📚 第十五章 | Layer2、Rollup 與 ZK 技術實戰解析 ——構建下一代高性能區塊鏈應用,從 Solidity 到 zkSync! ? 本章導讀 Layer2 和零知識證明(ZK)正成為區塊鏈發展的核心方向。 隨著主網 Gas 居高不下、TPS 無法滿…

2025-03-26 學習記錄--C/C++-PTA 6-3 求鏈式表的表長

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、題目描述 ?? 6-3 求鏈式表的表長 本題要求實現一個函數,求鏈式表的表長。 函數接口定義: &…

【Linux】Linux_Ubuntu與Windows之間的文件傳輸

一、Linux終端命令的復制粘貼 1.打開linux 終端,輸入以下命令:(注意,需要聯網) 2.命令行下載: sudo apt-get autoremove open-vm-tools 3.命令行安裝: sudo apt-get install open-vm-tools-…

Python Sanic面試題及參考答案

目錄 Sanic 的事件循環機制與 uvloop 的關系 Sanic 的 Request/Response 對象生命周期如何管理?如何訪問請求上下文? 對比 Sanic 與 Flask/Django 的異步處理模型差異 Sanic 的 Blueprint 機制如何實現模塊化路由?如何處理跨藍圖中間件? 如何在 Sanic 中實現 WebSocket…

算法每日一練 (18)

💢歡迎來到張翊塵的技術站 💥技術如江河,匯聚眾志成。代碼似星辰,照亮行征程。開源精神長,傳承永不忘。攜手共前行,未來更輝煌💥 文章目錄 算法每日一練 (18)刪除并獲得點數題目描述解題思路解題…

VsCode啟用右括號自動跳過(自動重寫) - 自錄制gif演示

VsCode啟用右括號自動跳過(自動重寫) - 自錄制gif演示 前言 不知道大家在編程時候的按鍵習慣是怎樣的。輸入完左括號后編輯器一般會自動補全右括號&#xff0c;輸入完左括號的內容后&#xff0c;是按→跳過右括號還是按)跳過右括號呢&#xff1f; for (int i 0; i < a.s…

用Python和Stable Diffusion生成AI動畫:從圖像到視頻的全流程指南

引言 本文將演示如何通過Python代碼實現基于文本提示的AI動畫生成。我們將使用Stable Diffusion生成連貫圖像幀,結合OpenCV合成視頻,最終實現一個可自定義的動畫生成 pipeline。 一、環境準備 1. 依賴安裝 # 安裝核心庫 pip install diffusers transformers torch numpy …

【Git 常用指令速查表】

Git 常用指令速查表 Git 常用指令速查表目錄1. 初始化倉庫2. 提交代碼流程3. 分支管理4. 遠程倉庫操作5. 撤銷操作6. 查看狀態與日志7. 其他實用指令完整操作示例常用場景速查表 Git 常用指令速查表 目錄 初始化倉庫提交代碼流程分支管理遠程倉庫操作撤銷操作查看狀態與日志其…

分布式爬蟲框架Scrapy-Redis實戰指南

引言 在當今數字化的時代背景下&#xff0c;互聯網技術的蓬勃興起極大地改變了旅游酒店業的運營模式與市場格局。作為旅游產業鏈中的關鍵一環&#xff0c;酒店業的興衰與互聯網技術的應用程度緊密相連。分布式爬蟲技術&#xff0c;尤其是基于 Scrapy 框架的 Scrapy-Redis 擴展…

爬蟲:scrapy面試題大全(60個scrapy經典面試題和詳解)

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 1. 什么是Scrapy?2. Scrapy 框架的組件及其作用?3. Scrapy的工作流程是什么?(運行機制)4. 如何創建一個Scrapy項目?5. 如何定義一個Spider?6. 如何在Scrapy中提取數據?7. Scrapy中的Item是什么?8. Scrapy中的P…

Leetcode12-整數轉羅馬數字

題目鏈接&#xff1a;12. 整數轉羅馬數字 - 力扣&#xff08;LeetCode&#xff09; 看題目限制輸入1 < num < 3999&#xff0c;就直接用暴力法寫了&#xff0c;還比較簡單 代碼&#xff1a; char* intToRoman(int num) {char *res (char*)malloc(100);int index 0;i…

WebMvcConfigurer 的 addResourceLocations

在 Spring Boot 的 addResourceLocations 方法中&#xff0c;file: 是一個 URL 前綴&#xff0c;用于指示資源的位置是本地文件系統路徑。以下是詳細解釋&#xff1a; 一、file: 的作用 file: 是 Java 中用于表示本地文件系統的 URL 前綴。它告訴 Spring Boot&#xff0c;資源…

Spring Boot響應壓縮配置與優化

一、核心工作機制 1.1 自動協商觸發條件 Spring Boot的響應壓縮功能基于智能協商機制&#xff0c;需同時滿足以下條件方可觸發&#xff1a; 客戶端支持&#xff1a;請求頭包含Accept-Encoding: gzip/deflate數據量閾值&#xff1a;響應體大小超過預設值&#xff08;默認2KB&…

JavaScript 改變 HTML 樣式

JavaScript 改變 HTML 樣式 JavaScript 改變 HTML 樣式的核心是通過操作 DOM 元素的 CSS 屬性或 類名 實現動態視覺效果。以下是具體方法與場景解析: 一、直接修改元素的 style 屬性 通過 DOM 元素的 style 屬性直接設置內聯樣式,優先級最高: // 修改單個樣式 document.…

【vue】vue + vant實現上傳圖片添加水印

目錄 方法1&#xff1a;使用HTML2canvas 說明&#xff1a; 優點 缺點 依賴安裝 方法2&#xff1a;使用canvas結合vant中組件 增加水印方法 在vue組件中使用 要點 方法1&#xff1a;使用HTML2canvas 使用html2canvas來處理水印的生成&#xff0c;需要就給水印元素轉換為…