ffmpeg
비디오를 암호화하는 데 사용하려는 출력은 다음과 같습니다 openssl
.
나는 성공하지 못한 채 네임 파이프를 사용해 보았습니다. 사용 명령:
mkfifo myfifo
ffmpeg -f alsa -ac 2 -i plughw:0,0 -f video4linux2 -s vga -i /dev/video0 myfifo
오류가 발생했습니다.
[NULL @ 0x563c02ce5c00] Unable to find a suitable output format for 'myfifo'
myfifo: Invalid argument
아이디어는 나중에 암호화를 위해 ffmpeg의 표준 출력을 사용하는 것입니다.
dd if=myfifo | openssl enc -des3 -out video.mp4
출력을 어떻게 파이프할 수 있습니까 ffmpeg
?openssl
추신: ffmpeg를 사용하여 암호화하는 것이 가능하다는 것을 알고 있지만 openssl 및 파이프를 사용하는 것을 선호합니다.
답변1
ffmpeg는 파일 확장자를 기반으로 비디오 형식을 추측하려고 시도합니다. @alex-stragies가 말했듯이 "출력 형식 등에 대한 옵션을 설정"하거나 ffmpeg가 알고 있는 fifo의 파일 확장자를 사용하십시오.
openssl을 독립형으로 실행하려면 명령줄에 암호화 비밀번호도 제공하세요.
파이프나 fifo를 출력으로 사용하는 경우 ffmpeg는 출력 파일에서 앞뒤로 이동할 수 없으므로 쓰기 시 무작위 액세스가 필요하지 않은 형식을 선택해야 합니다. 예를 들어 x264 비디오와 aac 오디오( )가 포함된 mp4를 만들려고 하면 ffmpeg -c:v libx264 -c:a aac
ffmpeg가 실패합니다 [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
일단 작동하게 되면 fifo를 쉽게 제거하고 ffmpeg와 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