Eu tenho arquivos codificados em H.265 que consomem muitos recursos e não são bem executados, e meu software de conversão (mencoder) atualmente não suporta o formato H.265. Posso convertê-los para H.264 em um arquivo em lotes de linha de comando para converter rapidamente os arquivos para nova compactação usando o Devede / OGMrip? Ao pesquisar neste site, não o encontrei discutido, por isso postarei o que considero uma pergunta útil e responda a ela.
fonte
sleep 3
é desnecessário (mas possível útil para terminar o loop) eINPUT=$1
não tem sentido, pois você está executando isso diretamente em um shell interativo.-c:a copy
vez de recodificação. Além disso,0:0
nem sempre se refere ao vídeo e0:1
nem sempre se refere ao áudio. É possível usar um especificador de fluxo para evitar possíveis problemas:-map 0:v -map 0:a
se você deseja que todos os fluxos de vídeo e áudio da entrada 0 ou-map 0:v:0 -map 0:a:0
se deseja apenas os primeiros fluxos de vídeo e áudio da entrada 0. Se você deseja apenas o fluxo de áudio em inglês:-map 0:m:language:eng
(supondo que está rotulado).ffmpeg -i $INPUT -vcodec h264 -acodec copy $OUTPUT
. Algo que uso todos os dias e que posso memorizar, em oposição a essa enxurrada de bandeiras sem sentido, pelas quais cada ffmpeg responde é tão infame.Conversão de lote de H.265 em H.264
Estes exemplos foram escritos para recentes
ffmpeg
. Economize alguns problemas e faça o download de uma versão recente. Em seguida, coloque offmpeg
binário em~/bin
ou/usr/local/bin
(talvez seja necessário sair do sistema, faça login para que seja notado).Saída Matroska
Este exemplo será exibido em um diretório chamado
h264vids
.Este exemplo assume que suas entradas são
.mp4
. Caso contrário, altere a.mp4
instância no exemplo para o tipo de arquivo de entrada ou use apenas o ganancioso*
.Ajuste
-crf
a qualidade e-preset
a velocidade / eficiência da codificação. Ou simplesmente remova essas opções e use os padrões que são razoavelmente bons e devem ser suficientes para a maioria (o exemplo está usando os valores padrão para essas opções). Veja FFmpeg Wiki: H.264 para mais informações sobre essas opções.Saída MP4
Este é um pouco mais complicado. Isso executará a codificação condicional, dependendo se o áudio de entrada é AAC ou não. Se o áudio de entrada for AAC, o áudio será copiado em fluxo contínuo (re-mixado) como está e a recodificação desnecessária será evitada. Se o áudio de entrada não for AAC, será recodificado para AAC.
Aqui está um script simples que demonstra como fazer isso usando
ffprobe
effmpeg
. Copie e salve-o no diretório que contém seus vídeos a serem convertidos, dê permissão de execuçãochmod +x yourscriptname
e execute-o com./yourscriptname
.Este exemplo será exibido em um diretório chamado
h264vids
.Este exemplo assume que suas entradas são
.mkv
. Caso contrário, altere a.mkv
instância no exemplo para o tipo de arquivo de entrada ou use apenas o ganancioso*
.Veja a nota acima sobre
-crf
e-preset
.Você pode pausar a codificação com ctrl+ ze continuar com
fg
.fonte
Considerando as respostas anteriores, vim com o seguinte:
Isso pressupõe que os arquivos sempre tenham um nome terminado em
265.mkv
. Este final será substituído por264.mkv
.Se a nomeação de arquivos for diferente, você precisará adaptar o comando de acordo.
fonte