Очень медленный fps при потоковой передаче с веб-камеры - PullRequest
2 голосов
/ 25 марта 2012

Я работал над небольшой программой для веб-камеры на Java, которая захватывает изображения с веб-камеры и затем передает поток видео в другую программу (на другом компьютере) с помощью сокета.

До сих пор я выполнял потоковое видео, но со скоростью примерно 1-5 кадров в секунду, где его можно было бы передавать со скоростью примерно 30 кадров в секунду

Сервер отправляет массив int с данными RGB через te-сокет.Код выглядит следующим образом:

Клиент / получатель

try{    
                Object o;
                o = objInStream.readObject();
                if(o != null){

                    if(o instanceof int[]){
                        videoFeed.setRGB(0,0,640,480,(int[]) o, 0, 640);
                        repaint();
                    }
                }
            }catch(Exception ex){
                System.out.println("Error: " + ex.getMessage());
            }

А отправителем является просто ObjectOutputStream:

outStream.send (image);<--- image - это int [] данных RGB.outStream.flush (); </p>

, затем поток спит в течение (10 миллисекунд).

Здесь можно посмотреть видео со штуковиной: http://www.youtube.com/watch?v=esAMHOdoOUk Примечание: версия в видеопросто выводит изображение на локальный компьютер.

1 Ответ

0 голосов
/ 25 марта 2012

Возможно, вы используете TCP-сокет для передачи.С TCP связано много накладных расходов, поэтому он действительно не подходит для быстрой потоковой передачи видео.

Я предлагаю вместо этого попробовать UDP-сокет, который является очень быстрым (хотя и ненадежным) протоколом.

...