不下载整个文件即可读取ID3标签

6

在不必下载整个MP3文件的情况下,是否有可能读取ID3标签(持续时间、艺术家、标题等)?

我进行了一些测试,并且只需下载几个字节的MP3文件即可获取艺术家和标题标签.. 但我不确定是否可以获取持续时间和其他标签..

谢谢。

2个回答

7

我刚刚发现ffmpeg可以读取远程文件的ID3标签,而无需下载整个文件:

root@local1:/# ffmpeg -i http://physics.ujep.cz/~mmaly/mp3/Mozart/Mass_in_C_Minor_New_by_Levin/sbory_vyssi_kvalita/01_Kyrie.mp3
FFmpeg version 0.6-4:0.6-2ubuntu6, Copyright (c) 2000-2010 the FFmpeg developers
  built on Oct  5 2010 22:36:53 with gcc 4.4.5
  configuration: --extra-version=4:0.6-2ubuntu6 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-vaapi --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[mp3 @ 0x7ae420]max_analyze_duration reached
[mp3 @ 0x7ae420]Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'http://physics.ujep.cz/~mmaly/mp3/Mozart/Mass_in_C_Minor_New_by_Levin/sbory_vyssi_kvalita/01_Kyrie.mp3':
  Metadata:
    TLEN            : 431046
    TIT2            : Kyrie
    TRCK            : 1
    TPE1            : Mozart
    TCON            : Classical
    TALB            : Mass in C Minor New by Levin
  Duration: 00:07:11.18, start: 0.000000, bitrate: 128 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 128 kb/s
At least one output file must be specified

但是如何获取信息? - Mike

2
取决于您想读取ID3v1还是ID3v2。ID3v1始终位于文件末尾,因此如果您有兴趣读取它,则无法进行。ID3v2通常出现在文件开头,但不能保证如此。

因此,如果您不想意外错过任何标签,您必须读取整个文件。可以通过从文件末尾开始阅读来解决ID3v1问题,但这对ID3v2没有帮助。


ID3v2的头部始终为10个字节,并且在其中定义了是否有一个10个字节的尾部。您见过哪些特定情况使您认为它可能仅出现在文件末尾? - nlucaroni
标签本身可能在最后 -- 标签的结构并不重要。例如请参见 http://code.google.com/p/mutagen/issues/detail?id=78。虽然通常标签在前面,但不能保证。从实际角度来看,OP似乎对此没有意见,这是可以接受的。 - Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接