Über die Jahre hatte ich schon mit vielen Videokarten zu tun. Von den klassischen Fast Karten wie der Movie Machine 2 oder dem AV.master zu an sich fast allen Miro/Pinnacle Karten wie DC10, DC20 und DC30. Auch so exotische Teile wie die Iomega Buz (mit integrierten SCSI-Controller).
Dann kam lange Zeit nichts mehr weil CAmcorder Firewire hatten oder man alte schon digitalisierte Video nur noch immer wieder hin und her codiert hat. Dann kam aber die Idee auf mal Mario Kart von der Switch auf Twitch zu streamen. Bevor ich mich weiter mit einem kleinen Konzept beschäftigen wollte, dass mit abends mal spontan einfiel, wollte ich wissen, ob so etwas überhaupt vernünftig geht.
Mein erster Versuch war noch rein PC-basiert und ich wollte Testen ob ich ein Spiel (Ion Fury) und eine Webcam (Dogcam) streamen kann ohne dass mein doch schon relativ alter PC dabei in die Knie geht. Hardwarebeschleunigung beim Encodieren mit meiner Radeon HD 7990 wollte ich dann auch gleich testen. Obwohl ich nur sehr langsame CPUs habe, lief alles erstaunlich gut und ich habe gelernt den Studio-Modus von OBS zu nutzen.
Da alles gut lief, ging es nun darum eine HDMI-Quelle an den PC anzuschließen. Was nutzt man da, wenn man nicht gleich viel Geld ausgeben will? AVerMedia ist teuer, Elgato auch, eine China No-Name Karte wollte ich dann aber auch nicht riskieren.
Also habe ich mich für eine günstige Lösung der Marke Blackmagic entschieden. Die Blackmagic Intensity Pro in der nicht-4K Edition. Der Vorteil ist auch, dass ich mir noch eine Kabelpeitsche dazu kaufen könnte und dann wieder in der Lage wäre Analoge Quellen (z.B. einen SNES) anzuschließen.
Nach dem die Karte in einem PCIe Slot nicht funktionieren wollte, funktionierte sie in einem anderen. Der war direkt unter der Grafikkarte und der Aufkleber auf der Karte bog sich bei Wärme (z.B. durch Spiele) nach oben und machte unschöne Geräusche im Lüfter der Grafikkarte. Naja.. also Aufkleber entfernt und es lief dann alles.
Die Latenz ist wirklich gering. Gering.. aber SNES Mini spielen geht so nicht weil doch so 500ms Verzögerung im Bild ist. Deswegen sollte man auf jeden Fall an den HDMI-Out einen weiteren Monitor anschließen, der ohne Latenz funktioniert. Aber ich finde die Karte für so eine günstige Lösung echt gut und sie bietet viele Möglichkeiten.
Das Experiment und die Planung kann also weiter gehen!
Ich habe etwas mit State-Management in Java herum experimentiert und mir etwas geschrieben, um den State von Web-Apps (Vue.js, React, AngularJS,..) auf einen Server auszulagern. So dass sich die States und Actions der verschiedenen Clients gegenseitig beeinflussen können (Datenaustausch), aber private Daten wie Tokens trotzdem für die einzelnen Clients isoliert bleiben. Neben den Reducern gibt es noch Facets für die Anpassung der Ausgabe (so etwas wie Getter in Vuex).
Ich wollte dann einmal das Grundsystem (State-Manager, Interfaces, Server + Controller) in einem Mave-Repository ablegen und die konkrete Implementierung der Reducer, Facets und Filter dann sauber getrennt in einem eigenen Projekt haben.
Das Repository sollte einfach bei Github liegen und nicht in eines der öffentlichen und großen mit rein genommen werden, da es ja erstmal ein Proof-Of-Concept für meine Idee zu verteilten Daten ist. Ich habe mich dabei an diesem DZone-Artikel orientiert.
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
<!-- .... und noch mehr ..... -->
</dependencies>
</project>
Den Inhalt aus target/mvn-repo/hp-globalstate/hp-globalstate-core/ habe ich dann in ein Github-Projekt gepackt und hochgeladen. Das 2. Projekt kommt dann dieses dann hinzu:
public class Server {
public static void main(String[] args){
GlobalStateServer server = new GlobalStateServer();
List<Reducer> reducers = new ArrayList<>();
reducers.add(new de.hannespries.test.Reducer());
List<FacetFilter> facets = new ArrayList<>();
facets.add(new DefaultFacetFilterByToken(true));
Die Überarbeitung meines CMS-Frameworks läuft gut. Optional gibt es auch schon ein parallax-scrolling Modul, das Subpages direkt unter der eigentlichen Page mit Parallax-Effekt rendern kann.
Seiten erstellen, bearbeiten und so ist mit diesem CMS wirklich sehr einfach und ist vielleicht nicht so verbreitet oder umfassend wie Wordpress, aber dafür für kleine einfache Seiten sehr viel schneller. Das Blog-Modul wird momentan auch nochmal überarbeitet.
Ein öffentliches Release des CMS unter MIT-Lizenz folgt wohl in den Wintermonaten.
Jetzt mit dem Haus reicht es nicht mehr nur die Wohnungstür zu zuschliessen. Da viele Einbrüche über Garten und Terrassentür geschehen soll der Garten überwacht werden. Die Tür ist sicher und ein motorisierter Rollladen sichert nochmals ab. Also geht es mehr darum mögliche Einbruchsversuche zu dokumentieren.
Es ist ein ieGeek 720p IPCam für außen und mit LAN + WLAN. SD-Karte ist wohl auch möglich, ich will aber lieber FTP verwenden.
NAS mit FTP-Server kommt dann als nächstes und dann wird die Kamera installiert und kann benutzt werden. Die Bildqualität (720p) gefällt mir aber schon sehr gut.
Zeitmessungen bei Rennen müssen nicht immer mit RFID gemacht werden. Man kann auch ganz einfach einen PC, ein Tablet oder ein Smartphone pro Messstation nehmen und eine Person muss nur auf die Teilnehmer-Nummer klicken/drücken, um eine Messung zu speichern.
Für die meisten Rennen im Amateurbereich ist die Genauigkeit mehr als ausreichend. Also ein vollständiger Ersatz für Stoppuhren oder andere Smartphone-Apps, die man sonst für Kontrollmessungen verwenden würde.
Und alles natürlich dann in Echtzeit auf dem Server.
Privat arbeite ich ja mit Eclipse und PDT. An sich gefällt mir das auch sehr viel besser als PHPStorm. Genauso wie ich auch immer WinSCP Bitvise vorziehen würde.
Aber zurück zum Thema. Wenn man schon mit einer eigentlich auf Java ausgelegten IDE arbeitet, kommt man beim Build-System als erstes auf Apache ANT. Ich mag ANT und es funktioniert echt super.
Da ich demnächst etwas über Datenbanken, Mapping und Reflections in meinem Blog verfassen will und diesmal auch direkt komplett lauffähigen Code mit liefern möchte, musste ich alles in eine Zip-Datei packen. Per Hand ist es doof, aber mit 6 Zeilen XML kann man mit ANT einfach eine Zip-Datei mit Datum im Dateinamen erstellen.
build.xml
<project name="build aoop" default="copy">
<!-- hier ist normal der Code zum Bauen von aoop.. ist hier aber uninteressant -->
<target name="buildPDBC">
<tstamp>
<format property="tstamped-file-name" pattern="yyyy_MM_dd" locale="de,DE"/>
</tstamp>
<zip destfile="../pdbc_${tstamped-file-name}.zip" basedir="system/PDBC/"/>
</target>
</project>
PS: PDBC steht für PHP DataBase Connectivity. Began vor 10 Jahren in der Berufsschule und der Name ist wie man merkt sehr an JDBC angelehnt.
So.. nach ich gelesen habe, dass Facebook GIFs zulassen will und man für MP4 bald zahlen muss und WebM damit vielleicht interessanter wird, habe ich MP4 to Gif mal geupdatet. Das Ergebnis wird jetzt nicht mehr in einem neuen Fenster geöffnet (was man ja immer extra bestätigen mußte, damit das Fenster geöffnet werden durfte) sondern in einem eigenen Dialog.
Blog-entries by search-pattern/Tags:
Möchtest Du AdSense-Werbung erlauben und mir damit helfen die laufenden Kosten des Blogs tragen zu können?