Используя протокол канала, ffmpy может читать входные данные из STDIN и записывать выходные данные в STDOUT.Это может быть достигнуто с помощью конвейерного протокола FFmpeg.
В следующем примере данные считываются из файла, содержащего необработанные видеокадры в формате RGB, и передаются в ffmpy на STDIN;В свою очередь, ffmpy будет кодировать необработанные данные кадров с помощью H.264 и упаковывать их в контейнер MP4, передавая вывод в STDOUT (обратите внимание, что вы должны перенаправить STDOUT процесса в канал, используя subprocess.PIPE
в качестве значения stdout, в противном случае выводпотеряюсь):
>>> import subprocess
>>> ff = FFmpeg(
... inputs={'pipe:0': '-f rawvideo -pix_fmt rgb24 -s:v 640x480'},
... outputs={'pipe:1': '-c:v h264 -f mp4'}
... )
>>> ff.cmd
'ffmpeg -f rawvideo -pix_fmt rgb24 -s:v 640x480 -i pipe:0 -c:v h264 -f mp4 pipe:1'
>>> stdout, stderr = ff.run(input_data=open('rawvideo', 'rb').read(), stdout=subprocess.PIPE)
Но приведенный выше код не работает для меня.