Опции ядра для видеосервера

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-08-15 17:01:30

Код: Выделить всё

посмотреть флаги компиляции для твоего проца
Уже голову сломал, но что-то не понимаю как.
Вы, естественно, не подскажете.
А ман по этому поводу подсказать можете?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-08-15 17:10:24

paradox писал(а):ну тебе уже высказали предположение)) посмотреть флаги компиляции для твоего проца
или гуглить какуюто другую альтернативу
вдруг уже кто то изобрел
хотя вопробуешь еще mencoder может он справиться с задачей
Та не помогает особо это. На семпроне тем более.
В кодировании видео важно дурь самого ядра в гигагерцах, кэша чем больше тем лучше, отсутствие узкого места в виде доступа к памяти.
+ Умение софта распараллелить алгоритмы...
В последнее время использование вычислительной мощности GPU стало радовать. По крайней мере некоторые кодеки/плагины к видео/графике
которые юзают CUDA к примеру, на реальных задачах ОЧЕНЬ сильно повышают быстродействие. Но... на винде :)

Автору вопроса.. FFserver не пробовали ?
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-08-15 17:25:33

Код: Выделить всё

В кодировании видео важно дурь самого ядра в гигагерцах, кэша чем больше тем лучше, отсутствие узкого места в виде доступа к памяти.
Специально в качестве эксперимента взял core2 quad - 12Мб кэша
Чуток лучше стало, но всё-равно - много дропнутых кадров, загрузка проца - под 100%
ffserver пока не пробовал, тут выше высказывалась идея, что стоит попробовать собрать ffmpeg и vlc более новым компилятором.
Вот сижу, собираю gcc45 уже час....

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-08-15 17:33:41

urello писал(а):

Код: Выделить всё

В кодировании видео важно дурь самого ядра в гигагерцах, кэша чем больше тем лучше, отсутствие узкого места в виде доступа к памяти.
Специально в качестве эксперимента взял core2 quad - 12Мб кэша
Чуток лучше стало, но всё-равно - много дропнутых кадров, загрузка проца - под 100%
ffserver пока не пробовал, тут выше высказывалась идея, что стоит попробовать собрать ffmpeg и vlc более новым компилятором.
Вот сижу, собираю gcc45 уже час....
мало чем поможет к сожалению.
Я как то лазил внутрь VLC, оно теоретически не может хорошо работать :)
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-08-15 18:39:32

Попробовал через ffmpeg+ffserver
ffserver стартует нормально, порт слушается
при старте ffmeg

Код: Выделить всё

ffmpeg -i http://192.168.0.100:31344 -ar 22050 -ab 16k -f flv -b 340k -s 480x320 http://localhost:8080/feed1.ffm
имею следующее:

Код: Выделить всё

FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --prefix=/usr/local --mandir=/usr/local/man --enable-shared --enable-gpl --enable-swscale --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-x11grab --enable-memalign-hack --cc=cc --extra-cflags=-msse -I/usr/local/include --extra-ldflags=-L/usr/local/lib  --extra-libs=-pthread --disable-debug --disable-libamr-nb --disable-libamr-wb --disable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --disable-libgsm --disable-vhook --disable-ipv6 --enable-libmp3lame --disable-libopenjpeg --disable-libschroedinger --disable-ffplay --disable-libspeex --disable-libtheora --disable-libvorbis --enable-libx264 --enable-libxvid
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Aug 15 2009 22:51:10, gcc: 4.2.1 20070719  [FreeBSD]

Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 25.00 (25/1)
Input #0, mpegts, from 'http://192.168.0.100:31344':
  Duration: N/A, start: 23792.761311, bitrate: 15192 kb/s
  Program 14
    Stream #0.0[0x1141]: Video: mpeg2video, yuv420p, 704x576 [PAR 12:11 DAR 4:3], 15000 kb/s, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x1142]: Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s
Output #0, flv, to 'http://193.193.192.44:8080/feed1.ffm':
    Stream #0.0: Video: flv, yuv420p, 480x320 [PAR 8:9 DAR 4:3], q=2-31, 340 kb/s, 90k tbn, 25 tbc
    Stream #0.1: Audio: libmp3lame, 22050 Hz, stereo, s16, 16 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
И всё, процесс падает.
Попробова выводить в файл - работает.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-08-15 19:38:09

Попробовал ffmpeg'ом отдавать в фифо, тоже безрезультатно.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-08-15 20:01:20

Сделал таки через фифо
ffmpeg->fifo->vlc
Но есть проблема рассинхронизации видео и аудио, как бороться?
И ещё раз в секунд 30-40 картинка прыгает.
Но, я так понимаю, это проблема клиентских машин?
Как-то побороть можно?

Гость
проходил мимо

Re: Опции ядра для видеосервера

Непрочитанное сообщение Гость » 2009-08-16 0:21:46

начиная с gcc43 есть
  • -ftree-parallelize-loops=n
    • Parallelize loops, i.e., split their iteration space to run in n
      threads. This is only possible for loops whose iterations are
      independent and can be arbitrarily reordered. The optimization is
      only profitable on multiprocessor machines, for loops that are CPU-
      intensive, rather than constrained e.g. by memory bandwidth. This
      option implies -pthread, and thus is only supported on targets that
      have support for -pthread.
а начиная с gcc44 есть Graphite и -ftree-loop-distribution и -floop-parallelize-all
Fastman писал(а):Я как то лазил внутрь VLC, оно теоретически не может хорошо работать
кодирование делает libavcodec из ffmpeg, в коем уйма ассемблерных вставок. А на базовом компилере SSSE3 вставки кои есть Intel Core2 не будут использоваться.

Гость
проходил мимо

Re: Опции ядра для видеосервера

Непрочитанное сообщение Гость » 2009-08-16 7:03:56

кстати, есть еще ffmpeg-mt. Не знаю как там с encoding'ом, но декодинг там неплохо распараллелен. На 1080p каждая нитка кушает процессор не более других.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-08-17 13:57:32

Не выходит пока побороть рассинхронизацию..
Опции -vsync -async не дают результата (хотя если поиграться значениями, можно уронить ffmpeg в кору :-D )
Может есть ещё какие-то способы?

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-11 16:57:27

Попробую реанимировать тему в надежде, что ув. Fastman обратит на неё внимание :)
Проблема в следующем - при ужимании видеопотока, время от времени получаю множество сообщений:

Код: Выделить всё

[mpeg2video @ 0x80370c010]ac-tex damaged at 41 17
[mpeg2video @ 0x80370c010]ac-tex damaged at 13 17
[mpeg2video @ 0x80370c010]ac-tex damaged at 6 18
[mpeg2video @ 0x80370c010]ac-tex damaged at 14 20
[mpeg2video @ 0x80370c010]invalid mb type in P Frame at 40 20
[mpeg2video @ 0x80370c010]ac-tex damaged at 1 21
[mpeg2video @ 0x80370c010]mb incr damaged
[mpeg2video @ 0x80370c010]ac-tex damaged at 3 24
[mpeg2video @ 0x80370c010]ac-tex damaged at 23 24
[mpeg2video @ 0x80370c010]ac-tex damaged at 11 25
[mpeg2video @ 0x80370c010]ac-tex damaged at 3 26
[mpeg2video @ 0x80370c010]ac-tex damaged at 24 27
[mpeg2video @ 0x80370c010]ac-tex damaged at 20 28
[mpeg2video @ 0x80370c010]invalid mb type in P Frame at 28 29
[mpeg2video @ 0x80370c010]mb incr damaged
[mpeg2video @ 0x80370c010]ac-tex damaged at 18 31
[mpeg2video @ 0x80370c010]invalid mb type in P Frame at 13 32
[mpeg2video @ 0x80370c010]ac-tex damaged at 16 33
[mpeg2video @ 0x80370c010]ac-tex damaged at 32 35
[mpeg2video @ 0x80370c010]end mismatch left=541 28564C
[mpeg2video @ 0x80370c010]concealing 1320 DC, 1320 AC, 1320 MV errors
При этом картинка замирает, звук квакает.
Но, если настроить ffmpeg или vlc просто на ретрансляцию потока - без перекодирования и ужатия - тогда все прекрасно картинка отличная.
Если моя логика верна, то проблема в mpeg2 декодере.
В связи с этим возникает вопрос: можно ли попросить ffmpeg юзать другой mpeg2 декодер, скажем libmpeg2 вместо libavcodec?

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-09-11 17:22:29

При этом картинка замирает, звук квакает.
Но, если настроить ffmpeg или vlc просто на ретрансляцию потока - без перекодирования и ужатия - тогда все прекрасно картинка отличная.
Если моя логика верна, то проблема в mpeg2 декодере.
В связи с этим возникает вопрос: можно ли попросить ffmpeg юзать другой mpeg2 декодер, скажем libmpeg2 вместо libavcodec?
Юзать можно любые кодеки:
-vcodec - кодек для видео
-acodec - кодек для аудио

Ну выкинтье конфиг поглядеть... может вы какие нить фильтры навешали или дикий ресайз картинки или еще чего нить.
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-11 17:31:04

Fastman писал(а): Юзать можно любые кодеки:
-vcodec - кодек для видео
-acodec - кодек для аудио
пробовал разные, но ведь это кодеки выходного потока, а у меня проблема при декодировании потока
Fastman писал(а):Ну выкинтье конфиг поглядеть... может вы какие нить фильтры навешали или дикий ресайз картинки или еще чего нить.
ffmpeg запускаю из шелла с такими параметрами:

Код: Выделить всё

ffmpeg -i http://192.168.0.100:31344 -copyts -isync -async 5 -vcodec flv -acodec libmp3lame -ar 22050 -ab 32k -f flv -b 128k -s cif -y file

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-09-11 17:45:12

Честно говоря слабо понял что вы делаете...
Почему в качестве входного формата у вас сьем стрима с http ???
Поясните схему....
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-11 18:47:46

Дримбокс (192.168.0.100) принимает канал со спутника и стримит его на свой порт 31344
ffmpeg забирает поток с 192.168.0.100:31344 перекодирует и отдаёт в fifo
vlc забирает из fifo и вещает на порт 8080
веб страница с кодом плеера, плеер забирает поток с 8080

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-09-12 17:20:00

urello писал(а):Дримбокс (192.168.0.100) принимает канал со спутника и стримит его на свой порт 31344
ffmpeg забирает поток с 192.168.0.100:31344 перекодирует и отдаёт в fifo
vlc забирает из fifo и вещает на порт 8080
веб страница с кодом плеера, плеер забирает поток с 8080
1. Почему сразу не отдавать поток с дримбокса на VLC ???
2. Попробуй жать поток mencoder-ом
3. Пробовать вещать ffserver-ом
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-12 23:01:47

Предложенные вами варианты уже были перепробованы.
Однако, с того времени поменялось железо (спалил мать), проц был core2quad, стал Pentium4 3.20GHz.
Поэтому я решил попробовать ещё раз, и, о чудо, вариант с vlc заработал :-D

Код: Выделить всё

vlc -vvv http://192.168.0.100:31344 --sout '#transcodе{vcodec=FLV1,vb=340,width=480,height=360,fps=24,acodec=mp3,samplerate=22050,channels=1,ab=32}:std{access=http,dst=193.193.192.44:8080/stream.flv}'
на core2quad этот вариант полностью сжирал проц и видео лагало.
на Pentium4 загрузка проца тоже весьма велика:

Код: Выделить всё

last pid:  1176;  load averages:  0.99,  0.92,  0.76                                                  up 0+01:33:23  02:58:40
43 processes:  2 running, 41 sleeping
CPU: 49.1% user,  0.0% nice,  0.4% system,  0.6% interrupt, 50.0% idle
Mem: 33M Active, 12M Inact, 41M Wired, 4K Cache, 19M Buf, 885M Free
Swap: 1267M Total, 1267M Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
 1126 video             11  47    0   172M 33356K ucond  0   0:57 74.27% vlc
Но пока работает отлично, картинка стабильная, надеюсь процу не поплохеет :unknown:

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-09-12 23:08:41

Я не смог заставить VLC работать нормально.
работы 24x7 не получается.... Виснет зараза часто, звук пропадает...
Для дома может ваш варианти покатит... но меня домашние решения не устраивают :)))
Если будут мысли или новые находки - пиши, эта тема слабо окучена :)
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-12 23:35:34

Сперва пробовал ffserver, но он у меня даже не запустился (

Код: Выделить всё

[root@vidoe ~]# /usr/local/etc/rc.d/ffserver start
[: /usr/local/bin/ffserver: unexpected operator
Starting ffserver.
[root@vidoe ~]# FFserver version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --prefix=/usr/local --mandir=/usr/local/man --enable-shared --enable-gpl --enable-swscale --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-x11grab --enable-memalign-hack --cc=cc --extra-cflags=-msse -I/usr/local/include --extra-ldflags=-L/usr/local/lib  --extra-libs=-pthread --disable-debug --disable-libamr-nb --disable-libamr-wb --disable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --disable-libgsm --disable-vhook --disable-ipv6 --enable-libmp3lame --disable-libopenjpeg --disable-libschroedinger --disable-ffplay --disable-libspeex --disable-libtheora --disable-libvorbis --enable-libx264 --enable-libxvid
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Sep 11 2009 20:45:05, gcc: 4.5.0 20090820 (experimental)
Sun Sep 13 03:33:28 2009 Could not start server

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-19 23:35:26

Стабильность vlc не вызвала претензий за неделю работы, хотя не 24/7, а только рабочий день.
Но картинка время от времени "квадратизировалась" :cz2: и это очень раздражало.
Я таки осилил вариант с mencoder'ом и не разочаровался - качество картинки намного превосходит таковое у vlc и ffmpeg
в связи с этим возникают вопросы:
- может ли mencoder кодировать поток в несколько битрейтов как vlc?
- как лучше отдавать поток на сервер (я по-прежнему использую fifo)?

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: Опции ядра для видеосервера

Непрочитанное сообщение Fastman » 2009-09-21 10:57:29

urello писал(а): - может ли mencoder кодировать поток в несколько битрейтов как vlc?
Не понял немного..может не знаю всех нюансов....
urello писал(а): - как лучше отдавать поток на сервер (я по-прежнему использую fifo)?
Тогда смысла дергаться нету если работает :)
Главное в жизни здоровье и любовь, остальное я все куплю.

urello
рядовой
Сообщения: 44
Зарегистрирован: 2009-07-30 20:56:54

Re: Опции ядра для видеосервера

Непрочитанное сообщение urello » 2009-09-21 16:14:38

В vlc есть возможность клонирования потока.
То есть из одного входящего потока можно сделать несколько исходящих в разных форматах/битрейтах.
Может ли такое mencoder?

warzoni
сержант
Сообщения: 186
Зарегистрирован: 2008-07-04 17:17:59
Откуда: Ukraine,Kiev
Контактная информация:

Re: Опции ядра для видеосервера

Непрочитанное сообщение warzoni » 2009-09-21 17:12:37

urello писал(а):Добрый день!
Имеется сервер freebsd7.2 на нем поднят vlc принимающий, перекодирующий и отдающий видеопоток.
Проц sempron 3200+, при старте vlc отжирает весь проц, картинка рассыпается.
Если отдавать поток без перекодировки - всё отлино.
Возможно ли решить эту проблему на данном процессоре, добавив какие-либо опции в ядро?

Код: Выделить всё

Возможно ли решить эту проблему на данном процессоре, добавив какие-либо опции в ядро?
в FreeBSD всё возможно, на фрибзд строилась, матритца(Фильм кто помнит НЕО и т п ), великие фильмы строятца на великих системах такшо всё возможно :smile: