Жители переполнения стека Мне нужны ваши знания. Я работаю над системой обработки видео, использующей WPF и базовые коммуникации сокетов C # .NET. Каждый клиент передает видео данные со скоростью 30 кадров в секунду на сервер в среде локальной сети для обработки. Часть обработки обрабатывается каждым клиентом для уменьшения нагрузки на сервер.
Я изучил программирование в среде, в которой аппаратные ограничения никогда не были проблемой. Видео меняет это .. "Hello World" не подготовил меня к этому, мягко говоря. Реализация любого из этих двух перспективных методов не является серьезной проблемой. Определение того, чему я должен посвятить свое время и энергию, - это то место, где мне нужна помощь.
У меня есть два варианта (но открыты для предложений!), При условии, что аппаратное обеспечение ограничивает получение клиентами результатов, максимально приближенных к реальному времени:
- Клиент в очереди--
Клиент обрабатывает очередь видеокадров. Каждый кадр обрабатывается и затем отправляется через TCP-пакеты на сервер для дальнейшего анализа. Эта система обрабатывает только один кадр за раз в порядке захвата датчика и передает его на сервер через клиент статического сокета. * Эта система не может использовать преимущества современного многоядерного оборудования.
- резьбовой клиент--
Клиент использует потоковую (фоновую обработку) обработку и передачу каждого кадра на сервер. Каждый новый кадр запускает новый поток обработки, а также создание нового класса сетевого взаимодействия. * Эта система использует современное оборудование, но может вызывать серьезные проблемы со временем.
К сути моего вопроса, привносит ли многопотоковое общение в основном порядок? Я уже планирую синхронизировать видеокадры между клиентами на стороне сервера ... но доставка данных будет настолько нарушена, что создаст новую проблему? Напомним, что это связь по локальной сети.
Что еще более важно, будет ли создание нового класса связи сокетов, а также нового (простого) класса обработки видео создавать достаточные издержки, чтобы каждый кадр НЕ ставился в очередь или обрабатывался параллельно?
Код только начинает обретать форму. Аппаратное обеспечение клиентских систем неизвестно, и поэтому их производительность не может быть определена. Как бы вы продолжили разработку?
Я студент колледжа. Таким образом, любой вклад помогает мне в разработке моего первого реального применения моих знаний.