我很難弄清楚如何使用avconv
.這是我使用的命令:
avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav
但這不起作用。結果我得到了整個文件。嗯,幾乎整份文件。不知何故,產生的文件具有持續時間1:16:31
而不是1:17:23
.另外我相信我以各種可能的方式執行了這個命令: with-ss
和-t
after -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
考慮手冊頁已經過時