Perda de dados devido a transcodificação de vídeo [ffmpeg]

1

Eu tenho um aplicativo que leva o vídeo do usuário e faz algum processamento. o pipeline de processamento consiste em várias etapas. O código que eu escrevi até agora assume codec h264 para vídeo de entrada. Mas a entrada do usuário não pode ser assumida como estando em um formato / codec particular, então estou pensando em adicionar mais um passo no início do pipeline, isto é, transcodificar qualquer vídeo de entrada para h264. Mas estou tentando minimizar o excesso de dados no vídeo por causa dessa etapa. Além disso, é possível que o vídeo enviado pelo usuário não seja de baixa qualidade, provavelmente será um vídeo h264 com perdas.

Eu posso usar crf = 0 enquanto transcodifico o vídeo de entrada

ffmpeg -i input.mp4 -c:v h264 -crf 0 output.mp4

mas isso resulta em tamanhos de arquivo enormes, o que afeta os próximos passos no pipeline.

Agora digamos que eu use crf = 18 para a etapa de transcodificação mencionada acima

ffmpeg -i input.mp4 -c:v h264 -crf 18 output.mp4

e também vamos supor que o vídeo de entrada também tenha crf = 18, então nesse caso essa etapa de transcodificação resultará em perda de dados?

    
por gaurav 03.03.2016 / 14:39

1 resposta

1

Se o vídeo de origem contiver vídeo H.264, você pode simplesmente usar -map e -c:v copy para extrair o fluxo desejado sem transcodificação. Primeiro, "sondaria" o vídeo de origem para ver quais fluxos ele contém e, em seguida, criava o comando "transccode" pipe com ffmpeg, conforme apropriado:

ffmpeg -i input.mp4 -map 0:1 -c:v copy output.mp4
    
por 04.03.2016 / 18:37