Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Leren programmeren, video streams verwerken.  (gelezen 2641 keer)

Offline jeroenl

  • Lid
Leren programmeren, video streams verwerken.
« Gepost op: 2009/03/16, 21:10:23 »
Hoi mede ubuntu fans,

Er zijn meer topics met deze vraag maar ik heb een specifiek doel.
Ik heb een beetje basis in programmeren.  Basic en pascal in het verleden en recentelijk wat html php, mysql.
Maar ik wil eens echte toepassingen gaan schrijven voor een specifiek doel. Zo ben ik ook aan ubuntu begonnen om een pakket te leren kennen dat niet voor windows geschreven is  (zoneminder voor de geïnteresseerde onder ons) dit pakket heeft me eerst eens goed kennis laten maken met de Linux basis waar ik nog helemaal niets van af wist.

Voor me werk zit ik oa in de CCTV video beveiliging branche. Ip video is hier een sterk groeiende markt en wij als groothandel verkopen diverse toepassingen en software pakketten op dit gebied. Die pakketjes ( voornamelijk Windows gebaseerd ) installeer ik dan op leuke servers en dat draait dan bij onze klanten. Allemaal leuk en aardig en ik heb er totaal geen moeite mee die pakketten te installeren.

Maar het lijkt me zo gaaf om zelf eens een simpel pakket te kunnen schrijven die om kan gaan met mpeg4 streaming en multicasting enz.
Ook deze streams verwerken en opslaan om het later terug te kunnen kijken. Ook moet dit nog eens leuk gaan werken met raid en iscsi systemen. Al met al een moeilijk verhaal en ik verwacht ook niet dat ik binnen een jaar zoon pakket kan schrijven.

Maar ik wil er wel graag aan beginnen. Alleen heb ik geen idee welke taal hier het beste bij past en ook nog eens een taal is die in de toekomst veel gebruikt gaat worden zodat ik niet achter de feiten aanloop.

Wat zijn jullie adviezen en als het even kan ook nog een argument erbij :)


Offline track

  • Lid
Re: Leren programmeren, video streams verwerken.
« Reactie #1 Gepost op: 2009/03/16, 22:07:11 »
Hoi Jeroen,

dat is echt een flink project dat jij hier voorneemt.  In eerste instantie denk ik dat je goed moet kijken dat je niet opnieuw het wiel uitvindt.

En getrouw aan de Linux-filosofie moet je dus ook best één programma per functie inzetten.  Blokjesgewijs dus.
Alsjeblieft geen "all-inclusive-pakketten" zoals bij Win.. dus.  Dat is maar schadelijk voor het overzicht en slecht aan te passen.

Dus voor de functie "streaming en multicasting" (van wat dan ook) zal er zeker al een oplossing zijn.  Want vele grote servers draaien onder Linux. (Hoe dat precies moet zal je zelf moeten uitzoeken, ik heb er te weinig besef van)  Dus in principe bij een bestaand project instappen en aan jouw behoefte aanpassen.

De belangrijkste "taal" voor het integreren van Linux-programma's is de  bash- commandolijn.
(-> http://www.gnulamp.com/bashprogramming.html  /  http://www.ss64.com/bash/  /  http://www.ibm.com/developerworks/library/l-bash.html )

En zou je later iets moeten bijprogrammeren zal je je toch in C moeten verdiepen.  Want het gehele module-concept van Linux is gebaseerd op deze programmeertaal (-> .h- headers voor alles en nogiets !).  Je kunt ook een andere taal gebruiken maar het interface is in C .

Vriendelijke groet,

track

Re: Leren programmeren, video streams verwerken.
« Reactie #2 Gepost op: 2009/03/16, 22:21:17 »
De belangrijkste "taal" voor het integreren van Linux-programma's is de  bash- commandolijn.
(-> http://www.gnulamp.com/bashprogramming.html  /  http://www.ss64.com/bash/  /  http://www.ibm.com/developerworks/library/l-bash.html )

En zou je later iets moeten bijprogrammeren zal je je toch in C moeten verdiepen.  Want het gehele module-concept van Linux is gebaseerd op deze programmeertaal (-> .h- headers voor alles en nogiets !).  Je kunt ook een andere taal gebruiken maar het interface is in C .


Dat is wel niet handig om het crossplatform te houden. Of werkt bash ook op windows?

En omdat de interface van Gnome in C is geschreven, wil nog niet zeggen dat het programma ook in C moet zijn. Met pyGTK (python) of gtkmm (C++) kunnen perfect grafische programmas gemaakt worden.

Voor video/audio toepassingen komt als eerste gstreamer in mij op. Daar zijn ook python bindings voor.

Offline jeroenl

  • Lid
Re: Leren programmeren, video streams verwerken.
« Reactie #3 Gepost op: 2009/03/16, 22:38:16 »
Het wiel opnieuw uitvinden wil ik niet. Maar ik wil wel begrijpen hoe de spaken en de as gemaakt zijn als je begrijpt wat ik bedoel.
crossplatform vind ik trouwens niet interessant. Uiteindelijke clients zullen altijd web-gebaseerd zijn en via een browser een server benaderen. Belangrijk vind ik dat de processen op de server zo effectief mogelijk draaien aangezien het een hoop vermogen kost als je bv over 124 ip streams met video data praat. Dit alles met 25 fps en dan in de toekomst ook nog eens met hoge resolutie.

Ik roep even het volgende : java interessant of niet ?

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Leren programmeren, video streams verwerken.
« Reactie #4 Gepost op: 2009/03/16, 23:45:37 »
Ligt eraan of het Java bindings bovenop een framework is dat geschreven is in een meer low-level taal of niet,
de videoprocessing zelf kan best met een C of C++ library gebeuren, aangezien dat vele malen sneller en efficiënter is dan met Java
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Re: Leren programmeren, video streams verwerken.
« Reactie #5 Gepost op: 2009/03/17, 08:11:01 »
Ligt eraan of het Java bindings bovenop een framework is dat geschreven is in een meer low-level taal of niet,
de videoprocessing zelf kan best met een C of C++ library gebeuren, aangezien dat vele malen sneller en efficiënter is dan met Java
Hoeft niet noodzakelijk zo te zijn, hoor. Java is met de JIT ongeveer even snel als C++, misschien soms iets langzamer. De mythe 'Java is traag' gaat in de meeste gevallen niet meer op. Uiteraard is het iets langzamer dan direct native te schrijven (dus C of C++, waarbij C eigenlijk nog sneller is dan C++), maar Assembler is ook sneller dan C, en toch zie je de meeste programma's in C geschreven, niet? Een optimaliserende compiler doet ook wonderen. (javac is optimaliserend)

Maar inderdaad, Java is syntaxis-gewijs niet zo goed geschikt voor manipulatie van grote char-array's (C en dus ook C++ zijn hier beter voor), en daarom zal je dat beter in C/C++ schrijven/een C/C++ library zoeken.

Als je wilt leren programmeren, zou ik je aanraden om met Python of Java te beginnen. Als je niet veel ervaring hebt met programmeren, doe je het best het volgende: Python -> Java -> C++ . Als je ook nog C wilt leren, mag dat ook, maar als je C++ kent, ken je eigenlijk het meeste van C. C is gewoonweg niet object-georiënteerd (da's een moeilijke manier om te zeggen dat het niet zo gemakkelijk werkt ;) ).

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline jeroenl

  • Lid
Re: Leren programmeren, video streams verwerken.
« Reactie #6 Gepost op: 2009/03/17, 14:23:17 »

Als je wilt leren programmeren, zou ik je aanraden om met Python of Java te beginnen. Als je niet veel ervaring hebt met programmeren, doe je het best het volgende: Python -> Java -> C++ . Als je ook nog C wilt leren, mag dat ook, maar als je C++ kent, ken je eigenlijk het meeste van C. C is gewoonweg niet object-georiënteerd (da's een moeilijke manier om te zeggen dat het niet zo gemakkelijk werkt ;) ).

- SeySayux
Mja die weg van python ben ik al ingeslagen. Alleen de basis turtorials zijn zo saai. Dat hello world en muntjes tellen of wat dan ook snap ik nu wel. Alleen voordat ik boeken/ cursus matriaal ga aanschaffen wil ik wel weten of ik op de juiste weg zit.

Edit: voor dat mensen roepen dat er veel gratis online tutorials enz te vinden zijn. Moet ik opmerken dat ik momenteel nog enorme moeite heb met het lezen van engels. Dit gaat wel beter worden in de toekomst maar voorlopig zoek ik daarom alleen Nederlandstalige bronnen.
« Laatst bewerkt op: 2009/03/17, 14:52:25 door jeroenl »

Offline charclo

  • Lid
Re: Leren programmeren, video streams verwerken.
« Reactie #7 Gepost op: 2009/03/17, 19:09:45 »
Hey, volgens mij kan je best python leren, zoals je nu dus al een beetje aan het doen was. Hiermee kan je eenvoudig object georienteerd leren programmeren en als je later iets sneller wilt kan je nog altijd eenvoudig naar C++ overschakelen.
Er bestaan goede bindings voor gstreamer, hier zou je alle dingen mee moeten kunnen die jij wil. gstreamer is in C geschreven en dus heel snel.
Als er bepaalde delen van je programma sneller moeten kan je die nog altijd herschrijven in C++ ofzo.

Nederlandstalige documentatie is wel redelijk schaars. Ik denk dat je er niet onderuit kan om een beetje meer engels te leren...
De nederlandstalige bronnen zijn ook meestal enkel voor beginners, alleen maar hello world en muntjes tellen dus.

Een heel goed boek om python te leren is "dive into python", dit kan je gratis downloaden op de website. (engelstalig)

De beste manier om te leren programmeren is nog altijd zelf een programma schrijven.
Hier een engelstalige tutorial voor pygst, je kan naar de code kijken en zo proberen zelf programmaatjes te maken:
http://pygstdocs.berlios.de/pygst-tutorial/index.html

Veel succes ermee!
« Laatst bewerkt op: 2009/03/17, 19:38:02 door charclo »
HP Pavilion dv6660eb - Intel Core 2 Duo T7250 2 GHz - 2 GB ram - Nvidia GeForce 8400M GS 128 MB --> Dualboot Ubuntu en Windows Vista
P4 2.6 GHz - 1GB ram - NVIDIA GS7600 - 20 inch Benq widescreen --> Dualboot Ubuntu en Windows XP

Offline jeroenl

  • Lid
Re: Leren programmeren, video streams verwerken.
« Reactie #8 Gepost op: 2009/03/17, 20:34:29 »
Hey, volgens mij kan je best python leren, zoals je nu dus al een beetje aan het doen was. Hiermee kan je eenvoudig object georienteerd leren programmeren en als je later iets sneller wilt kan je nog altijd eenvoudig naar C++ overschakelen.
Er bestaan goede bindings voor gstreamer, hier zou je alle dingen mee moeten kunnen die jij wil. gstreamer is in C geschreven en dus heel snel.
Als er bepaalde delen van je programma sneller moeten kan je die nog altijd herschrijven in C++ ofzo.

Nederlandstalige documentatie is wel redelijk schaars. Ik denk dat je er niet onderuit kan om een beetje meer engels te leren...
De nederlandstalige bronnen zijn ook meestal enkel voor beginners, alleen maar hello world en muntjes tellen dus.

Een heel goed boek om python te leren is "dive into python", dit kan je gratis downloaden op de website. (engelstalig)

De beste manier om te leren programmeren is nog altijd zelf een programma schrijven.
Hier een engelstalige tutorial voor pygst, je kan naar de code kijken en zo proberen zelf programmaatjes te maken:
http://pygstdocs.berlios.de/pygst-tutorial/index.html

Veel succes ermee!
Ik kan trouwens perfect engels verstaan, spreken en schrijven. Maar begrijpend lezen van lange teksten is erg lastig voor mij. Klinkt misschien raar maar lijkt erop dat ik een vorm van dyslexie heb voor engelse teksten :P Ben dat trouwens wel aan het verbeteren er er op oefenen. Maar ik kan bv zonder problemen een engelse tekst van bijvoorbeeld 1 kantje voorlezen en goed uitspreken maar heb naderhand geen enkel idee wat ik net voorgelezen heb :')