O ffmpeg tenta adivinhar o formato de vídeo com base na extensão do nome do arquivo. Ou "defina opções para o formato de saída e tal" como @ alex-stragies states, ou use uma extensão de nome de arquivo para o seu fifo que o ffmpeg conhece.
Se o openssl precisar ser executado, forneça a senha de criptografia na linha de comando.
Ao usar um pipe ou fifo como saída, o ffmpeg não pode ir e voltar no arquivo de saída, então o formato escolhido deve ser algo que não precise de acesso aleatório durante a gravação. Por exemplo, se você tentar criar um mp4 com x264 video e aac audio ( ffmpeg -c:v libx264 -c:a aac
), o ffmpeg irá morrer com [mp4 @ 0xc83d00] muxer does not support non seekable output
.
( umask 066 ; echo password >/tmp/myfilepasswd )
mkfifo /tmp/schproutz-vid
openssl enc -des3 -out video.enc \
-in /tmp/schproutz-vid \
-pass file:/tmp/myfilepasswd &
sleep 1
ffmpeg -f alsa -ac 2 -i plughw:0,0 \
-f video4linux2 \
-s vga -i /dev/video0 \
-f ogg /tmp/schproutz-vid
Assim que você fizer isso funcionar, você pode remover facilmente o fifo e use um pipe entre ffmpeg e openssl:
ffmpeg -f alsa -ac 2 -i plughw:0,0 \
-f video4linux2 \
-s vga -i /dev/video0 \
-f ogg - |
openssl enc -des3 \
-pass file:/tmp/myfilepasswd \
> outputfile.enc