2012-03-28 20 views
113

ho provato il seguente comando per estrarre l'audio dal video:
ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3ffmpeg per estrarre l'audio dal video

ma ottengo uscita come

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 
SamplE.avi: Invalid data found when processing input 

Chiunque può aiutare, per favore?

risposta

8

ffmpeg -i sample.avi ti darà le informazioni sul formato audio/video per il tuo file. Assicurarsi di disporre delle librerie appropriate configurate per analizzare i flussi di input. Inoltre, assicurarsi che il file non sia corrotto.

+0

ora, ho ottenuto il risultato corretto quando ho provato lo stesso commento con un .mkv vedio.perché non funziona per .avi, c'è un comando ffmpeg per convertire .avi – user1269669

+1

AVI o MKV si riferisce al formato contenitore che può contenere molti formati audio/video differenti. Non stai cercando di convertire l'audio AVI, stai cercando di convertire la traccia audio all'interno del file AVI, che non hai ancora specificato. Usa il comando I elencato sopra per vedere che tipo di traccia audio si trova nel file AVI. Se è MP3 dovrai compilare FFMPEG con una libreria MP3 come LAME http://lame.sourceforge.net/ – smp

10

La riga di comando è corretta e funziona su un file video valido. Mi piacerebbe aver installato la libreria corretta per lavorare con mp3, installare lame o probe con un altro codec audio.

solito

ffmpeg -formats 

o

ffmpeg -codecs 

darebbe sufficienti informazioni in modo che si sa di più.

2

Solo una supposizione:

-ab 192 

dovrebbe essere

-ab 192k 

Sembra come che potrebbe essere un problema, ma forse FFmpeg è abbastanza intelligente per correggerlo.

+1

Commento valido, e ho modificato la domanda dell'OP per cambiarla, ma questo non cambia nulla (a la maggior parte, questo produce un avvertimento). –

1

Se l'audio incluso nell'avi non è in formato MP3, potrebbe essere necessario specificare -acodec mp3 come parametro aggiuntivo. O qualunque sia il tuo codec mp3 (su sistemi Linux è probabilmente). Puoi anche ottenere lo stesso effetto, indipendentemente dalla piattaforma, invece di specificare -f mp3 per "forzare" il formato su mp3, sebbene non tutte le versioni di ffmpeg supportino ancora tale opzione. Il tuo chilometraggio può variare.

208

Se si desidera solo per estrarre il flusso audio senza re-encoding solo fare:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac 
  • -vn non è un video.
  • -acodec copy dice usare lo stesso flusso audio che è già lì.

Leggere l'output per vedere quale codec è, per impostare l'estensione del nome file corretta.

+19

e invece di eseguire ffmpeg una prima volta solo per verificare quale flusso audio è, utilizzare ffprobe input-video.avi – FlorianB

+1

Se si estrae solo l'audio da un flusso video, la lunghezza dell'audio potrebbe essere inferiore alla lunghezza del video . Per assicurarti che ciò non accada, estrai sia audio che video con la stessa chiamata a ffmpeg, ad es. "ffmpeg -i vid.avi -map 0: a audio.wav -map 0: v solovideo.avi – BlenderBender

+0

Questo funziona per me. – Sam

62

Per codificare un MP3 di alta qualità da un AVI migliore utilizzando -q: uno per bit rate variabile.

ffmpeg -i sample.avi -q:a 0 -map a sample.mp3 

Se si desidera estrarre una porzione di audio da un video utilizzare l'opzione -ss per specificare il timestamp di partenza, e l'opzione -t per specificare la durata di codifica, ad esempio da 3 minuti e 5 secondi per 45 secondi

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3 
  • il timestamp devono essere in formato HH: SS.xxx o in secondi: MM.

  • Se non si specifica l'opzione -t, questa passerà alla fine.

+0

Ecco una guida per i valori' -q: a': https: //trac.ffmpeg .org/wiki/Encode/MP3 Zero è l'impostazione VBR di più alta qualità, che tipicamente si traduce in bitrate medi nella parte superiore dell'intervallo CBR sano (dove 320 kbit/s è il massimo, probabilmente un po 'oltre il punto in cui la compressione senza perdite diventa più appropriata). –

3

Per codificare audio mp3 ffmpeg.org mostra il seguente esempio:

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3 

ho estratto l'audio da un video appena sostituendo input.wav con il video il nome del file. Il 2 significa 190 kb/sec. Puoi vedere gli altri livelli di qualità al mio link qui sopra.

0

Utilizzare -b:a anziché -ab come -ab non è aggiornato. Assicurati che il percorso del file di input sia corretto.

Per estrarre l'audio da un video, ho utilizzato il comando di sotto e funziona correttamente.

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath}; 

Qui,

-y

file di output di sovrascrittura senza chiedere.

-i

ffmpeg legge da un numero arbitrario di “file” di input specificato dall'opzione -i registrazione

-vn

Disabilita il video

-ar

imposta la frequenza di campionamento per i flussi audio se codificati

-ac

Impostare il numero di canali audio.

-b: un

Impostare il bitrate audio

-f

formato

Partenza this per il mio completo progetto Android di esempio ffmpeg su github.

Problemi correlati