Sto registrando un flusso continuo in diretta su un flusso HLS ad alto bitrate. Quindi voglio transcodificarlo in modo asincrono su diversi formati/bitrate. Ho questo lavoro, per lo più, ad eccezione di artefatti audio che appaiono tra ogni segmento (spazi vuoti e pop).Transcode HLS Segments singolarmente utilizzando FFMPEG
Ecco un esempio di riga di comando ffmpeg:
ffmpeg -threads 1 -nostdin -loglevel verbose \
-nostdin -y -i input.ts -c:a libfdk_aac \
-ac 2 -b:a 64k -y -metadata -vn output.ts
Ispezione un esempio file audio mostra che c'è un divario alla fine dell'audio:
e l'inizio della il file sembra attenuato con sospetto (anche se questo potrebbe non essere un problema):
Il mio sospetto è che questi artefatti stiano accadendo perché la transcodifica si sta verificando senza il contesto del flusso nel suo insieme.
Qualche idea su come convincere FFMPEG a produrre audio che possa rientrare in uno stream HLS?
** AGGIORNAMENTO 1 **
Ecco l'inizio/fine del segmento originale . Come puoi vedere, la partenza sembra sempre la stessa, ma la fine è pulita a 30 secondi. Mi aspetto un certo grado di imbottitura con la codifica lossy, ma c'è qualche modo che HLS riesce a fare la riproduzione senza pause (Is This correlate a iTunes metodo con metadati personalizzati?)
** aggiornato 2 **
Così, ho convertito sia l'originale (128k aac in MPEG2 TS) sia il transcodificato (64k aac in aac/adts container) in WAV e ho messo i due side-by-side. Questo è il risultato:
Non sono sicuro se questo è rappresentativo di come un cliente riprodurla, ma sembra un po 'strano che la decodifica quello transcodifica introduce un vuoto nella avvia e rende il segmento più lungo. Dato che sono entrambi codifica lossy, mi sarei aspettato che il padding fosse ugualmente presente in entrambi (se non del tutto).
** AGGIORNAMENTO 3 **
Secondo http://en.wikipedia.org/wiki/Gapless_playback - Solo una manciata di encoder supportano senza pause - per MP3, ho passato a lame in ffmpeg, e il problema, finora, sembra essere andato.
Per AAC (vedi http://en.wikipedia.org/wiki/FAAC), ho provato libfaac (al contrario di libfdk_aac) e sembra anche produrre audio senza pause. Tuttavia, la qualità di quest'ultimo non è eccezionale e preferisco usare libfdk_aac è possibile.
E come si confronta la forma d'onda con il file di input? – vipw
Aggiornato con forme d'onda originali e confrontate – rayh