如何使用avconv剪切音訊檔案?

如何使用avconv剪切音訊檔案?

我很難弄清楚如何使用avconv.這是我使用的命令:

avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav 

但這不起作用。結果我得到了整個文件。嗯,幾乎整份文件。不知何故,產生的文件具有持續時間1:16:31而不是1:17:23.另外我相信我以各種可能的方式執行了這個命令: with-ss-tafter -i-t指定結束點、mp3 檔案、指定音訊編解碼器、ffmpeg.我做錯了嗎?

UPD感謝bodhi.zazen這個作品(我更正了 報告的偏移量和持續時間mp3splt-gtk,由於某種原因它們是錯誤的,目標是剪切 mp3 檔案)

avconv -i RR119Accessibility.mp3 -ss 00:52:08 -t 00:01:08 RR119Accessibility-2.mp3

但這並沒有:

avconv -ss 00:52:08 -t 00:01:08 -i RR119Accessibility.mp3 RR119Accessibility-2.mp3

產生的檔案從 00:52:08 開始,一直到原始檔案的末端。我認為-ss-t與輸入文件(如果之前指定)相關-i。否則輸出檔。有人可以解釋一下嗎?

答案1

我認為最初的問題在於時間戳記的格式。

格式為時:分:秒

我不確定我是否理解您關於選項順序的問題。我認為只要 -i 後面跟著輸入檔名並且 -ss HH:MM:SS 後面跟著我的 -t HH:MM:SS 就沒關係

-ss HH:MM:SS 是起點,-t HH:MM:SS 是持續時間

因此 -ss 00:01:00 -t 00:05:00 將從一分鐘標記開始並運行 5 分鐘。

在我的系統上,使用 ffmpeg,順序並不重要(您可以按任何順序指定時間或輸入文件,只要 -ss 後面跟著持續時間 (-t) )

答案2

問題來自於-ss取決於命令列中的位置的不同含義。這是專案avconv的一部分時遺留下來的ffmpeg,我相信它正在新版本中修復。

在過去,如果你說類似的話

 ffmpeg -ss 5 -i input

您的意思是「跳到文件中的 5 秒標記並開始閱讀」。

但如果你說

ffmpeg -i input -ss 5

您的意思是“打開輸入文件並跳過所有數據直到五秒標記”。

正如您所理解的,第一種方法實際上經常會失敗,因為您在文件中跳過而不讀取它。它僅適用於帶有時間戳的文件,允許您讀取幀並知道您是否已經走得太遠。

基本上它在 ffmpeg 中的工作方式是「猜測第一秒的比特率,然後假設所有其他秒都相同」。但是,當然,並非所有秒數都相同,如果我們談論的是 52 小時的“漂移”,則誤差可能會相當大。

因此,如果您使用的是 avconv 的早期分割後版本,您應該始終放在-ss正在讀取的檔案後面。但在較新的版本中(據我所知)這個錯誤已被修復。

答案3

嘗試:

avconv -i RR119Accessibility.wav -ss 52:13:49 -t 01:13:52 RR119Accessibility-2.wav

ffmpeg 和 avconv 的選項是位置敏感的。

在您的範例中,ffmpeg 開始讀取檔案並開始從 timestamp -ss 輸出
(ffmpeg 在我的系統上表現良好,而 avconv 則不然,稱之為某種回歸)。

在我在這裡給出的範例中,avconv(或 ffmpeg)首先尋找正確的偏移量,然後開始讀取和輸出。這對兩者都有效。

您可以在以下位置找到有關 avconv 的更多文檔http://libav.org 這些人已經分叉了 ffmpeg,並且還負責 Ubuntu 中極其古老的 ffmpeg 版本。

真正的 ffmpeg 不在 ubuntu 儲存庫中,而是在 PPA 中:
PPA:喬恩-塞弗林森/ffmpeg
您可以在以下位置找到有關 ffmpeg 的更多文檔http://ffmpeg.org

考慮手冊頁已經過時

相關內容