Estou construindo um registrador de dados com 3 câmeras que produzem quadros JPEG (o.79MB/jpeg @24bit/pixel) a 24 quadros por segundo. Quero pegar essas imagens e convertê-las em um vídeo. Cada
Para o vídeo, estou tentando estimar o tamanho do vídeo e o formato de codificação que devo usar para produzir uma qualidade de vídeo 1080p. E como estimar o tempo que levaria para codificar o vídeo?
Existe uma fórmula para estimar o tamanho final dos dados que pode ser alcançado?
Responder1
Existe uma fórmula para estimar o tamanho final dos dados que pode ser alcançado?
O tamanho depende muito das configurações de codificação que você escolher, ou seja, o modo de controle de taxa, a taxa de bits média ou qualidade média, a taxa de quadros, a compensação entre eficiência e velocidade de compactação, o codificador específico, etc.
Claro, se você tiver um processo trivial de codificação de taxa de bits constante, o tamanho do arquivo de saída será fácil de calcular. Mas na maioria dos casos você prefere não forçar uma taxa de bits fixa.
Para o vídeo, estou tentando estimar o tamanho do vídeo e o formato de codificação que devo usar para produzir uma qualidade de vídeo 1080p.
1080p refere-se apenas a uma resolução de 1080 pixels verticalmente. Não há nenhuma “qualidade” inerente associada a essas dimensões. Quando você fala sobre qualidade, geralmente a categoriza como:
- sem perdas (matematicamente sem perdas)
- visualmente sem perdas (diferenças entre a versão original e a versão codificada não são visíveis ao olho humano)
- com perdas
Ao escolher um codec sem perdas como YUV bruto, FFV1 ou HuffYUV, sua única preocupação é o tamanho do arquivo. Ao escolher um codec visualmente sem perdas, como ProRes ou DNxHD, você ainda poderá encontrar tamanhos de arquivo altos que não são adequados para streaming online.
Para a parte com perdas, você deve pensar em quais são seus requisitos. A codificação rápida é mais importante que o tamanho pequeno do arquivo? Você está preocupado com artefatos de compactação ou o vídeo deveria ser transmitido pela web e, portanto, compactado? Você está planejando apenas arquivar a transmissão para assisti-la mais tarde?
Dependendo da resposta às perguntas acima, você pode preferir uma predefinição de codificação rápida de passagem única com taxa de bits baixa e restrita para permitir o streaming da web. Ou talvez você queira uma predefinição de codificação lenta de duas passagens com um modo de qualidade constante (por exemplo,CRF em x264), se você se preocupa com a fidelidade, mas ainda quer um tamanho bem pequeno.
E como estimar o tempo que levaria para codificar o vídeo?
Isso depende dos recursos da CPU, das dimensões em pixels e da taxa de quadros do vídeo, da complexidade espaço-temporal e das opções do codificador. Com libx264
, por exemplo, você tem várias predefinições para escolher. Veja oGuia de codificação FFmpeg H.264para algumas dicas.