2009-09-24 16 views
7

Mamy urządzenie z kamerą analogową. Mamy kartę, która pobiera i digitalizuje. Wszystko to odbywa się bezpośrednio. W tej chwili wymiana sprzętu nie jest opcją, ale musimy tak napisać kod, że widzimy ten kanał wideo w czasie rzeczywistym, niezależnie od jakiegokolwiek sprzętu lub zmian systemu operacyjnego w przyszłości.Implementacja kamery IP

W tej linii wybieramy Qt, aby zaimplementować graficzny interfejs użytkownika, aby wyświetlić ten kanał kamery. Jeśli jednak przejdziemy na platformę Linux lub inną platformę wbudowaną w przyszłości i zmienimy inny sprzęt (w tym fizyczne urządzenie, w którym znajduje się sampler kamery/wideo), będziemy musieli również zmienić oprogramowanie wyświetlania kamery, a to będzie ból, ponieważ musimy go zintegrować z naszym GUI.

Proponowałem migrację do bardziej abstrakcyjnego modelu, w którym dane są przesyłane przez gniazdo do GUI, a wideo jest wyświetlane na żywo po przeanalizowaniu ze strumienia gniazda.

Po pierwsze, czy to dobry pomysł, czy zły pomysł?

Po drugie, jak wprowadziłbyś taką rzecz? W jaki sposób samplery wideo dają zwykle użyteczne wyniki? Jak mogę wypchnąć to wyjście przez gniazdo? Kiedy znajduję się na końcu odbierającym analizującym dane wyjściowe, skąd mam wiedzieć, co zrobić z wyjściem (w jaki sposób uzyskać wyjście do renderowania)? Jedyne, co mogę wymyślić, to zapisanie każdej próbki do pliku, a następnie wyświetlenie zawartości pliku za każdym razem, gdy pojawi się nowa próbka. Wydaje mi się to nieskuteczne dla mnie rozwiązaniem, gdyby w ogóle zadziałało.

Jak polecasz poradzić sobie z tym? Czy są dostępne jakieś biblioteki międzyplatformowe?

Dziękuję.

edytuj: jestem skłonny zaakceptować sugestie czegoś innego, niż to, co jest wymienione powyżej.

Odpowiedz

2

Wszystko, co powiela strumień wideo, będzie kosztować wydajność, szczególnie w przestrzeni osadzonej. W większości sytuacji związanych z wideo uważam, że lepiej jest użyć lokalnego przyspieszenia sprzętowego, by wysyłać wideo bezpośrednio na ekran. Przy odpowiedniej enkapsulacji powinieneś być w stanie używać Qt do GUI otaczającego wideo i mieć klasę, która jest specyficzna dla platformy, której używasz do kontrolowania faktycznego rysowania wideo na ekranie (gdzie narysować i jak duży, itp.).

Edit:

Można również zajrzeć do biblioteki Phonon. Nie patrzyłem na to zbyt wiele, ale wydaje się, że obsługuje on pokazywanie wideo, które można uzyskać z wielu różnych źródeł.

+0

Rozumiem, skąd pochodzisz, ale lokalna akceleracja sprzętowa może znajdować się całkowicie na innym urządzeniu lub na tym samym urządzeniu. W tej chwili sprowadza się przez USB do wyświetlacza. Jeśli rzucimy ideę gniazdek, co jest w porządku, czy znasz jakieś LGPL lub własnościowe wieloplatformowe biblioteki, które pomogą osiągnąć takie rzeczy w Qt? –

+0

Proszę również dodać spację lub coś do swojej odpowiedzi, aby dać jej +1. mówi, że głosowanie jest zbyt stare, aby się zmienić. –

3

Czy obejrzałeś QVision? Jest to framework oparty na Qt do zarządzania przetwarzaniem wideo i wideo. Nie potrzebujesz przetwarzania, ale myślę, że zrobi to, co chcesz.

+0

wygląda interesująco, dzięki. –