Настройка воспроизведения видео через paslibvlc
Модератор: Модераторы
Настройка воспроизведения видео через paslibvlc
запускаю воспроизведение видео через paslibvlc.
Заметил, что если запущена программа OBS для стриминга на ютуб, которая передает поток с ip камеры
То видео выводимое в моей программе начинает подтормаживать и пропускать кадры.
Если выключить источник (ip камеру) то видео тут же начинает воспроизводиться гладко.
Процессор и память заняты на половину (всей системой конечно), т.е. дело не в нехватке ресурсов.
Если тот же самый видеофайл запустить в тех же условиях в VLC плеере, то там проблема вообще не наблюдается.
Т.е. дело видимо в установках и параметерах запуска видео через paslibvlc.
вывел в своей программе на форму установку 2х параметров - UseOverlay и VideoOutput
т.к. слабо разбираюсь в вопросе воспроизведения видео, просто методом тыка попробовал их перебрать.
Эффекта вообще никакого не заметил.
Есть какие-нибудь идеи как победить?
Заметил, что если запущена программа OBS для стриминга на ютуб, которая передает поток с ip камеры
То видео выводимое в моей программе начинает подтормаживать и пропускать кадры.
Если выключить источник (ip камеру) то видео тут же начинает воспроизводиться гладко.
Процессор и память заняты на половину (всей системой конечно), т.е. дело не в нехватке ресурсов.
Если тот же самый видеофайл запустить в тех же условиях в VLC плеере, то там проблема вообще не наблюдается.
Т.е. дело видимо в установках и параметерах запуска видео через paslibvlc.
вывел в своей программе на форму установку 2х параметров - UseOverlay и VideoOutput
т.к. слабо разбираюсь в вопросе воспроизведения видео, просто методом тыка попробовал их перебрать.
Эффекта вообще никакого не заметил.
Есть какие-нибудь идеи как победить?
jsa
Надо сначала выяснить, чего именно нужно побеждать...
В пакетах FCL есть компонент "libvlc" попробуйте через него проверить. Там есть пара демонстрашек, так что времени на создание проги не потребуется.
Надо сначала выяснить, чего именно нужно побеждать...
В пакетах FCL есть компонент "libvlc" попробуйте через него проверить. Там есть пара демонстрашек, так что времени на создание проги не потребуется.
Vadim писал(а):В пакетах FCL есть компонент "libvlc" попробуйте через него проверить. Там есть пара демонстрашек, так что времени на создание проги не потребуется.
Я с него и начал.
Но там возможностей или по беднее, или они не так просты и явны как в paslibvlc
Не помню точно что, но некоторые вещи просто не знал как сделать.
Надо сначала выяснить, чего именно нужно побеждать...
В этом и загвоздка. Даже не знаю, что гуглить.
На форуме OSB есть рекомендации как снизить нагрузку на процессор и видеокарту. Но тут другой случай.
Загрузки сильной нет. И простой VLC с этим же видео, отлично работает параллельно OBS.
Ощущение, что какие-то специфичные кодеки/режимы/части аппаратного кодека, OBS не может поделить с библиотекой VLC запущенной через paslibvlc
Вот похоже что какие-то специфичные кодековы проблемы, только непонятно какие... А есть возможность заменить аппаратный кодек на софтовый? Сразу говорю, что я не знаю. 
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Судя по всему, программа стриминга зашаривает для себя всю полосу пропускания. Сам vlc скорее всего выдает уже пропущенный через себя поток, а вот у библиотеки воспроизведения нет такой возможности и обе проги просто дерутся за камеру.
А вот, кстати, может в paslibvlc видеобуфер можно увеличить?
Лекс Айрин писал(а):Сам vlc скорее всего выдает уже пропущенный через себя поток, а вот у библиотеки воспроизведения нет такой возможности и обе проги просто дерутся за камеру.
Уточняю.
OBS выдает поток RTSP с камеры
А моя программа и VLC в этом эксперименте играют файл с диска.
Добавлено спустя 50 секунд:
Vadim писал(а):А вот, кстати, может в paslibvlc видеобуфер можно увеличить?
Буфер имеет смысл при воспроизведении потока с камеры, но играется файл с диска.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
jsa, а через какие устройства играется видео и поток с камеры? Дело в том, что в системе несколько устройств для воиспродимого звука и видео и часть из них очень тормозные.
Зря ты думаешь, что видебуфер нужен только для камер. При воиспроизводимого с диска он тоже не помешает.
Посмотри какие кодеки используются при воиспроизведении. Возможно есть более быстрые, которые библиотека не видит. Попробуй задействовать аппаратное ускорение.
Зря ты думаешь, что видебуфер нужен только для камер. При воиспроизводимого с диска он тоже не помешает.
Посмотри какие кодеки используются при воиспроизведении. Возможно есть более быстрые, которые библиотека не видит. Попробуй задействовать аппаратное ускорение.
jsa писал(а):Ощущение, что какие-то специфичные кодеки/режимы/части аппаратного кодека, OBS не может поделить с библиотекой VLC запущенной через paslibvlc
Очень важно знать через что идет зажатие/разжатие.. вполне возможно что проблема сидит не в самом vlc и тем более не в paslibvlc который является оберткой vlc,
А в использовании кодеков и их настройка.
Сами кодеки могут работать с аппаратными устройствами в основном это CPU и GPU(существуют специализированные FPGA платы) и их способность кодировать/ перекодировать может быть разной. Очень серьезно может влиять на аппаратный наличие DMA и правильная настройка IRQ(бывает так что на одном IRQ сидят несколько устройств и процессору еще нужно разобраться кто там звонит, кому высвободит шину данных, в какой очередности и приоритету), даже расположение в PCI(ex) слоту, наличие соседей на слотах может сильно играть на скорость.
Так что не все так просто.
Самый простой способ - поднять натуральный VLC и играть настройками, тем самым понять что нужно сделать.
Очень важно знать...
Спасибо конечно, но это всё чисто теоретические рассуждения. Которые не понятно как применить в paslibvlc
Самый простой способ - поднять натуральный VLC и играть настройками, тем самым понять что нужно сделать.
Сразу написал в первом сообщении - "Если тот же самый видеофайл запустить в тех же условиях в VLC плеере, то там проблема вообще НЕ наблюдается."
P.S.
В VLC пытался понять как выглядят стандартные настройки конфигурации, т.е. те при которых видео нормально воспроизводится, и не смог найти.
И еще попробовал в StartOptions прописать на этапе проектирования хотя бы опцию
--sepia-intensity 250
или
sepia-intensity 250
Но видео не меняется.
Сначала думал что как-то не атк прописываю, но если превысить значение (а максимальное 255) и написать так
--sepia-intensity 300
То видео не воспроизводится. Значит на опцию есть реакция, но какая-то странная.
В итоге. мало того что не понятно какие настройки надо задавать, так еще похоже и задать их толком не получится.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
jsa, возможно тут как с прозрачностью в лазаре -- один параметр включает, а другой регулирует.
Проблему получилось снять, не решить, а снять.
В OBS-studio в настройках видео, стоит Базовое разрешение 1920*1080 и Выходное разрешение 1280*720
Если фильтр масштабирования выбран Метод Ланцоша, то проблема наблюдается.
Если же выбрать один из двух других Бикубический или Билиненый, то проблемы нет.
Это не объясняет почему при Методе Ланцоша, VLC работает нормальное, а pasLibVLC нет.
Но этого достаточно чтобы снять вопрос.
В OBS-studio в настройках видео, стоит Базовое разрешение 1920*1080 и Выходное разрешение 1280*720
Если фильтр масштабирования выбран Метод Ланцоша, то проблема наблюдается.
Если же выбрать один из двух других Бикубический или Билиненый, то проблемы нет.
Это не объясняет почему при Методе Ланцоша, VLC работает нормальное, а pasLibVLC нет.
Но этого достаточно чтобы снять вопрос.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
jsa, потому что указанный метод более ресурсоемкий. Возможно, следует поиграть в программе с размером резервируемой памяти. Той, которая зашаривает изначально. А может быть и так, что библиотеке надо тоже резервировать память, но менеджер памяти просто не может это дело нормально но подхватить.
jsa писал(а):стоит Базовое разрешение 1920*1080 и Выходное разрешение 1280*720
ничего, что у вас двойная обработка потока и резамплинг, что делается скорее всего исключительно средствами CPU?
jsa писал(а):Процессор и память заняты на половину (всей системой конечно), т.е. дело не в нехватке ресурсов.
Нда? А ядер сколько у процессора? Если два, то сказанное выше в реалиях того, что сообщает о загрузке Windows 10, означает вообще то постоянную перегрузку процессора (одно ядро молотит на максимуме, а то что остальные свободны - пофиг. Потому что многопоточность библиотекой вряд ли поддерживается).
SSerge писал(а):ничего, что ...?
Я знаю как ответить на вопросы "Как...?", "Почему...?", "Зачем...?"
Но я не знаю о чем вопрос "Ничего, что...?"
SSerge писал(а):Нда? А ядер сколько у процессора? Если два, то сказанное выше в реалиях того, что сообщает о загрузке Windows 10, означает вообще то постоянную перегрузку процессора (одно ядро молотит на максимуме, а то что остальные свободны - пофиг. Потому что многопоточность библиотекой вряд ли поддерживается).
На вопрос Нда? ответ знаю - Нда.
Если внимательно, а не через строчно читать мое первое сообщение, то там внезапно обнаруживается такая фраза "Если тот же самый видеофайл запустить в тех же условиях в VLC плеере, то там проблема вообще не наблюдается."
А теперь встречный вопрос. Какая тебе разница сколько ядер, на сколько загружено конкретное ядро. И к чему твои заявления о том, что библиотека VLC многопоточность наврятли поддерживает?
Если черным по синему ясно написано, что та же самая библиотека, но используемая НЕ из paslibvlc , а из плеера VLC НОРМАЛЬНО воспроизводит видео паралельно с OBS который жмет поток ресурсоемким методом Ланцоша.
Т.е. ДЕЛО В НАСТРОЙКЕ параметров библиотеки vlc.
