medva1997

Чем заменить таймер при работе с видеопотоками с камер

27.06.2014, 21:52. Показов 1184. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Пишу программу для работы с несколькими потоками видео (пользуюсь AForge.NET) и столкнулся с проблемой работы таймера. На вход поступает несколько потоков: с камер, по сети, захват видео с экрана. Задача программы - выбирать источник сигнала для дальнейшей трансляции. На выходе нужно записывать в файл итоговый
поток и в отдельные файлы - каждый из исходных потоков.
Селектор работает, выходной поток пишется. Но когда пытаюсь записывать в файлы более одного потока, возникает проблема.
Сейчас использую следующий прием: есть некая функция, которая вызывается по таймеру раз в 31 мс, и она выполняет запись.
Однако в итоге в выходные файлы попадает не по 30 кадров в секунду, а меньше. есть ощущение, что таймер отрабатывает не системное прерывание по прошествию кванта времени, а реализует функцию sleep - спит указанное время. Т.е. сперва пытаются отрабатывать функции записи в файлы, на что расходуется время, затем программа спит, в результате цикл занимает не 31 мс, а больше, и кадров записывается меньше. Диспетчер задач показывает, что загрузка ЦП и диска до предельной очень далека (50% и 2% соответственно).

Можете ли порекомендовать что-нибудь для решения данной проблемы?

Для лучшего понимания сделанного привожу код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 private void Form1_Load(object sender, EventArgs e)
        {           
            time = new System.Windows.Forms.Timer();
            time.Interval = 31;
            time.Enabled = true;
            time.Tick += time_Tick;
            time.Start();
        }
 
      private void time_Tick(object sender, EventArgs e)
      {
            for (int i = 0; i < number_of_small_panels; i++)// number_of_small_panels=6
             {
                preview[i].videowriter();// запись нового кадра файл (работает несколько Миллисекунд)
 
              }
          //...  другой фрагмент кода
      }           
 
   //другой класс
     public void videowriter()
        {
            if (Videowriter1 != null)
            {
                Videowriter1.WriteVideoFrame(Videosoursecach);
            }
 
        }
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2014, 21:52
Ответы с готовыми решениями:

Экран гаснет на секунду при любой работе пк. Не понимаю с чем связано и что заменить
Здравствуйте, такая проблема: при любом использовании ПК(даже в режиме блокировки) иногда пропадает на 1 и снова появляется видео с пк. ...

Чем можно заменить таймер в приложении
гуглик гуглил, но разобраться какой цикл нужен для моего случая я не понял сейчас я использую вместо цикла &quot; таймер&quot; но он...

Не срабатывает таймер при работе с AJAX
Подскажите, что не так-то? &lt;%@ Page Language=&quot;vb&quot; AutoEventWireup=&quot;false&quot; CodeBehind=&quot;Default.aspx.vb&quot;...

1
Эксперт .NET
 Аватар для insite2012
5546 / 4309 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
27.06.2014, 21:56
medva1997, создайте несколько потоков, каждый будет делать свое дело.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2014, 21:56
Помогаю со студенческими работами здесь

В чем ошибка при работе с Firebird?
Здравствуйте. В баттоне код: Form1-&gt;IBQuery1-&gt;SQL-&gt;Clear(); Form1-&gt;IBQuery1-&gt;SQL-&gt;Add(&quot;SELECT * FROM TABLENAME&quot;); ...

сма DAEWOO DWD M1029A чем заменить транс, трансформатор в обрыве, чем заменить
день добрый. модуль PN:361430A950 первичная транса в обрыве . может кто подскажет параметры , или советом о замене . есть лыжевский на...

В чем моя ошибка при работе с массивом?
Написал код для заполнения выпадающего списка Combobox.ПРивожу код model=data; ...

PhpWord: в чём ошибка при работе с шаблоном?
Нужно создавать документы по шаблону. Если создавать документ на пустом месте, всё проходит нормально, но тут не происходит ни сохранения...

Чем забивается оперативная память при длительной работе ?
В последнее время стал замечать, что сумма используемой памяти в списке всех процессов не соответствует действительности. С вечера всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru