使用avconv和youtube-dl从flv转换为mp3后的持续时间错误

时间:2013-07-29 08:03:27

标签: mp3 id3 avconv youtube-dl

我使用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可能有修复?

2 个答案:

答案 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导出设置是合适的。