Ho usato per calcolare la durata dei file MP3 lato server utilizzando ffmpeg - che sembrava funzionare correttamente. Oggi ho scoperto che alcuni dei calcoli erano sbagliati. In qualche modo, per qualche motivo, ffmpeg calcolerà male la durata e sembra che accada solo con file MP3 a bit rate variabile.Come ottenere la durata reale, reale di un file MP3 (VBR o CBR) lato server
Durante il test localmente, ho notato che ffmpeg ha stampato due righe in più in verde.
comando utilizzato:
ffmpeg -i song_9747c077aef8.mp3
ffmpeg dice:
[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
Dopo una bella, sessione di google caldo, ho scoperto alcuni messaggi su questo, ma è stata trovata alcuna soluzione.
Ho poi cercato di aumentare la durata massima:
ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3
Dopo questo, ffmpeg restituito solo la seconda linea:
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
Ma in entrambi i casi, la durata calcolata era semplicemente sbagliato. Confrontandolo con VLC ho notato che la durata è corretta.
Dopo ulteriori ricerche mi sono imbattuto in mp3info - che ho installato e utilizzato.
mp3info -p "%S" song_9747c077aef8.mp3
mp3info quindi restituito la durata CORRETTO, ma solo come un intero, che non posso usare come ho bisogno di un numero più precisa qui. La ragione di ciò è stata spiegata in un commento qui sotto, dall'utente blahdiblah - mp3info sta semplicemente estraendo informazioni ID3 dal file e non sta effettivamente effettuando alcun calcolo.
Ho anche provato a utilizzare mplayer per recuperare la durata, ma proprio come ffmpeg, mplayer restituisce il valore sbagliato.
http://www.id3.org/ –
Grazie, ma non posso assumere le informazioni sulla durata corretta nelle intestazioni MP3/tag ID3, anche se volessi. Devo calcolarlo per ottenere un risultato accurato al 100%. – SquareCat
Ahh, allora penso che dovresti passare attraverso l'mp3 e trovare ogni frame, quindi calcolare una durata da quello. –