Ir para conteúdo

Problemas com vídeos "baixados"...


fredericopissarra

Posts Recomendados

Tenho observado que a maioria dos vídeos que baixamos, seja via torrents, seja via outros sites de vídeo (Youtube, e... a-ham... XVideos, PornHub, etc...), não aderem aos padrões de vídeos... Por exemplo, O frame-rate pode ser não padronizado (geralmente, 24 fps [filmes da telona], 24000/1001 fps ou 23.976 fps [filmes da telona no padrão NTSC], 25 fps [PAL]; ou 30000/1001 ou 29.97 fps [NTSC]). Alguns frame-rates não são padrão, como 30 fps, por exemplo...

Existe um outro problema relativo aos frame-rates: Num container de vídeo são armazenados 2 frame-rates: O do qual o vídeo foi codificado e o qual o vídeo será "tocado". Às vezes os dois não batem... Seria prudente que a relação entre eles fosse 1:1, da mesma forma que a resolução gráfica para o aspect ratio.

Outro problema é o aspect ratio. Os mais comuns são 4/3 (letter-box) e 16/9 (wide-screen), mas existem outros: 3/2 (35mm still camera film), 16/10 (outro padrão para wide-screen, menos usual), 5:3 (Super 16 - padrão Europeu), 64/24 e 32:9 (ultra wide-screen - também neos usual). No entanto, muitos vídeos usam resoluções gráficas não padronizadas, distorcendo a imagem (daí o macete das barras pretas que mostrei antes)...

Um terceiro problema, mas que não entra, necessariamente, na categoria de padrões, é o bitrate em que o vídeo é codificado... É comum, hoje em dia, que vídeos tenham bitrates MUITO altos, na tentativa de compensar distorções causadas por "artefatos" no vídeo. Então, é comum ver vídeos HD (720p), por exemplo, com bitrates na ordem de 4~5 Mb/s, quando, aproximadamente 2 Mb/s é mais que suficiente. Isso diminuirá o tamanho do vídeo com perdas insignificantes.

Minha dica, use o ffmpeg para converter seus vídeos para os padrões... Por exemplo, se você tem um vídeo em 640x382 (uma resolução não padrõnizada - aspecto 320/191), note que ele está mais próximo do aspecto 16/9 (wide screen) do que 4/3 (letter-box). Assim, convertê-lo para 16/9 pode ser uma boa ideia... Ainda, ajuste o framerate... suponha que o vídeo original use 30 fps, usar NTSC pode ser outra boa ideia... E, como vamos usar widescreen, a resolução final poderá ser 1280x720 (duplicar x e y não causará problemas de distorção, se o filtro certo for usado)... assim, com uma nVidia, podemos fazer:

$ ffmpeg -hwaccel cuvid \
  -i videoin.mp4 \
  -c:v h264_nvenc \
  -pix_fmt yuv420p \
  -bufsize 1.998M -maxrate 1.998M -b:v 1.998M \
  -r ntsc \
  -vf scale=1280:720:flags=lanczos,setdar=16/9 \
  -c:a ac3 \
  -b:a 128k -ac 2 -ar 44.1k -async 1 \
  videoout.mp4

Aqui ajusto chroma subsampling para o YUV 4:2:0 (algumas vezes o vídeo vêm codificado com NV12, por exemplo); o bitrate para 1.998 Mb/s (segundo aquela minha "fórmula mágica" num post anterior); o frame-rate para 29.97 (ntsc), reescalono o vídeo para 1280x720, usando o filtro lanczos, ajusto o aspect ratio (DAR) para 16/9 [o ffmpeg fará isso sozinho, mas prefiro dar uma mão])... Logo depois uso o codec AC-3 (AAC não funciona na minha TV! hehe), ajustando o bitrate do audio para 128 kb/s, stereo com sampling-rate de 44.1 kHz (48 kHz é exagero!).

No audio, o filtro -async 1 (alias para um filtro aresample) garante que o audio estará sincronizado com o novo frame-rate do vídeo...

Há uma desvantagem em fazer isso se seu container tem um stream de legenda (subtitle) emburido... As legendas estão sincronizadas com o frame-rate do vídeo, ao mudar o frame-rate não temos como sincronizar as legendas via algum filtro... Assim, retire a legenda do vídeo (opção -sn), obtenha a legenda e resincronize-a usando algum outro software (SubRip, por exemplo).

Voilà! videoout.mp4 está dentro do padrão para widescreen 720p.

Se você tem um PC com video on-board, mas seu processador é Intel i# de uma geração mais recente (6ª geração em diante?), pode trocar a opção -hwaccel cuvid por: "-hwaccel vaapi -vaapi_device /dev/dri/renderD128"; trocar o encoder para "h264_vaapi", mas deve adicionar o filtro "hwupload" na opção -vf e pode até mudar o escalonador para "scale_vaapi": "-vf hwupload,scale_vaapi=1280:720,setdar=16/9" (para gerações anteriores a 6ª, deixe com "scale=1280:720:flags=lanczos,hwupload,setdar=16/9".
 

Link para o comentário
Compartilhar em outros sites

Ahhh... atualmente tenho preferido codificar meus vídeos com frame rate 23.976 fps (NTSC-FILM). Isso me dá um bit rate menor...

Também tenho preferido, para Widescreen (aspecto 16:9) a resolução de 1280x720 e para LetterBox (aspecto 4:3), 720x540. Respectivamente, teremos os bit rates de 1.6Mb/s e 650kb/s. Codec avc1 (h264). Chroma subsampling: YUV420P (ou NV12, se estiver recodificando numa velha máquina Intel com um i5 de 3ª geração!)... No caso do Widescreen, poderia ter o padrão de 1920x1080 (Full HD), mas o bit rate teria que ser de 3.6 Mb/s, o que me dá arquivos maiores e o ganho de "clareza" da imagem é indistinguível (a não ser que você vá ver um filme numa TV de 60" ou mais)...

Áudio: AC-3, 96 kb/s, stereo e sampling rate de 44.1 kHz.

Container: MPEG-4 (.mp4).

Em certos casos consigo arquivos até 8 vezes menores que os originais, baixados por ai. Mas é mais comum umas 4 ou 5 vezes menor.

Link para o comentário
Compartilhar em outros sites

PS: E 4K? Para 3840x2160 @ 23.976 fps você precisa de 14.4 Mb/s de bit rate. Compare com 1280x720: O arquivo final ficará, pelo menos 9 vezes maior, em 4K, contando apenas o bit rate. Sem contar o tamanho dos quadros... Um vídeo de 4K pode ficar de 9 a 18 vezes maior que um em HD.

Por isso que para o mesmo vídeo, em 720p tendo uns 500 MB de tamanho, um em 2160p tem uns 4.5 GiB ou mais...

Link para o comentário
Compartilhar em outros sites

E 8K? Tem gente entusiasmada com isso...

8K é resolução de 7680x4320 (yep... nada de 8k aqui, no máximo 7.7k - te enganaram, de novo!) para 23.976 fps, teríamos um bit rate mínimo de 57.5 Mb/s. Ou seja, o vídeo final típicamente fica 36 vezes maior que o mesmo vídeo em 720p. Aquele vídeo hipotético de 500 MB ficaria com 18 GiB.

Isso ai é o tamanho de um episódio de uma série qualquer (geralmente cerca da 40 minutos de vídeo)...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...