Estou usando o ffmpeg para adicionar um JPG a um MP4 para criar um MP4.
Como existe apenas uma imagem para fazer o vídeo, estou me perguntando se existe uma maneira de reduzir o tamanho do vídeo.
Comando:
$ ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:a copy output.mp4
Resultados:
image.jpg
= 26,7K (imagem não tão clara)audio.mp3
= 64,6M (54 minutos)output.mp4
= 80,6 milhões (o resultado do vídeo não é tão claro, a música ainda é boa)
É um tamanho razoável para MP4?
Respostas:
Para enviar para o YouTube
H.264: arquivos menores
Este método usa libx264 para codificar vídeo H.264. É mais lento que o método de cópia de fluxo abaixo, mas potencialmente produzirá um tamanho de arquivo menor.
Cópia de fluxo: processo mais rápido
Este método apenas transmite cópias (sem codificação) da imagem para o contêiner MKV. É super rápido, mas se o tamanho for importante, o método acima poderá gerar um arquivo menor.
O YouTube aceita praticamente qualquer coisa, portanto esses comandos usam alguns truques para tornar a codificação mais rápida ou para diminuir o tamanho do arquivo e manter a qualidade alta, pois o YouTube recodificará o que você especificar. Seu player provavelmente não vai gostar, mas o YouTube gostará.
Nestes exemplos, é usada uma taxa de quadros muito baixa, que deve processar mais rapidamente do que o padrão de 25 fps.
Maior compatibilidade para qualquer jogador
Isso deve funcionar em praticamente qualquer coisa, exceto em dispositivos muito antigos (mude
-profile:v main
para-profile:v baseline
se for esse o caso).Se sua entrada de áudio já é AAC, altere
-c:a aac
para-c:a copy
para evitar recodificação desnecessária.O tempo de codificação será maior e o tamanho do arquivo será maior que os comandos do YouTube acima.
Veja FFmpeg Wiki: H.264 para mais informações.
fonte
Unrecognized option 'preset'. Error splitting the argument list: Option not found
ffmpeg
comando completo e a saída completa do console a partir do comando e forneça o link em um comentário.Com apenas as informações que você forneceu, é o que consigo pensar.
Vamos por pedaços:
O que você está falando aí é de quadros por segundo (fps), não bitrate. E você está certo no conceito. Atribuir apenas uma imagem estática a 1 qps não seria um problema.
Nesse caso, o tamanho da imagem não teria um peso significativo, porque estamos lidando com apenas uma imagem estática. Se fosse um vídeo de alta qualidade, é uma questão diferente.
A resolução que você está dizendo é 1280x720.
Eu não vejo o ponto na
-loop 1
opção aqui, isso apenas atrasará o processo. Você usou-shortest
porque o arquivo tem mais de 1 fluxo de entrada? Se não, não há razão para usá-lo. Desde que você usou,-acodec copy
devo assumir que você não deseja recodificá-lo.Para uma saída de 720p 1fps sem recodificação e sem tocar na taxa de bits:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Atribua ao caso que ele possui mais de um fluxo de entrada e você deseja que o ffmpeg conclua a codificação no fluxo mais curto:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Agora, se você precisar alterar a taxa de bits (digamos 1024k como exemplo);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Consulte: Limitar a taxa de bits de saída
Observe que se você ainda deseja um vídeo de tamanho menor em um momento, precisará sacrificar a qualidade para conseguir isso. E outras maneiras de fazer isso envolvem a recodificação com compactação com perdas.
Pelo que você diz, pelas informações que você fornece e pelo que está tentando fazer, acho que seu objetivo é incorporar a arte do álbum ao mp3. Se esse for o seu objetivo, isso atenderá melhor aos seus requisitos:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
Se nada aqui atender aos seus pedidos, forneça mais informações.
fonte
-framerate
como uma opção de entrada e remover a saída-r
: caso contrário, a taxa de quadros de entrada padrão de 25 será usada e, em seguidaffmpeg
, eliminará os quadros a serem atingidos-r 1
. Se você apenas declarar a taxa de quadros de entrada, a saída usará a mesma taxa de quadros.