Eu brinquei com a transformação de várias fotos em uma apresentação de slides h.264, principalmente para comparar a eficiência de compactação de JPG versus h.264. Eu recebi algumas respostas úteis sobre as implicações técnicas disso dos x264 devs no doom9. por exemplo, force x264 a não usar quadros B para isso, porque imagens não muito relacionadas precisarão de muitos macroblocos I e codificá-los em quadros B é mais caro.
O comportamento do player de software com vídeo de baixa taxa de quadros não era ideal no passado. Eu acho que um jogador mais velho só verificou a entrada do teclado quando exibiu um quadro. Portanto, houve um atraso entre a entrada do usuário e a resposta do jogador. mplayer2 e mpv não têm esse problema. Além disso, jogadores que só podem buscar quadros-chave buscarão pedaços muito grandes (mais ou menos 2 minutos!) Se você não reduzir o intervalo do quadro-chave. O x264 não inserirá IDR (limites de GOP) em todo o lugar se as imagens estiverem um pouco relacionadas entre si.
Use x264 -tune stillimage
. Ele aciona as otimizações psy , porque a estabilidade temporal não é um problema para este caso de uso. Resultados de pesquisa adicionais: do google .
Eu concordo com outras sugestões para ter alguns quadros duplicados, para aumentar o FPS para pelo menos 5 ou algo assim, apenas no caso de jogadores ruins. No entanto, os smartphones / tablets não devem ter problemas ao reproduzir vídeo de FPS variável, pois geralmente gravam dessa maneira quando os níveis de luz caem. Como os vídeos de FPS variável dos telefones já estão disponíveis, o suporte ao player de hardware deve ser esperado. Eu não esperava problemas, mas também não ficaria surpreso se houvesse pelo menos alguns players de hardware antigos que não lidassem bem com isso.
Um quadro de todos os macroblocos "ignorar" leva apenas cerca de 20 bytes a 1080p, IIRC. Porém, uma das razões pelas quais eu não gosto de quadros duplicados é que ele interfere no passo único de percorrer as imagens manualmente.
Porém, há uma desvantagem da compactação na duplicação de quadros : se houver muita redundância entre as diferentes imagens (ou seja, ainda é um vídeo, não uma apresentação de slides), o preenchimento com imagens idênticas tornará mais difícil para o codificador encontrar e explorar isso.
Dependendo das configurações de codificação, o codificador manterá apenas um número de quadros antigos como possíveis referências para novos quadros e só poderá pesquisar dentro de um GOP (por exemplo, 250 quadros padrão para x264). Se todos os candidatos tiverem a mesma imagem, isso não oferece várias opções para encontrar uma referência melhor para cada bloco.
Por exemplo, depois que um objeto em primeiro plano se move diante de alguns detalhes do plano de fundo, o codificador pode salvar bits referenciando a aparência em um quadro mais antigo antes de ser obscurecido. O h.264 pode escolher quadros de referência por bloco. Este é um efeito relativamente pequeno; bons codificadores h.264 funcionam bem com apenas 1 quadro de referência, mas ainda são prejudiciais à eficiência da compactação e um desperdício de energia / duração da bateria / tempo de CPU no lado da descompressão para copiar a memória e decodificar e exibir quadros extras.
A recuperação de VFR após um NLE força todos os seus clipes a uma alta taxa de quadros:
O FFmpeg possui um mpdecimate
filtro que descarta quadros semelhantes. Você pode definir limites de quantos quadros em uma linha ele pode cair. Com um limite de similaridade apertado, você deve fazer com que ele elimine apenas duplicatas reais.
por exemplo, ffmpeg -i input.mp4 -vf mpdecimate=max=9:hi=400 -c:a copy -c:v libx264 -preset veryslow -tune film output_vfr.mkv
cai até 9 quadros seguidos e somente se o bloco mais diferente fosse diferente de "400" e (padrões): não mais de 33% dos blocos eram diferentes por "320" unidades. IIRC, é basicamente um SAD de 8x8 em componentes de pixel.
(O FFmpeg assume como padrão CFR para .mp4
saídas, portanto, use -vsync 2
para .mp4
saída com taxa de quadros variável . Eu acho que é seguro: Problemas com a taxa de quadros na conversão de vídeo usando ffmpeg com libx264 )