Sto implementando un decodificatore audio usando ffmpeg. Durante la lettura di audio e persino la ricerca di opere già, non riesco a capire un modo per cancellare i buffer dopo aver cercato in modo da non avere artefatti quando l'app inizia a leggere l'audio subito dopo la ricerca.FFMPEG Seeking porta artefatti audio
avcodec_flush_buffers non sembra avere alcun effetto sui buffer interni. Questo problema si verifica con tutti i decodificatori (mp3, aac, wma, ...) ma PCM/WAV (che non utilizza i buffer interni per contenere i dati da decodificare poiché l'audio non è compresso).
Il frammento di codice è semplice:
av_seek_frame(audioFilePack->avContext, audioFilePack->stream, posInTimeFrame, AVSEEK_FLAG_ANY);
avcodec_flush_buffers(audioFilePack->avContext->streams[audioFilePack->stream]->codec);
Spiegando:
audioFilePack->avContext = FormatContext
audioFilePack->stream = Stream Position (also used to read audio packets)
audioFilePack->avContext->streams[audioFilePack->stream]->codec = CodecContext for the codec used
Tutte le idee su quello che devo fare in modo che possa cercare e ottenere senza audio residuo? Grazie!
Per favore, nessuna idea? Sto cercando di risolvere questo problema per quasi 2 settimane senza alcuna idea su cosa potrebbe causare questo ... dovrebbe funzionare così com'è? –
Il messaggio viene anche inviato alla mailing list ufficiale di ffmpeg-user. Aiuto ancora necessario. –
Puoi descrivere gli artefatti in modo più dettagliato? Sono click e pop? –