ffmpeg切割音頻

ffmpeg切割音頻

我希望對指定音頻切割,按照開始時間,結束時間,切割成新文件,自動保存,非常好用

step1:

from pydub import AudioSegment
import os# 配置FFmpeg路徑(確保路徑正確)
ffmpeg_path = r"C:\ffmpeg\bin\ffmpeg.exe"
if os.path.exists(ffmpeg_path):AudioSegment.converter = ffmpeg_path
else:print("警告:未找到FFmpeg,將嘗試使用系統路徑中的FFmpeg")def trim_audio_file(input_path, output_path, start_time=0, end_time=20):"""剪切單個音頻文件的指定時間段參數:input_path: 輸入文件路徑output_path: 輸出文件路徑start_time: 開始時間(秒),默認為0end_time: 結束時間(秒),默認為20"""try:# 驗證輸入文件存在if not os.path.exists(input_path):raise FileNotFoundError(f"輸入文件不存在: {input_path}")# 獲取文件擴展名ext = os.path.splitext(input_path)[1].lower()supported_extensions = ['.mp3', '.wav', '.flac', '.ogg', '.m4a']if ext not in supported_extensions:raise ValueError(f"不支持的音頻格式: {ext}")print(f"正在處理: {os.path.basename(input_path)}")# 加載音頻文件audio = AudioSegment.from_file(input_path)original_duration = audio.duration_secondsprint(f"原始文件時長: {original_duration:.2f}秒")# 轉換為毫秒start_ms = start_time * 1000end_ms = end_time * 1000# 驗證時間范圍if start_ms < 0:start_ms = 0print(f"警告: 開始時間調整為0秒")if end_ms > len(audio):end_ms = len(audio)print(f"警告: 結束時間調整為文件末尾 ({end_ms / 1000:.2f}秒)")if start_ms >= end_ms:raise ValueError(f"無效的時間范圍: {start_time}s-{end_time}s")# 剪切音頻trimmed_audio = audio[start_ms:end_ms]# 確保輸出目錄存在os.makedirs(os.path.dirname(output_path), exist_ok=True)# 導出文件trimmed_audio.export(output_path, format=ext[1:])print(f"成功剪切: {start_time}s - {end_time}s")print(f"輸出文件時長: {trimmed_audio.duration_seconds:.2f}秒")print(f"已保存至: {output_path}")return Trueexcept Exception as e:print(f"處理出錯: {str(e)}")return Falseif __name__ == "__main__":# 固定文件路徑input_path = r"D:\Users\wangrusheng\Downloads\r.mp3"  # TXT文件路徑output_path = r"D:\Users\wangrusheng\Downloads\rad.mp3"  # TXT文件路徑# 固定時間范圍 (0-20秒)start_time = 0end_time = 60print("音頻文件剪切工具")print("=" * 40)print(f"輸入文件: {input_path}")print(f"輸出文件: {output_path}")print(f"剪切范圍: {start_time}秒 - {end_time}秒")# 處理文件print("\n開始處理...")success = trim_audio_file(input_path, output_path, start_time, end_time)if success:print("\n處理完成!")else:print("\n處理失敗,請檢查錯誤信息")

修改版本

from pydub import AudioSegment
import os
import subprocess# 配置FFmpeg路徑(確保路徑正確)
ffmpeg_dir = r"C:\Program Files\ffmpeg-8.0-essentials_build\bin"
ffmpeg_path = os.path.join(ffmpeg_dir, "ffmpeg.exe")
ffprobe_path = os.path.join(ffmpeg_dir, "ffprobe.exe")# 檢查并設置路徑
if os.path.exists(ffmpeg_path) and os.path.exists(ffprobe_path):AudioSegment.converter = ffmpeg_pathAudioSegment.ffprobe = ffprobe_path# 添加環境變量確保子進程能找到FFmpegos.environ["PATH"] = ffmpeg_dir + os.pathsep + os.environ["PATH"]
else:print("警告:未找到FFmpeg或FFprobe,將嘗試使用系統路徑中的FFmpeg")# 驗證系統PATH中是否有FFmpegtry:subprocess.run(["ffmpeg", "-version"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)except Exception:print("錯誤:系統PATH中未找到FFmpeg,請檢查安裝")exit(1)def trim_audio_file(input_path, output_path, start_time=0, end_time=20):"""剪切單個音頻文件的指定時間段"""try:# 驗證輸入文件存在if not os.path.exists(input_path):raise FileNotFoundError(f"輸入文件不存在: {input_path}")# 獲取文件擴展名ext = os.path.splitext(input_path)[1].lower()supported_extensions = ['.mp3', '.wav', '.flac', '.ogg', '.m4a']if ext not in supported_extensions:raise ValueError(f"不支持的音頻格式: {ext}")print(f"正在處理: {os.path.basename(input_path)}")# 加載音頻文件audio = AudioSegment.from_file(input_path)original_duration = audio.duration_secondsprint(f"原始文件時長: {original_duration:.2f}秒")# 轉換為毫秒start_ms = start_time * 1000end_ms = end_time * 1000# 驗證時間范圍if start_ms < 0:start_ms = 0print(f"警告: 開始時間調整為0秒")if end_ms > len(audio):end_ms = len(audio)print(f"警告: 結束時間調整為文件末尾 ({end_ms / 1000:.2f}秒)")if start_ms >= end_ms:raise ValueError(f"無效的時間范圍: {start_time}s-{end_time}s")# 剪切音頻trimmed_audio = audio[start_ms:end_ms]# 確保輸出目錄存在os.makedirs(os.path.dirname(output_path), exist_ok=True)# 導出文件trimmed_audio.export(output_path, format=ext[1:])print(f"成功剪切: {start_time}s - {end_time}s")print(f"輸出文件時長: {trimmed_audio.duration_seconds:.2f}秒")print(f"已保存至: {output_path}")return Trueexcept Exception as e:print(f"處理出錯: {str(e)}")return Falseif __name__ == "__main__":# 固定文件路徑input_path = r"D:\Users\wangrusheng\Downloads\r.mp3"output_path = r"D:\Users\wangrusheng\Downloads\rad.mp3"# 固定時間范圍 (0-10秒)start_time = 0end_time = 10print("音頻文件剪切工具")print("=" * 40)print(f"輸入文件: {input_path}")print(f"輸出文件: {output_path}")print(f"剪切范圍: {start_time}秒 - {end_time}秒")# 處理文件print("\n開始處理...")success = trim_audio_file(input_path, output_path, start_time, end_time)if success:print("\n處理完成!")else:print("\n處理失敗,請檢查錯誤信息")

end

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

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

相關文章

Python 批量處理:Markdown 與 HTML 格式相互轉換

文章目錄引言與同類工具的優勢對比Python 將 Markdown 轉換為 HTMLPython 將 HTML 轉換為 Markdown批量轉換與自動化處理引言 在多平臺內容分發與管理的場景中&#xff0c;文檔格式轉換已成為內容生態系統中的關鍵環節。Markdown 作為輕量級標記語言&#xff0c;以其語法簡潔、…

御控物聯網遠程控制水泵啟停智能自控解決方案

在農業灌溉、城市排水、工業供水等場景中&#xff0c;水泵作為核心設備&#xff0c;長期面臨以下難題&#xff1a;人工依賴度高&#xff1a;需24小時值守&#xff0c;暴雨或干旱時響應滯后&#xff1b; 能耗浪費嚴重&#xff1a;空轉、過載運行導致電費居高不下&#xff1b; …

RedisI/O多路復用:單線程網絡模型epoll工作流程

epoll1. 在內核創建eventpoll結構體&#xff0c;返回句柄epfd&#xff08;唯一標識&#xff09;eventpoll包含存放被監聽的fd的紅黑樹&#xff0c;和存放已就緒的fd的鏈表2. 將要監聽的fd加入到epoll紅黑樹中&#xff0c;并設置callback回調函數callback觸發時&#xff0c;就將…

SmartBear API Hub助力MCP開發,無縫、安全的連接AI與外部工具

人工智能&#xff08;AI&#xff09;技術的應用場景日益廣泛&#xff0c;如何讓不同的AI系統之間實現高效、無縫的交互&#xff0c;成為了業界的重要課題。隨著人工智能技術的不斷進步&#xff0c;模型上下文協議&#xff08;MCP&#xff09;應運而生。MCP為不同AI系統之間提供…

如何選擇高性價比的iOS簽名服務?關鍵因素與價格區間

作為一名摸爬滾打多年的開發者&#xff0c;我來和你聊聊怎么挑一個靠譜又不坑的iOS簽名服務。這玩意兒選不好&#xff0c;輕則測試團隊干瞪眼&#xff0c;重則App下架&#xff0c;用戶投訴&#xff0c;簡直是我們開發者的噩夢。別光看價格&#xff01;先想清楚你的核心需求在選…

MoonBit 正式加入 WebAssembly Component Model 官方文檔 !

我們非常高興地宣布&#xff0c;MoonBit 已正式收錄在 WebAssembly Component Model 的官方文檔中。這不僅是對 MoonBit 技術路線的一次肯定&#xff0c;也讓我們有機會和 Rust、Go、C# 等語言一起&#xff0c;出現在開發者查閱組件模型的入口頁面中。一、 關于 WebAssembly Co…

Python快速入門專業版(三十二):匿名函數:lambda表達式的簡潔用法(結合filter/map)

目錄引一、lambda表達式的基本語法&#xff1a;一行代碼定義函數示例1&#xff1a;lambda表達式與普通函數的對比二、lambda表達式的應用場景&#xff1a;臨時與靈活1. 臨時使用&#xff1a;無需定義函數名的簡單功能2. 作為參數傳遞給高階函數三、結合filter()&#xff1a;篩選…

【LeetCode 每日一題】3025. 人員站位的方案數 I——(解法一)暴力枚舉

Problem: 3025. 人員站位的方案數 I 文章目錄整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(N^3)空間復雜度&#xff1a;O(1)整體思路 這段代碼旨在解決一個幾何計數問題&#xff1a;給定平面上的 n 個點&#xff0c;計算滿足特定條件的“點對” (i, j) 的數量。 根據代…

Roo Code 診斷集成功能:智能識別與修復代碼問題

這里是引用在日常編程中&#xff0c;遇到代碼錯誤或警告是再常見不過的事。但如何高效定位并解決這些問題&#xff0c;往往考驗開發者的經驗和工具鏈的支持。 Roo Code 中有一項非常實用的功能——診斷集成&#xff08;Diagnostics Integration&#xff09;。它能夠與 VSCode 的…

Redis 與微服務架構結合:高并發場景下的架構藝術

&#x1f50c; Redis 與微服務架構結合&#xff1a;高并發場景下的架構藝術 文章目錄&#x1f50c; Redis 與微服務架構結合&#xff1a;高并發場景下的架構藝術&#x1f9e9; 一、微服務架構下的挑戰?? 典型痛點分析&#x1f4ca; 性能瓶頸對比?? 二、Redis作為配置中心&a…

鴻蒙應用冷啟動優化:本地 KV 緩存預熱實戰指南

在鴻蒙&#xff08;HarmonyOS&#xff09;應用開發中&#xff0c;冷啟動速度直接影響用戶的初始體驗。許多應用在啟動后需要加載大量常用配置&#xff08;如用戶偏好設置、主題配置&#xff09;或基礎數據&#xff08;如上次登錄信息、常用功能參數&#xff09;&#xff0c;若每…

Java, Rust, C ++開發智能農業APP

# 智能化農業APP開發方案 - Java、Rust、C技術整合我將為您設計一個使用Java、Rust和C開發的智能化農業APP方案&#xff0c;專注于現代農業的數字化轉型和智能化升級。## 系統架構設計 --------------------- | 移動客戶端 (Android/iOS) | // Java/Kotlin (Android), Swift…

PHP在線客服系統 支持獨立部署 雙語言切換 離線消息推送

內容目錄一、詳細介紹二、效果展示1.部分代碼2.效果圖展示三、學習資料下載一、詳細介紹 該在線客服系統是一款基于&#xff1a;Php MySql Swoole Vue3開發的獨立部署的雙語在線客服系統。 支持pch5網站、小程序、app各個用戶端使用 【為什么要開發這款在線客服系統】 原…

小程序獲取視頻第一幀

最近我在做一個小程序項目,需要在單個頁面里展示大量的視頻列表,但有個頭疼的限制:小程序官方規定,同一個頁面上最多只能放5個 video 組件,超出這個數量,視頻就會加載失敗,根本無法播放。 這個需求可把我難住了。頁面上足足有幾十個視頻,如果真放幾十個 video 標簽,不…

MATLAB 常用函數匯總大全和高級應用總結

基礎應用 1. 基本數學運算函數函數功能示例abs(x)絕對值abs(-3) → 3sqrt(x)平方根sqrt(16) → 4exp(x)指數函數 exe^xexexp(1) → 2.7183log(x)自然對數log(exp(3)) → 3log10(x)常用對數&#xff08;以 10 為底&#xff09;log10(100) → 2sin(x), cos(x), tan(x)三角函數&am…

vue el-cascader級聯選擇器-地區三級選擇問題記錄

1.表單編輯回顯問題處理-添加leaf葉子節點<el-form-item label"所在地區" prop"addressCode" required><el-cascader ref"cascader" v-model"form.addressCode" :props"props" change"addressChange" :c…

動態主機配置協議(DHCP)詳解

一、 概述DHCP協議Dynamic Host Configuration Protocol &#xff0c;動態主機配置協議作用&#xff1a;動態的進行IP地址分配服務端的監聽端口 67/udp客戶端監聽端口 68/udp網絡架構 C/S&#xff1a;client/serverDHCP的優勢提高配置效率減少配置錯誤DHCP的分配方式手動分配&a…

單變量單步時序預測 | TCN-LSTM時間卷積結合長短期記憶神經網絡(MATLAB)

? 一、主要功能 該代碼實現了一個結合時序卷積網絡(TCN)和長短期記憶網絡(LSTM)的混合深度學習模型,用于時間序列預測。具體任務是:利用前24個時間步的數據(輸入特征維度為24),來預測下一個時間步的值(輸出維度為1),屬于單變量時間序列滾動預測。 ? 二、算法步驟…

【智能體】rStar2-Agent

rStar2-Agent 是一篇在大模型推理領域極具洞察力和工程實力的工作&#xff0c;它沒有追求參數規模的堆砌&#xff0c;而是通過精巧的算法設計和系統優化&#xff0c;在一個14B的小模型上實現了媲美671B大模型的數學推理能力。 核心思想非常明確&#xff1a;讓模型“想得更聰明”…

Coze源碼分析-資源庫-創建知識庫-后端源碼-核心技術與總結

11. 核心技術特點 11.1 知識庫創建的分層架構設計 清晰的職責分離&#xff1a; API層&#xff08;knowledge_service.go&#xff09;&#xff1a;負責知識庫創建請求處理、參數驗證、響應格式化應用層&#xff08;knowledge.go&#xff09;&#xff1a;負責知識庫創建業務邏輯編…