Como você converte um diretório / pasta inteiro com o ffmpeg via linha de comando ou com um script em lote?
ffmpeg
batch-processing
Eugene
fonte
fonte
i was unexpected at this time.
do name=`echo "${i%.*}"`;
funcionará em nomes de arquivos com pontos (e espaços) neles..bat
no Windows?Para Linux e macOS, isso pode ser feito em uma linha, usando a expansão de parâmetros para alterar a extensão do nome do arquivo de saída:
fonte
ffmpeg
não é possível inserir e enviar para o mesmo arquivo. 2) Não tenho certeza se os comandos do Bash funcionam nativamente no Windows 10. Talvez eu deva acrescentar à resposta que ele é direcionado a sistemas que podem usar nativamente o Bash, como Linux e macOS. O lxs forneceu uma resposta do Windows para esta pergunta.for f in *.mkv; do ffmpeg -i "$f" -map 0 -movflags faststart -c:v libx264 -c:a copy -c:s copy "${f/x265/x264}"; done
E no Windows:
fonte
FOR /F "tokens=*" %G IN ('dir /b *.mp3') DO ffmpeg -i "%G" -map_metadata -1 -c:v copy -c:a copy "%~nG .mp3"
Um script bash de uma linha seria fácil de fazer - substitua
*.avi
pelo seu tipo de arquivo:fonte
-qscale
. Remova-o e use as configurações padrão ou use-crf
(o padrão é-crf 23
).basename
subshell backticked não está entre aspas. É exatamente por isso que o bash possui expansão de shell: for i in * .avi; do ffmpeg -i "$ i" - qscale 0 "$ (nome da base" $ i ".avi)". mov; feitoPara converter com subdiretórios, use eg
fonte
find -name "*.vtt" -exec ffmpeg -i {} {}.srt \;
find *.mp4 -exec ffmpeg -i {} {}.mp3 \;
find . -name *.ogg -or -name *.wma -exec ffmpeg -i {} {}.mp3 \;
find . -name *.wma -exec ffmpeg -i {} {}.mp3 \; -exec rm {} \;
Para Windows:
Aqui estou convertendo todos os arquivos (.mp4) para arquivos (.mp3).
Basta abrir o cmd, ir para a pasta desejada e digite o comando
Atalho: (opcional)
1. Vá para a pasta em que seus arquivos (.mp4) estão presentes
2. Pressione Shift e clique esquerdo e escolha "Abrir janela do PowerShell aqui"
ou "Abrir janela do prompt de comando aqui"
3. Digite "cmd" [NOTA : Ignore esta etapa se ela abrir diretamente o cmd em vez do PowerShell]
4. Execute o comando
Se você deseja colocar isso em um arquivo em lotes no Windows 10, use %% i.
fonte
Para quem deseja converter em lote qualquer coisa com o ffmpeg, mas gostaria de ter uma interface conveniente do Windows, desenvolvi este front-end:
https://sourceforge.net/projects/ffmpeg-batch
Ele adiciona ao ffmpeg uma interface de moda de janelas, barras de progresso e informações de tempo restante, recursos que sempre perdi ao usar o ffmpeg.
fonte
Se você possui o GNU paralelo, pode converter todos os arquivos .avi abaixo
vid_dir
em mp4 em paralelo, usando todos, exceto um dos núcleos da CPU comPara converter de / para diferentes formatos, altere
'*.avi'
ou.mp4
conforme necessário. O paralelo GNU é listado nos repositórios da maioria das distribuições Linux em um pacote que geralmente é chamadoparallel
.fonte
!
ao final de qualquer um dos bash one-liners?Sei que isso pode ser redundante, mas uso esse script para converter arquivos em lote.
São necessários 2 argumentos para torná-lo mais flexível:
Eu crio um alias para ele, mas você também pode usá-lo manualmente assim:
Isso converteria todos os
mkv
arquivos emmp4
arquivos.Como você pode ver, é um pouco mais versátil. Enquanto
ffmpeg
puder convertê-lo, você poderá especificar duas extensões.fonte
Como um código de golfe aqui, mas como quase todas as respostas até agora são bash (com exceção de um cmd único), aqui está um comando de plataforma cruzada do
Windowsque usa o powershell (porque impressionante):Você pode alterar * .avi para o que corresponder à sua gravação de origem.
fonte
É claro que agora surgiu o PowerShell, projetado especificamente para tornar extremamente fácil algo exatamente assim .
E, sim, o PowerShell também está disponível em outros sistemas operacionais, além do Windows, mas é pré-instalado no Windows, portanto, isso deve ser útil para todos.
Primeiro, você deseja listar todos os arquivos no diretório atual; portanto, começaremos com:
Você também pode usar
ls -Recurse
se quiser converter recursivamente todos os arquivos em subdiretórios.Em seguida, filtraremos esses arquivos apenas para o tipo de arquivo que queremos converter - por exemplo, "avi".
Depois disso, passaremos essas informações para o FFmpeg através de um
ForEach
.Para entrada do FFmpeg, usaremos o
FullName
- esse é o caminho inteiro para o arquivo. E para a saída do FFmpeg, usaremos oName
- mas substituindo o.avi
no final por.mp3
. Então, será algo parecido com isto:Então, vamos juntar tudo isso e este é o resultado:
Isso converterá todos os arquivos ".avi" em arquivos ".mp3" através do FFmpeg, substitua as três aspas para decidir qual o tipo de conversão que você deseja e sinta-se à vontade para adicionar outros argumentos ao FFmpeg no
ForEach
.Você poderia dar um passo adiante e adicionar
Remove-Item
no final para excluir automaticamente os arquivos antigos.Se
ffmpeg
não estiver no seu caminho, e realmente estiver no diretório em que você está, escreva./ffmpeg
lá em vez de apenasffmpeg
.Espero que isso ajude alguém.
fonte
.ps1
arquivo, não em um.bat
arquivo. Você precisará executarSet-ExecutionPolicy RemoteSigned
como administrador se nunca executou um script PS antes.Processar
flac
arquivos em lote emmp3
(seguro para nomes de arquivos com espaços) usando [1] [2]fonte
janelas:
essa é a taxa de bits variável da qualidade 2, você pode defini-la como 0 se quiser, mas, a menos que você tenha um sistema de alto-falantes realmente bom, não vale nada a pena
fonte
Se você deseja que uma interface gráfica seja processada em lote com o ffmpegX, tente o Quick Batcher . É gratuito e terá suas últimas configurações do ffmpegX para converter os arquivos que você soltar nele.
Observe que você não pode arrastar e soltar pastas no Quick Batcher. Então, selecione os arquivos e os coloque no Quick Batcher.
fonte
Somente este funcionou para mim, observe que você precisa criar a pasta "newfiles" manualmente onde o arquivo ffmpeg.exe está localizado.
Converter . arquivos para áudio .wav Código:
ou seja, se você deseja converter todos os arquivos .mp3 para .wav, mude
("*.*")
para("*.mp3")
.O autor deste script é:
https://forum.videohelp.com/threads/356314-How-to-batch-convert-multiplex-any-files-with-ffmpeg
espero que tenha ajudado.
fonte
Isso criará vídeo mp4 de todos os arquivos jpg do diretório atual.
fonte
E para Windows, isso não funciona
mesmo se eu dobrar isso
%
.Eu até sugeriria:
Além disso:
fonte
Isto é o que eu uso para converter em lote avi para 1280x mp4
Funciona bem como um arquivo cmd, execute-o, o loop encontra todos os arquivos avi nessa pasta.
chama MY (mude para o seu) ffmpeg, passa o nome da entrada, as configurações são para redimensionar com nitidez. Os probs não precisam de CRF e "
-b:v 1024k
" ...O arquivo de saída é um arquivo de entrada menos a extensão, com mp4 como novo ext.
fonte
Estou usando esse linux no linux para converter arquivos (geralmente H265) em algo que eu possa jogar no Kodi sem problemas:
Isso se converte em um arquivo temporário e substitui o original para que os nomes permaneçam os mesmos após a conversão.
fonte
Além disso, se você quiser a mesma conversão em subpastas. aqui está o código recursivo.
fonte
pequeno script php para fazer isso:
fonte
escapeshellarg()
, e funciona tanto no windows quanto no linux. Eu concordo que é um caso extremo.Outra solução simples que ainda não foi sugerida seria usar
xargs
:ls *.avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"
Uma pequena armadilha é a nomeação incômoda dos arquivos de saída (por exemplo
input.avi.mp4
). Uma possível solução alternativa para isso pode ser:ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4"
"fonte
ls
porprintf '%s\n'
aqui.