2011-03-19 37 views
5

Có thể đọc các thẻ ID3 (Thời lượng, Nghệ sĩ, tiêu đề ...) của một tập tin MP3 mà không phải tải toàn bộ tập tin không?Đọc các thẻ ID3 mà không cần tải toàn bộ tập tin

Tôi đã thực hiện một vài thử nghiệm và tôi có thể nhận được thẻ Nghệ sĩ và tiêu đề chỉ bằng cách tải xuống một vài byte của tệp MP3 .. nhưng tôi không chắc liệu có thể cho Thời lượng và các thẻ khác hay không ..

Cảm ơn.

Trả lời

7

Tôi chỉ tìm ra rằng ffmpeg có thể đọc các thẻ ID3 của một tập tin từ xa mà không cần phải tải về toàn bộ file:

[email protected]:/# 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 
+0

nhờ giúp tôi –

+0

nhưng cách lấy thông tin? –

2

Phụ thuộc vào nếu bạn muốn đọc ID3v1 hoặc ID3v2. ID3v1 luôn ở cuối tệp, vì vậy nếu bạn quan tâm đến việc đọc mà không đi. ID3v2 thường là xảy ra ở đầu tệp, nhưng không đảm bảo về điều đó.

Vì vậy, nếu bạn không muốn vô tình bỏ lỡ bất kỳ thẻ nào, bạn phải đọc toàn bộ tệp. Các vấn đề ID3v1 có thể được giải quyết bằng cách đọc từ cuối tập tin, nhưng điều đó không giúp với ID3v2.

+0

ID3v2 luôn có một tiêu đề của 10bytes, và trong đó xác định nếu có một chân, cũng có 10 byte. Bạn đã thấy những trường hợp cụ thể nào khiến bạn nói rằng nó có thể chỉ ở cuối tệp? – nlucaroni

+0

Bản thân thẻ có thể là kết thúc - không quan trọng cách cấu trúc thẻ. Ví dụ: xem http://code.google.com/p/mutagen/issues/detail?id=78. Mặc dù * thường * thẻ ở phía trước, không có sự đảm bảo nào. Nó xuất hiện OP là OK với điều đó, đó là tốt từ một quan điểm thực tế. – Jon

Các vấn đề liên quan