prores 444 output usando ffmpeg

1

Em vez de prores_ks (como na imagem), preciso obter o prores444. Como isso é possível?

Eu tentei o seguinte e senti que estou limitado a isso. O prores_ks é uma alternativa ao prores444?

Você pode explicar como encontrar uma alternativa para isso, caso não esteja presente?

EXRFILE="/tmp/v002/fb_sq021_sc003_v002.%04d.dpx" \
QSCALE=4 \
ffmpeg -start_number 0101 -y -probesize 5000000 -f image2 \
-r 24 -i ${EXRFILE} -vcodec prores_ks -qscale:v ${QSCALE} -vendor ap10 \
-pix_fmt yuv444p10 -s 960x540 /tmp/v002/fb_sq021_sc003_v002.mov
    
por nish 31.01.2014 / 17:18

1 resposta

3

i need to get prores444

Você quer dizer ProRes 4444 ? Ainda é chamado de "4444" mesmo se você não usar o canal alfa.

Is prores_ks alternative to prores444

Não exatamente. A razão pela qual existem vários codecs do ProRes no FFmpeg é que eles são todos competidores. Talvez em algum momento os mantenedores libavformat começarão a remover algumas das alternativas.

Alguns desses codecs são somente decodificadores (por exemplo, prores_lgpl ), portanto, para os propósitos desta pergunta, as opções disponíveis são:

  • prores : no momento, isso é compatível somente com o formato de pixel yuv422p10le , o que significa que ele codifica ProRes 422 apenas.

  • prores_aw : compartilha a mesma limitação que prores

  • prores_ks : Acredito que seja este codec e, pelo menos, no FFmpeg 2.1. 3, ele aceita o formato de pixel yuva444p10le , que é o que você precisa para obter o ProRes 4444.

Esta alternativa ao seu comando funciona aqui no meu Mac, que tem os codecs oficiais da Apple ProRes instalados:

$ EXRFILE="/tmp/v002/fb_sq021_sc003_v002.%04d.dpx"
$ ffmpeg -start_number 0101 -y -f mov -r 24 -i ${EXRFILE} -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -s 960x540 /tmp/v002/fb_sq021_sc003_v002.mov

Vários pontos:

  • Eu adicionei a opção -pix_fmt yuva444p10le , que diz ao codec que queremos a saída 4: 4: 4: 4. Se a entrada não tiver um canal alfa, ela gerará a saída 4: 4: 4.

  • Eu adicionei a opção -profile:v 4444 , que parece ser uma adição recente ao codec. Se você deixar isso de fora, você obtém o ProRes 422 apesar da opção de formato de pixel 4: 4: 4: 4.

  • Eu removi o parâmetro qscale , porque ele permite que o codec prores_ks viole os limites definidos em a especificação ProRes .

    ProRes é um codec baseado em perfil, o que significa que quando você seleciona um dos perfis, ele faz uma quantidade fixa de compactação, definida na especificação. Se você quiser um nível de compactação diferente, deve escolher um perfil diferente, em vez de alterar uma configuração de qualidade.

    O codec prores_ks permite alterar as metas de taxa de bits ou de qualidade independentemente do perfil, mesmo que isso signifique que o arquivo resultante viola a especificação. Pode haver decodificadores ProRes perfeitamente compatíveis que se recusem a aceitar o arquivo gerado. Isso é mais provável com os decodificadores de hardware, pois eles são necessariamente restritos por recursos. Se você está fazendo toda a sua decodificação no software - por exemplo, QuickTime Player - você provavelmente está livre para violar as especificações dessa forma, desde que seu PC seja rápido o suficiente para lidar com as taxas de bits mais altas que podem resultar.

  • Você só precisa de -s se estiver redimensionando os quadros de entrada. Se você é, eu me pergunto por que você está usando formatos como EXR e ProRes 4444 em primeiro lugar? O OpenEXR é normalmente usado onde você precisa de imagens sem perdas, embora tenha uma opção de baixa perda. O ProRes 4444 é quase sem perdas. O reescalonamento dos quadros de entrada é inerentemente com perdas.

    Se ele só precisa ficar bem em um monitor de PC em reprodução em tempo real, provavelmente você pode conseguir com o H.264 de alta taxa de bits. Para 540p, eu acho que 10 Mbit / s ou mais seria suficiente para dar uma saída indistinguível da ProRes 4444, que é de cerca de 67 Mbit / s para 540p.

    Se os usuários do vídeo pausarem o vídeo e estudarem quadro a quadro, o H.264 é uma má ideia, mas o mesmo está redimensionando os quadros de entrada. Pelo menos, você não deveria estar diminuindo a escala abaixo da resolução do monitor. Então, se a sua fonte EXR está fornecendo enormes quadros 4K, há um bom argumento para o reescalonamento para, digamos, 1440 × 900 para um determinado monitor, desde que os usuários não queiram fazer zoom.

  • Observe a alteração no formato do contêiner QuickTime ( -f mov ). Este é o contêiner normal dos arquivos ProRes.

  • Não vejo o ponto de -vendor ap10 , então o removi. Novamente, o ProRes é o ProRes. Não precisa ser marcado como "da Apple" para funcionar.

  • Eu removi -probesize 5000000 , pois não vejo nenhum valor nesse caso.

how to find an alternative to this.

ffmpeg tem muitas alternativas para compactação de vídeo de baixa perda. Eu escrevi uma resposta longa em SuperUser.SE explicando tudo.

Eu provavelmente deveria refazer os testes do ProRes, já que aparentemente houve muitas mudanças nos codecs do ProRes em ffmpeg desde que eu escrevi isso.

    
por 31.01.2014 / 18:28

Tags