Come convertire più file mp3 in mp4 con ffmpeg?


1

Il seguente comando prende l'mp3, allega un'immagine ad essa e la converte in un mp4:

ffmpeg -i input.mp3 -loop 1 -i image.png -c: una copia -c: v libx264 -shortest output.mp4

Sto cercando di applicare la stessa immagine a ciascun mp3 in una cartella. Il sistema operativo è Windows 8 e l'output desiderato per il file è mp4.

Devo farlo per tutti gli mp3 in una cartella. Come lo codificherei?

PS Ho anche bisogno del codice che può allegare un'intro mp4 a più file mp4 in una cartella.


Il tuo PS potrebbe essere meglio posto come una domanda separata. Potrebbe essere un semplice caso di utilizzo del concatfiltro (ad esempio); ma questo si basa su alcuni presupposti e quindi sarebbe meglio chiederlo separatamente :)
bertieb

Risposte:


0

Puoi fare questo genere di cose usando un linguaggio di scripting. Ecco un piccolo script di Ruby che dovrebbe fare il lavoro, se lo esegui nella cartella contenente i .mp3file e il image.png:

Dir.glob("*.mp3").each do |file|
    system("ffmpeg -i #{file} -loop 1 -i image.png -c:a copy -c:v libx264 -shortest output.mp4")
end

Lo hai per caso in PHP? Ruby mi è sempre sembrato strano, quindi non ho mai avuto il tempo di impararlo.
Doc Chop,

Scusa, non ho mai usato PHP, quindi non sono sicuro di poterti aiutare. Dovresti essere in grado di scrivere qualcosa di simile a questo in PHP: elenca i file nella directory, crea una stringa di comando ffmpeg per ciascuno e quindi chiama system ().
Kaathe,

Ho scaricato ruby ​​interattivo e ho pensato che avessi semplicemente incollato il codice e premuto invio, ma poi ho visto DIR.glob e ho realizzato che avrei dovuto specificare la cartella. Come lo farei in ruby ​​interattivo o in qualsiasi programma?
Doc Chop,

È possibile utilizzare Dir.chdir per modificare la directory di lavoro corrente, prima della chiamata a Dir.glob. La documentazione per Dir è qui: ruby-doc.org/core-1.9.3/Dir.html
Kaathe

0

Supponendo Windows standard di torbiera cmd.exe(cioè niente adorabile cygwin, o Powershell, o <insert scripting language here>):

for %f in (*.mp3) do ffmpeg -i %f -loop 1 -i image.png -c:a copy -c:v libx264 -shortest %~nf.mp4

(presuppone inoltre che non si trovi in ​​un file batch; in tal caso %è necessario raddoppiare il numero di messaggi %%)

Usa il fatto che puoi leggere nel file corrente (o nella directory, ecc. A seconda di quali argomenti passi for) a una variabile a carattere singolo; che è quindi possibile ottenere il nome di base di via %~n.

Quindi, supponendo che i tuoi mp3 e image.pngsiano nella tua Downloadscartella come da tuo commento:

  1. Avvia un prompt dei comandi: <windows key>+r --> cmd --> <enter>
  2. Passa alla directory dei download: cd Downloads
  3. Esegui il ffmpegcomando in loop :for %f in (*.mp3) do ffmpeg -i %f -loop 1 -i image.png -c:a copy -c:v libx264 -shortest %~nf.mp4
  4. (opzionale) Goditi le versioni mp4 dei tuoi mp3 con l'immagine

Come faccio a specificare dove sono i file con il codice? Supponiamo che i file siano nella mia cartella dei download.
Doc Chop,

@DocChop Lo stai facendo in modo interattivo o da un file batch? Se interattivo: win+r -> cmd(ovvero avvia il prompt dei comandi); cd Downloads; for %f in (*.mp3) do ffmpeg -i %f -loop 1 -i image.png -c:a copy -c:v libx264 -shortest %~nf.mp4(presuppone che siano presenti sia gli mp3 che l'immagine). Ho modificato la mia risposta per illustrare questo processo.
bertieb,

0
  1. Crea un file e salvalo con l'estensione .bat
  2. Scrivi il codice qui sotto in esso. (specifica il file immagine giusto)
  3. Copia il file batch nella directory contenente i tuoi file .mp3.
  4. Supponendo che il percorso di ffmpeg.exe sia impostato nelle variabili di ambiente, eseguire il file batch
  5. Individua i file convertiti nella cartella "convertita" creata.

@echo off
mkdir converted
for %%a in ("*.mp3") do ffmpeg -i "%%a" -loop 1 -i image.png -c:a copy -c:v libx264 -shortest "converted\%%~na.mp4"
pause
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.