O uso correto do avconv é:
avconv [global options] [input options] -i input [output options] output
Você está colocando todas as suas opções antes da sua entrada, e assim a avconv está tratando todas as opções como opções de entrada. Isso seria melhor:
avconv -f video4linux2 -i /dev/video1 -s 640x480 -c:v libx264 -c:a ac3 test.mp4
As configurações padrão podem não ser ideais para você; para libx264 você pode querer definir um valor -crf (entre 0 e 51, 23 é padrão, 18-28 é um intervalo sã para usar, menor = melhor qualidade, mas um arquivo maior) e um -preset (normalmente uso muito rápido) . Para mais informações, veja aqui . Normalmente eu recomendo usar a codificação VBR para áudio, mas eu realmente não sei sobre a codificação do AC3, então você pode precisar usar uma taxa de bits fixa (-b: um 192k provavelmente será OK para som estéreo).
Além disso, o redimensionamento do vídeo pode não ser necessário, use somente -s 640x480
se você precisar reduzir uma entrada maior para esse tamanho.
Quanto a visualizá-lo enquanto você grava, posso pensar em duas soluções. A primeira é simplesmente abrir o arquivo que você está criando com o seu software de player de vídeo preferido. Isso significará um ligeiro atraso na visualização.
A segunda solução é enviar uma segunda saída de avconv para stdout e, em seguida, usar o redirecionamento de E / S para inserir as informações em um player de vídeo. Isso será mais rápido, mas levará cerca de duas vezes a capacidade de processamento, já que, como está, só pode fazer isso codificando uma segunda vez (isso pode mudar no futuro).
avconv -f video4linux2 -i /dev/video1 -s 640x480 -c:v libx264 -c:a ac3 test.mp4 \
-s 640x480 -c:v libx264 -c:a ac3 -f mp4 - | vlc -
Estou usando o VLC como exemplo, mas todos os players de vídeo linux que conheço podem fazer isso. Como o avconv normalmente determina qual formato de contêiner usar da extensão do arquivo, mas -
(stdout) não tem um, então você precisa declarar o formato do contêiner com -f mp4
.