Como canalizar a saída ffmpeg?

1

Gostaria de usar a saída de ffmpeg para criptografar o vídeo com openssl :

Eu tentei usar o pipe de nomes sem sucesso. Com o comando:

mkfifo myfifo
ffmpeg -f alsa -ac 2 -i plughw:0,0 -f video4linux2 -s vga -i /dev/video0 myfifo

Eu recebo o erro

[NULL @ 0x563c02ce5c00] Unable to find a suitable output format for 'myfifo'
myfifo: Invalid argument

A ideia é depois criptografar o stdout do ffmpeg com

dd if=myfifo | openssl enc -des3 -out video.mp4

Como posso canalizar a saída de ffmpeg para openssl

PS: Eu sei que a criptografia com ffmpeg é possível, mas prefiro usar o openssl com um pipe.

    
por j1088099.mvrht.com. 11.12.2016 / 00:08

1 resposta

5

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
    
por 11.12.2016 / 10:10