Estou tentando reduzir a resolução de alguns vídeos brutos usando avconv. A saída deve manter o mesmo formato de vídeo bruto, pois posteriormente preciso carregá-lo em outro programa que seja extremamente exigente e não aceite nenhum outro tipo de entrada. Agora, eu tentei fazer
avconv -i myvideo.avi -s 88x72 -vcodec rawvideo myvideo-small.avi
E isso produz o vídeo reduzido, mas parece que o formato não é exatamente o mesmo. avconv diz que a entrada de leitura é
Stream #0.0: Video: rawvideo, pal8, 352x288, 30 fps, 30 tbr, 30 tbn
enquanto a produção produzida é
Stream #0.0: Video: rawvideo, yuv420p, 88x72, q=2-31, 200 kb/s, 30 tbn, 30 tbc
Embora ambos sejam vídeos brutos, a entrada é "pal8" e a saída é "yuv420p". Não estou ciente das diferenças entre esses dois formatos, mas preciso que minha saída mantenha exatamente o mesmo formato da entrada. Como isso pode ser feito?
Responder1
Parece-me que avconv
neste momento só suporta pal8 para entrada. Para verificar se você pode executar:
$ avconv -pix_fmts |grep pal8
minha saída é:
avconv version v12_dev0-498-g2e09359, Copyright (c) 2000-2014 the Libav developers
built on Dec 5 2014 09:32:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
I..P. pal8 1 8
A legenda da primeira parte é:
I.... = Supported Input format for conversion
.O... = Supported Output format for conversion
..H.. = Hardware accelerated format
...P. = Paletted format
....B = Bitstream format
Portanto, pal8 pode ser lido, mas não escrito. Isso significa que não há como codificar ativamente qualquer um dos fluxos nesse formato, o que é algo que você precisa fazer se pretende alterar o tamanho do quadro.
Se você encontrar outro formato de pixel que seu software "exigente" aceitará além de pal8 e que possa ser codificado com avconv
, você poderá selecionar esse formato específico com a -pix_fmt
opção:
avconv -i in.avi -s 88x72 -pix_fmt FORMAT -c:v rawvideo out.avi