Użyłem do obliczenia czasu trwania plików MP3 po stronie serwera za pomocą ffmpeg - co wydawało się działać dobrze. Dzisiaj odkryłem, że niektóre obliczenia były błędne. Jakoś, z jakiegoś powodu, ffmpeg błędnie obliczy czas trwania i wydaje się, że dzieje się tak tylko przy plikach mp3 o zmiennej przepływności.Jak uzyskać rzeczywisty, rzeczywisty czas trwania pliku MP3 (VBR lub CBR) po stronie serwera
Podczas testowania tego na miejscu zauważyłem, że ffmpeg wydrukował dwie dodatkowe linie na zielono.
komenda używana:
ffmpeg -i song_9747c077aef8.mp3
ffmpeg mówi:
[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
Po ładnym, ciepłym sesji google, odkryłem kilka postów na ten temat, ale nie znaleziono rozwiązanie.
Potem próbowali zwiększyć maksymalny czas trwania:
ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3
po tym, ffmpeg zwracane tylko drugą linię:
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
Ale w obu przypadkach oblicza czas był po prostu źle. Porównując go do VLC zauważyłem, że czas jest prawidłowy.
Po kolejnych badaniach natknąłem się na mp3info - które zainstalowałem i wykorzystałem.
mp3info -p "%S" song_9747c077aef8.mp3
mp3info następnie powrócił czas POPRAWNIE, ale tylko jako liczbę całkowitą, która nie mogę użyć jako muszę bardziej dokładny numer tutaj. Przyczyna tego została wyjaśniona w komentarzu poniżej, przez użytkownika blahdiblah - mp3info pobiera po prostu dane ID3 z pliku i nie wykonuje żadnych obliczeń.
Próbowałem również użyć mplayera do pobrania czasu trwania, ale tak jak ffmpeg, mplayer zwraca nieprawidłową wartość.
http://www.id3.org/ –
Dziękuję, ale nie mogę przyjąć prawidłowej informacji o czasie trwania w nagłówkach MP3/tagach ID3, nawet jeśli chciałem. Muszę to obliczyć, aby uzyskać dokładny wynik 100%. – SquareCat
Ahh, to myślę, że musielibyście przejść przez mp3 i znaleźć każdą klatkę, a następnie obliczyć czas trwania z tego. –