Testei a maioria das outras respostas propostas para essa pergunta. As conclusões dos dados do teste estão abaixo. Estas são as respostas propostas que eu testei:
(BR) Modifique a taxa de bits usando:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) Varie o fator de taxa constante usando:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) Altere o tamanho da tela do vídeo (por exemplo, para metade do tamanho de pixel), usando:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) Altere o perfil H.264 para "linha de base", usando:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) Use o processamento ffmpeg padrão, usando:
ffmpeg -i $infile $outfile
DADOS
- "tamanho" - tamanho percentual do pixel do vídeo convertido em relação ao original.
- "taxa de bits" - taxa de bits de vídeos originais e convertidos.
- "definição" - tamanho de pixel dos vídeos.
- "converter" - tempo para converter o vídeo em segundos.
Calculei a taxa de bits alvo para (BL) usando o método proposto.
=== Arquivo A - Como o nó está ajudando a impulsionar o Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== Arquivo B - Usando o GraphQL com Angular _ Por - Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
CONCLUSÕES
O método (SZ) é definitivamente o método mais rápido. Foi 2X a 4X mais rápido. Isso pode ser um problema em vídeos de alta definição, já que todos os outros métodos levaram mais tempo para serem convertidos do que a duração real do vídeo! Por exemplo, o método (CR) levou 53 minutos para converter o vídeo de 21 minutos.
O método (SZ) é definitivamente o melhor método se a definição do vídeo for maior que a definição da tela que o exibirá. Por exemplo, se o telefone puder exibir apenas uma imagem de 1080p, enviar um vídeo de 3840x2160 é apenas um desperdício. Seria melhor metade do seu tamanho para 1080p.
Algumas das respostas propostas realmente aumentaram o tamanho de alguns vídeos. Por exemplo, o método (BR) mais que dobrou o tamanho da amostra de 1080p. No entanto, fez do tamanho do 2160p um terço. Para a amostra de alta definição, os métodos (CR), (BL) e (DF) aumentaram o tamanho do vídeo.
Resposta correta (ou melhor)
É sempre melhor primeiro diminuir a resolução para o máximo suportado pela tela de destino.
Se você quiser reduzir ainda mais o tamanho do arquivo, isso dependerá de escolhas pessoais. Você pode reduzir o conteúdo das informações ou aumentar a compactação.
Você pode diminuir mais a resolução se isso não for algo que lhe preocupa.
Se o vídeo não incluir cenas de ação rápida, convém diminuir a taxa de quadros.
Se você possui um processador poderoso e o espaço é o único problema, você pode aumentar a taxa de compactação.
A taxa de bits é uma combinação de vários fatores. Portanto, apenas dizer ao ffmpeg para diminuir a taxa de bits pode não dar os resultados desejados.
Outra maneira de diminuir o conteúdo das informações é diminuir a profundidade da cor. Como fazer isso ainda não foi discutido.
ffmpeg
página de manual mostra uma-fs
opção para limitar o tamanho da saída, algo comoffmpeg -i in.avi -fs 100M out.avi
funciona?