2013-07-29 113 views
2

我使用了youtube-dl來下載並將youtube視頻轉換爲mp3。使用avconv和youtube-dl從flv轉換爲mp3後的錯誤持續時間

youtube-dl http://www.youtube.com/watch?v=4f51DhJR0zo 
-o "Alesso - Think It's Time.flv" -x -f 43 --audio-format mp3 

現在它看起來像所有的MP3文件有一個不尋常的持續時間長,使用Amarok的或類似的會產生沒有聲音很長的時間間隔的東西。我查看了flv文件,看起來時間和持續時間在那裏,但avconv會轉換並更改時間。所以原創song.flv的持續時間是04:42而output.mp3的持續時間是17:20。 如果我寫

$ avconv -i Rihanna\ -\ Diamonds.mp3 

輸出:

Input #0, mp3, from 'Rihanna - Diamonds.mp3': Metadata: encoder : Lavf53.21.1 Duration: 00:04:42.98, start: 0.000000, bitrate: 117 kb/s Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 32 kb/s At least one output file must be specified

所以持續時間的輸出是正確的,但它不會在Amarok的顯示。另一方面,Vlc計算持續時間本身,但時間不斷變化,直到歌曲達到結尾。

有沒有辦法改變全局id3_v2時間/持續時間標籤,所以我可能會在從youtube-dl下載所有文件後運行腳本。或者也許這個bug有修復?

回答

1

我遇到了同樣的問題。

CBR:使用-ab(或-b:a)選項時,avconv輸出錯誤的CBR mp3標頭。 Outputing管道解決這個問題:

avconv -i file.flv -b:a 128k --audio-format mp3 - > file.mp3 

注:只針對MP3 CBR此修復工作,它打破VBR MP3需要直接輸出到文件。

VBR:如果您使用avconv -q:一個選項(用0〜9質量指標),你就會有一個VBR MP3音頻流輸出:

youtube-dl http://www.youtube.com/watch?v=4f51DhJR0zo 
-o "Alesso - Think It's Time.flv" -x -f 43 -q:a 4 --audio-format mp3 

有了這個VBR MP3輸出你,可以使用vbrfix修復vbrheader和正確的時間:

command vbrfix "Rihanna - Diamonds.mp3" "Rihanna - Diamonds - vbrfixed.mp3" 

的持續時間「蕾哈娜 - 鑽石 - vbrfixed.mp3」文件應該沒問題。

來源:http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=377

請注意,使用-AB選項與avconv輸出CBR MP3不能固定vbrfix。 Avconv似乎爲CBR mp3文件輸出錯誤的標題。

+0

'謝謝 - > you'先生。輸出到管道確實修復了錯誤的標題。你搖滾! – undefinederror

0

我遇到了同樣的問題。我已經使用Audacity對已下載/轉換的文件進行批量轉換。

打開Audacity的直接 文件 - >應用鏈

我的大膽的版本已提供 「MP3轉換」 鏈。我選擇這個,然後點擊「應用到文件」按鈕。

從那裏,選擇具有不正確的時間mp3文件(我只是選擇在我的臨時文件夾中的所有文件)

這將創建一個「乾淨」的子目錄,並打開每個文件,做歸一化,然後以正確的持續時間導出到新的mp3文件。

我還沒有檢查所有文件,但它似乎做我所需要的 - 它可能需要更多的規範化調查和MP3導出設置是合適的。