2

我使用 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 下载后对我的所有文件运行一个脚本。或者也许这个错误有修复?

4

2 回答 2

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:a 选项(带有 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

请注意,将 -ab 选项与 avconv 一起使用会输出无法用 vbrfix 修复的 CBR mp3。Avconv 似乎为 CBR mp3 文件输出错误的标头。

于 2014-01-31T21:01:19.670 回答
0

我遇到了同样的问题。我使用 Audacity 对我下载/转换的文件进行了批量转换。

直接打开Audacity File->Apply Chain

我的 Audacity 版本提供了“MP3 转换”链。我选择它,然后单击“应用到文件”按钮。

从那里,选择持续时间不正确的 mp3 文件(我刚刚选择了临时文件夹中的所有文件)

这将创建一个“已清理”的子目录并打开每个文件,进行规范化,然后导出到具有正确持续时间的新 mp3 文件。

我没有检查所有文件,但它似乎可以满足我的需要 - 它可能需要对规范化进行更多调查,并且 mp3 导出设置是合适的。

于 2013-08-20T07:46:15.103 回答