FFmpeg





FFmpeg


zacc23 отредактировал эту страницу 28 мая · 1 редакция

создание флеш-роликов с помощью FFmpeg



режиссер


Отправка в реальном времени ( -re) тестового источника видео на /dev/video1устройство V4L2:ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1
Чтобы показать статическое изображение, возможно , потребуется установить формат вывода: ffmpeg -loop -1 -re -i foo.jpg -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video1. Обратите внимание, что -loopпараметр назван -stream_loopв более новых версиях FFmpeg.
Если у вас более старая версия FFmpeg, вы можете положиться на GStreamer: это фиктивный производитель, использующий GStreamer, принудительно устанавливающий формат на I420 (я не уверен, нужен ли это, возможно, нет)
gst-launch -v videotestsrc ! "video/x-raw-yuv,width=640,height=360,framerate=30/1,format=(fourcc)I420" ! v4l2sink device=/dev/video1

потребитель


это кодирует вывод v4l2loopback во флэш-видео и записывает его в /tmp/flash.flv
ffmpeg -f video4linux2 -s 640x360 -i /dev/video1 -r 30 -vcodec libx264 -vpre placebo -b 800k -coder 0 -g 2 -bf 0 -ab 64k -f flv /tmp/flash.flv

Использование камеры Raspberry PI в качестве сетевой веб-камеры


Ваш босс хочет, чтобы вы использовали Webex, но у вас нет доступной камеры, но есть модуль камеры raspberrypi + (CSI)? Нет проблем. Создайте сетевую веб-камеру за минуту. С помощью ffmpeg + v4l2loopback.

Приведите в действие камеру raspberrypi (сервер камеры)


Для потоковой передачи данных камеры (необработанный поток h264, 1280x720 и 1 МБит / с) по сети просто используйте команду raspivid:
raspivid -t 0 -hf -fps 30 -w 1280 -h 720 -b 1000000 -l -o tcp://0.0.0.0:5000
Итак, tcp-сервер готов доставить наши данные. Если вы не хотите ограничивать пропускную способность данных h264, просто опустите параметр -b.

Поднимите ffmpeg с помощью v4l2loopback (клиент, который получает видеопоток)



Конфигурация v4l2loopback


Во-первых, вам нужно запустить устройство / dev / video0, которое принимает firefox:
modprobe v4l2loopback devices=1 max_buffers=2 exclusive_caps=1 card_label="VirtualCam #0"
Обязательно запускайте эту команду от имени пользователя root. В противном случае загрузка модуля ядра невозможна.

запуск потока ffmpeg


Теперь последний шаг. Получим поток из сети и запишем его на устройство / dev / video0:
ffmpeg -f h264 -i tcp://RASPICAM:5000 -f v4l2 -pix_fmt yuv420p /dev/video0
Установите RASPICAM на ваше имя хоста / IP-адрес raspberrypi с камерой.

БОНУС: Пусть ваша видеокарта сделает тяжелую работу (NVIDIA с VDPAU)


Чтобы выгрузить декодирование графики h264 на вашу видеокарту через VDPAU, вы можете сделать это:
ffmpeg -f h264 -hwaccel vdpau -i tcp://goldeneye:5000 -f v4l2 -pix_fmt yuv420p /dev/video0
Ваша видеокарта теперь сделает всю тяжелую работу. Проверьте top / htop, если ваша задача ffmpeg меньше загружена.

Содержание