Ich experimentiere gerade mit libwebsockets herum... Damit bau ich dann eine Fernbedienung für den Player. Einen String vom Handy an den Desktop schicken ist schon mal kein Problem
Posts by hannemann
-
-
HD Live TV via Vnsiserver zum Pi und HD Live TV via Externremux zum Handy geht.
[edit]gleichzeitig natürlich[/edit]
-
Jedoch habe ich das Gefühl das das Vorhaben hier im Umfang explodieren wird...
Prinzipiell lässt sich das ja alles schon mit Plex/Emby bewerkstelligen. Emby kann auch schon mit den NVDEC/Quicksync Encodern.
Macht doch nichts, wenn das Projekt etwas größer wird. Um unser Hobby weiter voranzutreiben ist es IMO ein Schritt in die richtige Richtung. Auch kann es nicht schaden ein Open Source Plugin anzubieten, das mit transkodieren von Streams umgehen kann damit andere Projekte wie z. B. Kodi auch davon profitieren können. Es soll ja immer noch Leute geben, die sich Plex und Co nicht installieren wollen da Closed Source.Einen extra Dienst fände ich nicht so gut. Ich habe da bedenken wegen der Umschaltzeiten und was macht der Dienst während des umschaltens wenn keine Daten mehr geliefert werden. Naja... da kenn ich mich nicht aus. Wenn es funktioniert... aber irgendwie hört sich für mich Plugin "richtiger" an. Auch weil man direkten Zugriff hat und IMO alles einfacher Steuern könnte.
Wahlfreier Zugriff ist viel schwieriger....
Wenn Live TV noch einfacher ist, warum dann nicht für Aufnahmen ein Recording Device nutzen? Müsste das nicht ähnlich handlebar sein? Bei Streamdev kann man ja bereits einen Timestamp mitgeben. So habe ich in meinem Player das Spulen umgesetzt. -
Das hört sich doch alles sehr gut an :tup:
-
Wie man die Parameter übergibt kann man ja relativ einfach anpassen. Ich habe jedenfalls gerade festgestellt, das Apache als Proxy zicken macht wenn man kodierte slashes im URL übergeben will (404). Vielleicht sind GET Parameter doch besser geeignet.
Restfulapi kann bereits alles liefern was benötigt wird. Wenn man das als Quelle für die benötigten Infos hernimmt braucht man sich darum gar nicht zu kümmern und falls was fehlt bauen wir es ein.
Meinst du Live TV lässt sich auch so umsetzen? Das zu segmentieren stell ich mir irgendwie schwierig vor.
-
Vielmehr eine Architektur zu finden die möglichst viele Geräte ansprechen kann, also welche Container und Codecs bedient werden müssen. Außerdem habe ich nicht so richtig Lust auf die javascript Seite und ich brauche noch eine lib die sich um die http routen kümmert.
Also ich schwanke noch ob ich damit anfangen soll....
Also wenn das mit den Segmentierten Dateien irgendwie hinzubekommen ist... den JavaScript Part übernehme ich gerne. Mein Player kann ja schon die Hälfte. Aktuell arbeite ich mit den Streams von Streamdev aber das kann man auch umbauen.
Für den HTTP Teil könnte man cxxtools nehmen. -
Coole Sache! Die Qualität soll ja viel besser sein. Ist aber ganz schön was zu tun um das zu testen
-
Cool... Danke.
Geht ja recht fix. Ich hätte erwartet, das es wesentlich länger dauert als nvenc_h264.
Und wie ist die Qualität und Dateigröße im Verglich zu der h264 Datei? -
Naja, interessant ist das schon (wobei das schon viel Zeit brauchen wird), aber ich würde das eher nicht als Ausgabeplugin machen, sondern eher so eine Art Plugin, dass die Aufnahmen und die aktuellen Sender, als segmentierte TS oder MP4 transcodiert. (Also so eine Art vompserver plugin, nur http basiert und mit Transcoding und Segmentierung mit Clients entweder nativ oder Javascript).
Das Problem sind hier eher die vielen Standards Samsung TV wollen noch die alten HAS oder HLS Standards, moderne Browser und Android TV (z.B. Sony) kann man über die MediaSourceExtensions von HTML5 bedienen oder nativ über MediaCodecs, aber das sind dann entweder MP4 oder TS Container. (Bei Segmentierung kann man leider ffmpeg nicht zum muxen nehmen, da es das nicht unterstützt). Zusätzlich gibt es noch ein großes Codec Wirrwar was die einzelnen Devices unterstützen.....
Ich hab da ja so eine Webapp Programmiert, mit der man über Streamdev auch TV oder Aufnahmen ansehen kann. Was mich dabei stört, ist das ich IOS nicht bedienen kann, da hier die angesprochene Segmentierung verlangt wird und die langsamen Umschaltzeiten. Das Codec Wirrwarr ist gar nicht so schlimm. Eigentlich benötigt man nur x264 und Webm. Damit bedient man schon mal alles außer IOS (IE mit Webm Plugin von Google, Edge hab ich (noch) nicht). Chrome nimmt übrigens auch MKVIch wünsche mir so ein Plugin, damit VDR eine eigene Lösung für Mobiles Fernsehen anbieten kann. Das funktioniert mit meiner App sehr gut (ich nutze sie täglich z.B. zum Nachrichten schauen beim Zähneputzen), ist aber wie gesagt verbesserungswürdig. Jetzt mit NVENC kann man schon mal schwachbrüstigere Server dafür nutzen. TV Geräte interessieren mich hier weniger. Da kann man auch einen RPI oder ähnliches als Client anschließen oder meine App mit Chromecast nutzen (ist eher nur zum Aufnahmen schauen gut TV geht auch, man kann ja aber nicht umschalten).
Vielleicht kann man ja auch Streamdev beibringen bei Nutzung von Externremux auf Befehl umzuschalten. Aktuell muss ich immer den Stream anhalten und einen neuen starten, was auch schon Probleme macht und ca. 30 Sekunden dauert.
-
Das ist ja echt mal interessant, was sich da tut!
Eine Frage nur, warum arbeitet ihr alle mit Bitraten?
...
Bzw. ob es überhaupt mit CRF geht.
ffmpeg -h encoder=nvencCode
Display MoreEncoder nvenc [NVIDIA NVENC h264 encoder]: General capabilities: delay Threading capabilities: none Supported pixel formats: yuv420p nv12 yuv444p nvenc AVOptions: -preset <string> E..V.... Set the encoding preset (one of slow = hq 2pass, medium = hq, fast = hp, hq, hp, bd, ll, llhq, llhp, default) (default "medium") -profile <string> E..V.... Set the encoding profile (high, main, baseline or high444p) (default "main") -level <string> E..V.... Set the encoding level restriction (auto, 1.0, 1.0b, 1.1, 1.2, ..., 4.2, 5.0, 5.1) (default "auto") -tier <string> E..V.... Set the encoding tier (main or high) (default "main") -cbr <boolean> E..V.... Use cbr encoding mode (default false) -2pass <boolean> E..V.... Use 2pass encoding mode (default auto) -gpu <int> E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from 0 to INT_MAX) (default 0) -delay <int> E..V.... Delays frame output by the given amount of frames. (from 0 to INT_MAX) (default INT_MAX)
Leider kennt nvenc crf nicht.
-
Ggf. dann mal ein Vergleich mit HEVC.
Du hast doch eine Karte die das unterstützt. Mach doch bitte mal einen Test -
Absolut... hinter dem Link ist aber ne 950er
Ich bin mit meiner 630er im Server auch sehr zufrieden (der served nicht nur, er befeuert auch den Beamer... daher die Karte)
-
Das aber ne 950er
Ich sag mal: Klar... kauf! Und berichte dann bitte was die mit HEVC so kann
Ich habe das ganze gerade in meine App implementiert. Nu kann mein Serverchen mir auch HD Streamen ohne auf Anschlag abzuhecheln bzw. HD funktioniert endlich überhaupt.
Streamdev EXT mit Hardware Encoding...Das einzige was noch besser wäre wär ein richtiges Ausgabeplugin das on the Fly transkodiert und mit dem man auch via HTTP Request umschalten kann ohne das er den Transkodier Prozess neu starten muss.
Vielleicht liest ja hier einer von den Ausgabe Plugin Profis mit und baut das mal eben kurz Ich beteilige mich dann auch mit einer hübschen Mediengalerie für den Browser.
-
Third Generation (Maxwell GM20x)
Introduced with the second-generation Maxwell architecture, third generation NVENC implements the video compression algorithm High Efficiency Video Coding (aka. HEVC, H.265)
-
-
Mal am Rande:
Die GTX750TI hat ein Maxwell Chip, oder?
Meine GTX780 noch einen Kepler Chip.
Meine GTX780 macht bei 3PO's Testdatei gerade einmal ~90fpsObwohl die GTX780 mehr Gaming Leistung als die GTX750 hat, hinkt sie beim nvenc hinterher...
Geil... Meine Karte rockt voll!
Maxwell vor!!!
Keine Ahnung ob Maxwell die neuere Generation ist aber Kepler ist doch die erste Generation mit der NVENC überhaupt geht. Daher müsste dein Chip ja einer älteren Generation angehören, was das erklären könnte -
Liegt es nu daran, das die Einheit der Bitrate K ist oder das du wieder -vbr 5 verwendest?
-
Tja... keine Ahnung. Vorhin lief es ja noch. Also muss irgendwas anders sein.
Was noch anders ist ist die Einheit der Bitrate: 4.5M
Mach doch malCodeffmpeg -i test_hd.ts -map 0:v -map 0:a:0 -c:v nvenc_h264 -b:v 4500K -maxrate 5000K -bufsize:v 9000K -bf 2 -g 150 -i_qfactor 1.1 -b_qfactor 1.25 -qmin 1 -qmax 50 -c:a libfdk_aac -f matroska output.mkv
Versuch auch mal libx264 und den audio codec weg zu lassen. Nur um das Problem einzukreisen. -
Hmmm...
Deine Kommandzeile läuft bei mir... Merkwürdig... Hast du seit vorhin neu kompiliert? Du hast doch da ein Flag geseetzt. Vielleicht war das doch nicht so richtig.
-