我使用youtube-dl下载并将youtube视频转换为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可能有修复?
答案 0 :(得分:1)
我遇到了同样的问题。
CBR:当使用-ab(或-b:a)选项时,avconv会输出错误的CBR mp3标头。输出到管道解决了这个问题:
avconv -i file.flv -b:a 128k --audio-format mp3 - > file.mp3
注意:此修复程序仅适用于CBR mp3,它会破坏需要直接输出到文件的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"
“Rihanna - Diamonds - vbrfixed.mp3”文件的持续时间应该没问题。
来源:http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=377
请注意,使用带有avconv的-ab选项输出无法使用vbrfix修复的CBR mp3。 Avconv似乎输出了CBR mp3文件的错误标题。
答案 1 :(得分:0)
我遇到了同样的问题。我已经使用Audacity对我下载/转换的文件进行批量转换。
直接打开Audacity 文件 - >应用链
我的大胆版本提供了“MP3转换”链。我选择它然后单击“应用于文件”按钮。
从那里,选择持续时间不正确的mp3文件(我刚刚选择了临时文件夹中的所有文件)
这将创建一个“已清理”的子目录并打开每个文件,进行规范化,然后以正确的持续时间导出到新的mp3文件。
我没有检查所有文件,但它似乎做了我需要的 - 可能需要更多调查规范化和mp3导出设置是合适的。