Статья взята с habrahabr.ru, ещё не пробовал делать то, что тут написано...
Для организации трансляции нам потребуется:
© Wikipedia
ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.
Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть несколько, так же как и отдаваемых (выходных).
FFmpeg у нас будет захватывать видео с веб-камеры или читать из файла.
Практика
Сначала настроим ffserver, чей конфиг лежит в /etc/ffserver.conf:
Пускаем ffmpeg:
-s разрешение, указанное в конфиге ffserver, -r количество кадров/секунду, -f формат, -i путь к камере (или к видео-файлу), http://localhost:PORT/FEED это адрес, где ffserver будет ждать наш поток
PS: если выдаст ошибку, то можно попробовать формат v4l (-f video4linux)
Открываем в браузере http://localhost:8090/test.swf и широко улыбаемся:)
Для отправки видео поменяем параметр -i на путь к файлу, уберём -f (ffmpeg сам определит формат файла):
Ну а что бы вставить нашу флешку в html-страницу используем следующий код:
Q: А можно ли экран потоково отдавать, Х11 должен же иметь какой-то девайс в /dev?
A: Да, можно.
ffmpeg -f x11grab -r 30 -s 352x288 -i :0.0 localhost:8090/feed.ffm
Если будете менять разрешение, то и в конфиге ffserver не забудьте.
Для организации трансляции нам потребуется:
- Linux
- FFmpeg (включает в себя ffserver)
FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».
© Wikipedia
ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.
Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть несколько, так же как и отдаваемых (выходных).
FFmpeg у нас будет захватывать видео с веб-камеры или читать из файла.
Практика
Сначала настроим ffserver, чей конфиг лежит в /etc/ffserver.conf:
Пускаем ffserver:
- Port 8090
- BindAddress 0.0.0.0
- MaxClients 100
- MaxBandwidth 20000
- NoDaemon
- # Фид, надо запомнить feed.ffm, он нам потребуется при запуске ffmpeg
- File /tmp/feed.ffm
- FileMaxSize 3M
- # Ранее объявленный фид
- Feed feed.ffm
- Format flv
- VideoCodec flv
- VideoFrameRate 30
- VideoBufferSize 80000
- VideoBitRate 200
- # Качество видео от 1 до 31, 1 == отлично 31 == фи!
- VideoQMin 1
- VideoQMax 5
- # Разрешение, везде должно быть одинаково!
- VideoSize 352x288
- PreRoll 1
- # Если у вас есть микрофон, или вы транслируете видео со звуком, закомментируйте эту строчку
- Noaudio
- # Флешка test.swf для просмотра трансляции
- Feed feed.ffm
- # Будет запускаться в Adobe Flash Player
- Format swf
- VideoCodec flv
- VideoFrameRate 30
- VideoBufferSize 50000
- VideoBitRate 100
- VideoQMin 1
- VideoQMax 5
- # Разрешение, везде должно быть одинаково!
- VideoSize 352x288
- PreRoll
- # Если у вас есть микрофон, или вы транслируете видео со звуком, закомментируйте эту строчку
- Noaudio
$ ffserver
Пускаем ffmpeg:
$ ffmpeg -s 352x288 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm
-s разрешение, указанное в конфиге ffserver, -r количество кадров/секунду, -f формат, -i путь к камере (или к видео-файлу), http://localhost:PORT/FEED это адрес, где ffserver будет ждать наш поток
PS: если выдаст ошибку, то можно попробовать формат v4l (-f video4linux)
Открываем в браузере http://localhost:8090/test.swf и широко улыбаемся:)
Для отправки видео поменяем параметр -i на путь к файлу, уберём -f (ffmpeg сам определит формат файла):
$ ffmpeg -s 352x288 -r 30 -i ~/big_buck_bunny.ogg http://localhost:8090/feed.ffm
Ну а что бы вставить нашу флешку в html-страницу используем следующий код:
src="http://localhost:8090/test.swf" width="550" height="400"></embed>
Q: А можно ли экран потоково отдавать, Х11 должен же иметь какой-то девайс в /dev?
A: Да, можно.
ffmpeg -f x11grab -r 30 -s 352x288 -i :0.0 localhost:8090/feed.ffm
Если будете менять разрешение, то и в конфиге ffserver не забудьте.
1 коментар:
выдает вот такую вот срань
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[video4linux2 @ 0x1ab07a0] Cannot find a proper format for codec_id 0, pix_fmt -1.
/dev/video0: Input/output error
уже перепробовал что только можно - не работает, думал проблема в Raspberry и том, что используется ARM - пробую на обычном Intel тоже самое. Куда капать?
Дописати коментар