Convertire Mp4 in Mp3 con anteprima


8

Sono in grado di convertire un mp4 in un mp3 in ffmpeg, ma non sono sicuro di come aggiungerei un'anteprima del video.

Attualmente hai questo per convertire da mp4 in mp3

ffmpeg -i video.mp4 -acodec libmp3lame -metadata title=video -b:a 256 -f input.mp3

Dovrei quindi eseguirlo di nuovo tramite ffmpeg con questo comando?

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3

o c'è un modo per utilizzare filtri complessi per ottenere questo è una corsa?

So che funziona per FLV ma non sembra funzionare per mp4

ffmpeg -i video.flv -i cover.jpg -map 0:a -map 1 -c:v copy -metadata title=video -b:a 256k out.mp3

Vuoi davvero che la conversione imposti automaticamente la miniatura? Perché altrimenti potresti cambiarlo manualmente ma non sono sicuro che tu sia dopo. Se riesci a farlo con FLV ma non con MP4, farei semplicemente uno script che esegue entrambi i comandi.
RamonRobben,

@RamonRobben Sto cercando di evitare di dover eseguire ffmpeg due volte
nadermx,

potresti provare qualcosa del genere ffmpeg -i in.mp4 -i test.png -map 0: 0 -map 1: 0 -c copy -id3v2_version 3 -metadata: s: v title = "Cover album" -metadata: s: v comment = "Cover (Front)" out.mp3 Sto scaricando me stesso ffmpeg per iniziare i test con esso.
RamonRobben,

Risposte:


3

Risposta migliore , con spiegazione, che incorpora suggerimenti intelligenti da slhck e Mulvya, spogliati di parametri non essenziali.

ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -b:a 256k -c:v copy -map 0:a:0 -map 1:v:0 output.mp3

ffmpeg strumento di manipolazione audio / video: già selezionato dall'OP, è particolarmente adatto a questo lavoro.

-i video.mp4 primo file di input: un video con un po 'di audio che vogliamo estrarre.

-i cover.jpg secondo file di input, un'immagine che vogliamo visualizzare quando riproduciamo il file audio risultante.

-acodec libmp3lame vogliamo creare un file .mp3, usando il codificatore LAME.

-b:a 256kquesto imposta il bitrate per la traccia audio a 256Kb / s costanti. Un'opzione più intelligente sarebbe quella di codificare con un bitrate variabile, specificando il parametro di qualità : -q:a 0chiede la massima qualità, mentre -q:a 4spesso rappresenta un buon compromesso tra qualità audio percepita e bitrate (e, quindi, dimensione del file).

-c:v copyquesto indica che il flusso video (l'immagine .jpg) non deve essere ricodificato, ma deve essere copiato così com'è. Ciò è utile per evitare elaborazioni non necessarie e potenziali perdite di qualità durante la ricodifica in un formato con perdita. Nel nostro caso, senza questo parametro l'immagine verrebbe decodificata da .jpg e codificata in .png, che apparentemente è il formato nativo che viene scelto di default. Ciò non significherebbe una perdita di qualità poiché .png è lossles, ma il più delle volte causerà un aumento delle dimensioni del file, in quanto .jpg (essendo lossy) offre generalmente un migliore tasso di compressione.

-map 0:a:0seleziona il flusso da utilizzare dal primo ( 0:) file di input: deve essere il primo ( :0) audio ( a) flusso che contiene.

-map 1:v:0questo seleziona il primo ( :0) video ( v) stream dal secondo ( 1:) file di input.

output.mp3 il nome di questo parametro è stato scelto astutamente per suggerire già che questo deve essere il nome da assegnare al file audio di output (.mp3) con l'immagine incorporata che vogliamo creare.

Risposta originale

Questo crea un file audio (.mp3) con un'immagine statica mettendo insieme un video (.mp4) e un'immagine (.jpg) del mio matrimonio:

ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -metadata title=video -b:a 256k -map_metadata 0 -map 0:1 -map 1 output.mp3

Vedi la documentazione di ffmpeg sulla selezione dei flussi di input con -map, che è l'opzione pertinente qui.

Per prima cosa ho eseguito il comando semplicemente -map 0 -map 1e ho ottenuto queste informazioni:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> png (native))
  Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
  Stream #1:0 -> #0:2 (mjpeg (native) -> png (native))

Quindi sapevo che volevo lo streaming 1(aac audio) dal file che ha un numero indice di 0, cioè il file video; quindi doveva essere selezionato esplicitamente con -map 0:1 -map 1.


Ci ho provato, eppure mi dà Stream map '0:1' matches no streams. To ignore this, add a trailing '?' to the map.
nadermx il

Eseguilo con ´-map 0 -map 1´ e vedi quali sono i flussi disponibili.
simlev

Stream mapping: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Stream #1:0 -> #0:1 (mjpeg (native) -> png (native))
nadermx,

1
@nadermx Puoi fare -map 0:a:0 -map 1:v:0per selezionare rispettivamente i primi flussi audio e video del primo e del secondo file.
slhck

1
Evita di codificare l'input dell'immagine, specialmente con JPG. -c:v copy.
Gyan

2

puoi usare vlc media player -

Passaggio 1: aprire il VLC e selezionare "Media". Fai clic su converti / salva.

Passaggio 2: nella finestra successiva visualizzata, selezionare "aggiungi" e scegliere il file video (MP4) da convertire.

Passaggio 3: Successivamente, fare clic sulla freccia verso il basso su "Converti / Salva", quindi fare clic su "Converti".

Passaggio 4: nella finestra successiva visualizzata, assicurarsi che il pulsante "Converti" sia selezionato. Procedere con la scelta del tipo di file audio che si desidera creare. Nel nostro caso il suo file MP3 in cui stiamo convertendo.

Passaggio 5: scegliere una destinazione di uscita, quindi premere “Avvia”. Il VLC inizierà quindi la conversione.

per l'aggiunta di miniature puoi fare riferimento a questo link (spiegato molto bene).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.