С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/32: Рейтинг темы: голосов - 32, средняя оценка - 4.53
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
1

IP камера. Вывести в pictureBox видео с камеры

14.10.2014, 09:40. Просмотров 6202. Ответов 24
Метки нет (Все метки)

Есть китайская айпи камера ( без модели), видео доступно в веб интерфейсе, очистив код от лишних элементов получил вот это

Javascript
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
var isopen = 1174975860;
var timerval=60;
function loadnextimage(){
isopen++;
tmpimage.src="http://192.168.1.100/image.jpg?cachebust="+isopen+"&a=0";
}
function setuptimer(){
setTimeout("loadnextimage()", timerval);
}
var isopen=Math.round(1000000+(Math.random() * 1000000));
tmpimage = new Image();
var first = 1;
function doimage() {
document.images.webcam.src=tmpimage.src;
setuptimer();
}
function firstimage() {
if (first == 1) {
first=0;
isopen++;
tmpimage.onload=doimage;
tmpimage.onerror=doimage;
tmpimage.src="http://192.168.1.100/image.jpg?cachebust="+isopen+"&a=0";
}
}
document.write('<A HREF="http://192.168.1.100/image.jpg" target=_blank><IMG border=0 SRC="http://192.168.1.100/image.jpg?cachebust='+isopen+'&a=0" name=webcam onload="firstimage()"></A>');

http://192.168.1.100/ - это постоянный адрес айпи камеры. На страничке с таким кодом присутствует только квадратик с видео, как и нужно .... это видео я хочу вывести в поле картинки на форме... деалал так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string sourceURL = textBox1.Text;
            byte[] buffer = new byte[100000];
            int read, total = 0;
            // Создание HTTP запрос 
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sourceURL);
   //         req.Credentials = new NetworkCredential();//("username", "pass");
            // Получить ответ 
            WebResponse resp = req.GetResponse();
            // Получить поток ответа 
           Stream stream = resp.GetResponseStream();
            // Чтение данных из потока 
            while ((read = stream.Read(buffer, total, 1000)) != 0)
            {
                total += read;
            }
            // Получить растровое изображение 
            Bitmap bmp = (Bitmap)Bitmap.FromStream(new MemoryStream(buffer, 0, total));
            pictureBox.Image = bmp;
и так

"pictureBox1.Load("http://192.168.1.100/image.jpg");"

и вот так
C#
1
2
3
4
5
6
Bitmap loadedBitmap = null; 
 
            WebRequest request = FileWebRequest.Create(textBox1.Text);
            Stream stream = request.GetResponse().GetResponseStream();
            Image image = Image.FromStream(stream);
             pictureBox.Image = new Bitmap(image);

процедура всех 3 вариантов вызывал таймером через 50 - 200 мсек...

на камере длинк 920 все 3 варианта работают ..... на этой нет ..... никаких авторизаций на камерах нет...


1LTC тому чьи ответы внесут наибольший вклад в решение проблемы... если конечно удастся решить
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2014, 09:40
Ответы с готовыми решениями:

Просмотр видео с ip камеры
У меня есть камера от TRENDNet. Мне нужно получить с неё видео.Максимум что у...

Видео с веб камеры
Как получить видео с веб камеры в С# без сторонних библиотек типа Emgu?

Видео по rtsp из ip камеры
Доброго всем времени. Есть задача, подключиться к камере на чипе H3518e по...

Видео с камеры, подкл к vga
Я подключил беспроводную камеру (что-то вроде этой:...

EmguCV: нет захвата видео с камеры
Добрый день уважаемые форумчане! Реализовываю приложение, считающее количество...

24
meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
14.10.2014, 09:47 2
Sasha777777, а компонент браузера использовать никак?
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
14.10.2014, 09:50  [ТС] 3
webBrowser1 - пробовал , он загружает страничку и всё ... кадр не обновляется, в результате там вместо видео фотография на момент загрузки, вызов таймером не проканал, слишком долго выполняется и через некоторое время вылетает с ошибкой...
0
meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
14.10.2014, 10:01 4
Sasha777777, а в обычном браузере показывает нормально, типа хрома?
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
14.10.2014, 10:03  [ТС] 5
да, нормальная картинка с фпс около 15
0
meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
14.10.2014, 10:07 6
C#
1
2
3
4
5
while(true) {
pictureBox1.Load("http://192.168.1.100/image.jpg");
pictureBox1.Refresh();
Thread.Sleep(15);
}
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
14.10.2014, 10:24  [ТС] 7
это схоже с моим 2-м вариантом... через час смогу проверить, но сомневаюсь, что покажет я так пробовал на месте изображения был красный крестик
0
meksik
202 / 171 / 67
Регистрация: 04.10.2014
Сообщений: 839
14.10.2014, 10:47 8
Sasha777777, так я ориентировался на ваш вариант, просто изменил немного, хз мб сработает, время остановки потока рандомное поставил, надо побольше полюбэ
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
14.10.2014, 11:33  [ТС] 9
нет, не работает
0
freeba
Неадекват
1279 / 1076 / 206
Регистрация: 02.04.2010
Сообщений: 2,473
Записей в блоге: 2
Завершенные тесты: 2
14.10.2014, 13:10 10
Зачем эти ручные пляски с бубном?

Используйте AForge он умеет с ip камерами работать.
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
15.10.2014, 09:25  [ТС] 11
не получается, на одной камере вместо изображения красный квадрат с диагоналями, вторую пока не могу проверить, комп не видит фреймвёрк Aforge, не знаете почему? уже дважды переустановил

Добавлено через 11 минут
зарегистрировал вручную, после старта вылетает с ошибкой "сервер нарушил протокол".... что бы это могло значить?
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
17.10.2014, 08:41  [ТС] 12
если делаю стандартный код как по ссылке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// create JPEG video source
JPEGStream stream = new JPEGStream(
        "http://<axis_camera_ip>/axis-cgi/jpg/image.cgi" );
// set NewFrame event handler
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
// start the video source
stream.Start( );
// ...
// signal to stop
stream.SignalToStop( );
// ...
 
private void video_NewFrame( object sender,
        NewFrameEventArgs eventArgs )
{
    // get new frame
    Bitmap bitmap = eventArgs.Frame;
    // process the frame
}
то в процедуру video_NewFrame вообще не заходит, если меняю .cgi на .jpg то картинка не идёт, на форме красный крестик, а значения равны:

- eventArgs {AForge.Video.NewFrameEventArgs} AForge.Video.NewFrameEventArgs
- base {AForge.Video.NewFrameEventArgs} System.EventArgs {AForge.Video.NewFrameEventArgs}
- Статические члены
Empty {System.EventArgs} System.EventArgs
- Frame {System.Drawing.Bitmap} System.Drawing.Bitmap
- base {System.Drawing.Bitmap} System.Drawing.Image {System.Drawing.Bitmap}
- base {System.Drawing.Bitmap} System.MarshalByRefObject {System.Drawing.Bitmap}
- Члены, не являющиеся открытыми
+ [System.Drawing.Bitmap] {System.Drawing.Bitmap} System.Drawing.Bitmap
__identity null object
Identity null object
Flags 73744 int
- FrameDimensionsList {System.Guid[1]} System.Guid[]
- [0] {7462dc86-6180-4c7e-8e3f-ee7333a7a483} System.Guid
+ Статические члены
+ Члены, не являющиеся открытыми
Height 120 int
HorizontalResolution 96.0 float
- Palette {System.Drawing.Imaging.ColorPalette} System.Drawing.Imaging.ColorPalette
Entries {System.Drawing.Color[0]} System.Drawing.Color[]
Flags 1952579622 int
+ Члены, не являющиеся открытыми
+ PhysicalDimension {Width = 160.0 Height = 120.0} System.Drawing.SizeF
PixelFormat Format24bppRgb System.Drawing.Imaging.PixelFormat
+ PropertyIdList {int[2]} int[]
+ PropertyItems {System.Drawing.Imaging.PropertyItem[2]} System.Drawing.Imaging.PropertyItem[]
+ RawFormat {[ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e]} System.Drawing.Imaging.ImageFormat
- Size {Width = 160 Height = 120} System.Drawing.Size
Height 120 int
IsEmpty false bool
Width 160 int
+ Статические члены
+ Члены, не являющиеся открытыми
Tag null object
VerticalResolution 96.0 float
Width 160 int
- Члены, не являющиеся открытыми
+ [System.Drawing.Bitmap] {System.Drawing.Bitmap} System.Drawing.Bitmap
+ base {System.Drawing.Bitmap} System.MarshalByRefObject {System.Drawing.Bitmap}
nativeImage 105714272 System.IntPtr
rawData null byte[]
userData null object
- Статические члены
- Члены, не являющиеся открытыми
defaultTransparentColor Невозможно разыменовать выражение. Недопустимый указатель. System.Drawing.Color
- Члены, не являющиеся открытыми
base {AForge.Video.NewFrameEventArgs} System.EventArgs {AForge.Video.NewFrameEventArgs}
- frame {System.Drawing.Bitmap} System.Drawing.Bitmap
+ base {System.Drawing.Bitmap} System.Drawing.Image {System.Drawing.Bitmap}
+ Статические члены


кстате по ссылке адрес_камеры/video.cgi доступно очень динамическая картинка, по адрес_камеры/image.jpg рисунок

Добавлено через 41 минуту
на русском так мало информации об этих библиотеках... а с англ гугл траслит код коверкает

Добавлено через 3 часа 37 минут
ничё не понимаю, процедура
C#
1
2
3
4
5
6
7
8
9
10
11
 private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            // get new frame
 
            Bitmap bitmap1 = eventArgs.Frame;
 
 
            pictureBox1.Image = bitmap1;
       
          
        }
вроде отрабатывает , после её выполнения значения bitmap1 меняется с нулл на битмап.... но на экран в поле картинка выводится красный крест в рамке ... неужели никто не сталкивался.. наверняка там какае-то фигня ..... в гугле одна тема про такую проблему и та не решённая ......

Добавлено через 8 минут
freeba, meksik, ну помогите.....
0
freeba
Неадекват
1279 / 1076 / 206
Регистрация: 02.04.2010
Сообщений: 2,473
Записей в блоге: 2
Завершенные тесты: 2
17.10.2014, 11:07 13
Подключаете AForge. Кидаете на форму pictureBox aka pbStream.
И пишите что-то вроде:
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
29
30
31
32
33
34
private MJPEGStream VideoStream = new MJPEGStream();
private void frmMain_Load(object sender, System.EventArgs e)
{
    VideoStream.Source = "URL_HERE";
    VideoStream.Login = "USERNAME_HERE";
    VideoStream.Password = "PASSWORD_HERE";
 
    VideoStream.Start();
}
 
private void frmMain_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
    VideoStream.Stop();
}
 
private void VideoStream_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{
    Bitmap FrameData = new Bitmap(eventArgs.Frame);
 
    pbStream.Image = FrameData;
}
 
private void VideoStream_VideoSourceError(object sender, AForge.Video.VideoSourceErrorEventArgs eventArgs)
{
    Debug.WriteLine(eventArgs.Description);
}
public frmMain()
{
    InitializeComponent();
    this.FormClosing += new EventHandler(frmMain_FormClosing);
    this.Load += new EventHandler(frmMain_Load);
    VideoStream.NewFrame += new EventHandler(VideoStream_NewFrame);
    VideoStream.VideoSourceError+= new EventHandler(VideoStream_VideoSourceError);
}
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
20.10.2014, 08:07  [ТС] 14
freeba,

C#
1
2
3
new EventHandler(frmMain_FormClosing);
new EventHandler(VideoStream_NewFrame);
new EventHandler(VideoStream_VideoSourceError);
эти строки подчёркнуты красным с ошибкой "Нет перегруженного метода для ""Названиепроцедуры в скобках"" который соотвествует делегату System.EventHandler

что не так ?
0
freeba
Неадекват
1279 / 1076 / 206
Регистрация: 02.04.2010
Сообщений: 2,473
Записей в блоге: 2
Завершенные тесты: 2
20.10.2014, 13:21 15
Цитата Сообщение от Sasha777777 Посмотреть сообщение
что не так ?
Цитата Сообщение от Sasha777777 Посмотреть сообщение
Нет перегруженного метода для ""Названиепроцедуры в скобках"
Вроде компилятор все правильно подсказывает, не?
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
21.10.2014, 07:14  [ТС] 16
freeba, и что делать? где у меня процедуры с одинаковыми именами ? , в подключаемой библиотеке ? со строчкой
C#
1
new EventHandler(frmMain_FormClosing);
та ладно, закомментировал и все дела, а остальное то не для красоты. Что сделать то ?
0
Ev_Hyper
Заблокирован
21.10.2014, 08:28 17
Sasha777777, вы неправильно подписываетесь на события. Можно схитрить и сделать так:

C#
1
2
3
4
            this.FormClosing += (frmMain_FormClosing);
            this.Load += (frmMain_Load);
            VideoStream.NewFrame += (VideoStream_NewFrame);
            VideoStream.VideoSourceError += (VideoStream_VideoSourceError);

http://www.aforgenet.com/framework/features/jpeg_video_streams.html
0
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
22.10.2014, 03:58  [ТС] 18
freeba, Ev_Hyper, теперь компилятор ошибки не выдаёт, но видео всёравно нет.. даже картинки нет... в отладчике в процедуре
C#
1
2
3
4
5
6
private void VideoStream_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{
    Bitmap FrameData = new Bitmap(eventArgs.Frame);
 
    pbStream.Image = FrameData;
}
точку останова поставил, не заходит .....
0
freeba
Неадекват
1279 / 1076 / 206
Регистрация: 02.04.2010
Сообщений: 2,473
Записей в блоге: 2
Завершенные тесты: 2
22.10.2014, 11:53 19
Ну что там может быть сложного? Держите пример - 10 строчек всего.
1
Вложения
Тип файла: 7z WindowsFormsApplication5.7z (599.4 Кб, 128 просмотров)
Sasha777777
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 13
23.10.2014, 07:09  [ТС] 20
freeba, нет не работает, адрес заменил на свой http://192.168.1.101/image.cgi ... браузер по этому адресу отображает видео, программа нет .... наверное это китайская камера такая, специально хунчузы сделали.... завтра проверю на длинк 920
0
23.10.2014, 07:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2014, 07:09

Как сохранять видео с веб-камеры
Нужно сохранять видео с веб-камеры в MP4 формате. нужно в mp4 так как WMV...

Захват видео с веб-камеры через интернет
Доброе время суток В общем-то проблема описана в теме, нужно скачать видео...

Трансляция видео потока с веб камеры и управление
Есть необходимость получения с веб камеры изображения и трансляция его на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru