1

Я хотел бы передавать кадры из одного скрипта Python (A) в другой (B), чтобы B мог получать их только с той скоростью, с которой A может их создать. Все, что я видел с ffmpeg, берет целое видео или потоки с камеры. Я думаю, что я хотел бы сделать, это рассматривать скрипт Python как камеру, которая генерирует кадры.

Я видел это: http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ но я не хочу отправлять вывод в видео файл, я хочу, чтобы другой сценарий его прочитал. Во всяком случае, я также получил ошибку сломанного канала при использовании этого кода.

1 ответ1

2

ffmpeg может читать из STDIN, поэтому все, что вам нужно сделать, это передать кадры из вашего скрипта в ffmpeg через этот поток в некотором формате, который понимает ffmpeg.

Например, если я использую ffmpeg для декодирования видеопотока в отдельные кадры, используя YUV420P в качестве формата пикселей, я могу прочитать их обратно, но мне просто нужно снова указать размеры, частоту кадров и формат пикселей:

ffmpeg -i input.mp4 -f rawvideo - | \
ffmpeg -f rawvideo -s 1920x1080 -r 60 -pix_fmt yuv420p -i - output.mp4

Конечно, если вы можете транслировать действительные форматы из вашего скрипта - и предпочтительно потоковые форматы, такие как MPEG-2 TS - тогда ffmpeg, конечно, также сможет прочитать его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .