Andy home page
Главное меню
Главная
Категории
Статьи
Файлы
Ссылки
Архив
Поиск
Галлерея
Гостевая
Опросы
Сетевой калькулятор
NES Emulator
Музей
Обратная связь

Кто на сайте
Добро пожаловать,
Гость

ВойтиВойти
РегистрацияРегистрация
Забыли Пароль?Забыли Пароль?

Посетителей онлайн
ПользователейПользователей: 0
ГостейГостей: 15
_BOTБотов: 1
ВсегоВсего: 16

Server Time
Время: 11:11:16
Дата: 11/10/24
Календарь
Ссылки

Трансляция видео с помощью ffmpeg (avconv)
Напечатать текущую страницу
Linux

Трансляция видео с помощью ffmpeg (avconv)



Захват видео с web-камеры и трансляция его в сеть

Установка:

$apt-get -y install ffmpeg

Список видео устройств:

Используйте утилиту v4l2-ctl для получение списка устройств:

$apt-get install v4l-utils
$v4l2-ctl --list-devices
Vimicro USB 2.0 PC Camera (Venu (usb-bcm2708_usb-1.3):
        /dev/video0

Для настройки web-камеры установим утилиту v4l-conf, для работы требуются X:

$apt-get install v4l-conf

Список аудио устройств:

$arecord -l
**** Список CAPTURE устройств ****
карта 0: Intel [HDA Intel], устройство 0: ALC272 Analog [ALC272 Analog]
  Подустройства: 1/1
  Подустройство №0: subdevice #0

Возможности устройства

Для просмотра списка доступных форматов конкретного устройства ввода:

$avconv -f video4linux2 -list_formats all -i /dev/video0
avconv version 0.8.13-6:0.8.13-1+rpi1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 29 2014 02:09:52 with gcc 4.6.3
[video4linux2 @ 0xf297c0] R :   yuyv422 :     YUV 4:2:2 (YUYV) : 640x480 352x288 320x240 176x144 160x120

Настройка сервера

Список кодеков $avconv -codecs

Список форматов $avconv -formats

 

Для потокового вещания в пакет ffmpeg входит утилита avserver - которая получает видеопоток от ffmpeg, или с удаленной машины.

Пример конфигурация avserver по умолчанию расположен/etc/avserver.conf

Создадим файл настроек:

$touch /etc/avserver-custom.conf

$nano /etc/avserver-custom.conf

Получаемый поток называется Feed, потоков может быть несколько.

содержимое файла:

# Порт, на котором сервер слушает. Вы должны выбрать другой
# Порт от стандартного HTTP веб-сервер, если он работает на том же самом
# Компьютере.
Port 8090
# Для доступа с любого адреса введите 0.0.0.0
BindAddress 0.0.0.0
# Количество одновременных соединений HTTP, которые могут быть обработаны.
MaxHTTPConnections 2000
# Количество одновременных запросов, которые могут быть обработаны.
MaxClients 1000
# максимальное пропускная способность в кбит / сек
MaxBandwidth 9000
# Файл журнала
CustomLog /var/log/ffserver-access.log
# Создание каналов передачи данных, каждый фид содержит один поток
<Feed webcam.ffm>
    # Временный файл
    File /tmp/webcam.ffm
    # Максимальный размер временного файла
    FileMaxSize 30M
    # Команда для запуска источника.
    Launch ffmpeg -s 640x480 -f video4linux2 -i /dev/video0 -f alsa -i hw:0 -vol 10 -ac 1
</Feed>
# Теперь вы можете определить каждый поток, который будет сформирован из
# Оригинального аудио и видео потока. Каждый формат имеет имя файла (здесь
# webcam.mpg). avserver пошлет этот поток при ответе на
# Запрос, содержащий имя этого файла.
<Stream webcam.mpg>
    # Источник
    Feed webcam.ffm
    # формат потока
    Format mpg
    # кодек
    VideoCodec mpeg2video
    # Колество кадро в секунду
    VideoFrameRate 25
    # Размер буфера
    VideoBufferSize 500
    # Битрейт
    VideoBitRate 200
    # Качество
    VideoQMin 1
    VideoQMax 5
    # Размер должен совпадать с размером видео на источнике
    VideoSize 640x480
    # Время ожидания перед началом отправки данных клиенту (в секундах)
    #PreRoll 1
    # Звук можно не транслировать
    # NoAudio
    # выбор аудио кодека
    AudioCodec libmp3lame
    # Количество аудиоканалов: 1 = моно, 2 = стерео
    AudioChannels 1
    # Битрейт аудио потока. Кодеки обычно поддерживают только несколько различных скоростей 
    #  передачи битов.
    AudioBitRate 128
    # Частота дискретизации для аудио. При использовании низких битрейтов, вы должны
    # Понизить частоту до 22050 или 11025. Поддерживаемые частоты
    # Зависит от выбранного аудиокодека. 
    AudioSampleRate 44100 
</Stream>

# Статус сервера
<Stream index.htm>
    Format status
</Stream>

Теперь можно запустить сервер:

$avserver -d -f avserver.conf

-d – вывод сообщений для отладки.

результат запуска сервера


avserver version 0.8.13-6:0.8.13-1+rpi1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 29 2014 02:09:52 with gcc 4.6.3
Mon Oct  4 01:06:43 2014 AVserver started.
Mon Oct  4 01:06:43 2014 Launch command line: avconv -s 640x480 -r 30 -f video4linux2 -i /dev/video0 http://127.0.0.1:900/feed.ffm
avconv version 0.8.13-6:0.8.13-1+rpi1, Copyright (c) 2000-2014 the Libav developers
  built on Jul 29 2014 02:09:52 with gcc 4.6.3
[video4linux2 @ 0x8f3bc40] Estimating duration from bitrate, this may be inaccurate
Input #0, video4linux2, from '/dev/video0':
  Duration: N/A, start: 288826.276787, bitrate: 147456 kb/s
    Stream #0.0: Video: rawvideo, yuyv422, 640x480, 147456 kb/s, 30 tbr, 1000k tbn, 30 tbc
[buffer @ 0x8f3c1a0] w:640 h:480 pixfmt:yuyv422
[avsink @ 0x8f3bbe0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x8f3d660] w:640 h:480 fmt:yuyv422 -> w:640 h:480 fmt:yuv420p flags:0x4
Mon Oct  4 01:06:44 2014 127.0.0.1 - - New connection: POST /feed.ffm
Output #0, ffm, to 'http://127.0.0.1:900/feed.ffm':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s, 1000k tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> mpeg1video)
Press ctrl-c to stop encoding
frame=  166 fps= 30 q=11.5 size=     376kB time=5.50 bitrate= 560.0kbits/s dup=120 drop=0


При копировании материалов ссылка на сайт обязательна


Добавлена: 11/11/2014 · Автор: admin

Просмотров: 6160

Оценить:
Social net
Сатьи

Все статьи
Друзья
Сайт skeletora
ОНАПТ
OLD-HARD.RU


Webmaster Andy
Copyright©1998-2014 Odessa


Открытие страницы: 0.13 секунды и 9 запросов к БД
Хостинг
Регистрация домена
free counters