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 меньше загружена.
Содержание