Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Full Hardware Transcode in TVH mit nvenc & ffmpeg & pipe

justcause

Newbie
Registriert
20. November 2019
Beiträge
2
Reaktionspunkte
1
Punkte
23
Hallo Liebe Community,
Ich habe leider keine passende Antwort hier im Forum gefunden, deshalb eröffne ich mal einen neuen Thread.

Ich habe im Ausland TVH als backend auf einem Rechner mit Ubuntu unstalliert. Ich empfange mittels TBS-DVBS Karte Sender, die ich gerne bei mir und meinen Eltern empfangen möchte. Wegen begrenzter Bandbreite möchte ich die Streams in TVH transcodieren. Dazu habe ich eine GTX 1060 6GB verbaut. TVH ist eingerichtet und ich kann die Streams empfangen. Bevor ich nun an dem funktionierenden System experimentiere, habe ich bei mir einen TVH-Server installiert auf dem ich die Streams empfange und lokal wiedergeben möchte, das Ganze sozusagen als Test. Dazu habe ich die neuesten Nvidia Treiber und das ToolKit installiert. Außerdem ffmpeg nach dieser Anleitung
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
installiert. Also in TVH ein neues IPTV-Network eingerichtet und einen Link vom Server im Ausland eingegeben. Diesen kann ich problemlos wiedergeben. Diesen möchte ich nun zum Test komplett per GPU transcodieren und lokal wiedergeben. TVH bietet mir zwar die Option per GPU zu Transcodieren, allerdings erfolgt nur die Encodierung per GPU, das Decodieren übernimmt die CPU. Bisher habe ich keine Möglichkeit gefunden den kompletten Transcode "cuvid" in TVH per "transcode profile" zu erledigen.
Also habe ich es per pipe versucht. Im MUX-Reiter in der URL folgendes eingetragen: pipe:///usr/bin/ffmpeg -vsync -hwaccel cuvid -c:v h264_cuvid -i INPUTLINK -c:a copy -c:v h264_nvenc -preset llhq -rc cbr_hq -b:v 5M -maxrate 6M -bufsize 3M -zerolatency 1 -f mpegts pipe:1 eingegeben. Das von mir kompilierte FFmpeg übernimmt den Transcode und ich kann den Stream lokal über VLC ansehen.
Allerdings treten häufig Artefakte und Pixelfehler auf. Unter anderem grüne Pixel und verschwommene Pixel. Ich habe schon etliche Variationen ausprobiert, mit höheren Bitraten und fast allen möglichen Einstellungen für nvenc_h264, bekomme die Fehler einfach nicht weg, die Auslastung der GPU liegt unter 50%.
Testweise habe ich auch auf dem Lokalen Rechner versucht zu transkodieren, um Packetloss über da Internet zu vermeiden, auch hier das gleiche Problem mit den Pixelfehlern.

Meine Frage:
-Wie kann ich die Pixelfehler beim Transkodieren beheben/woran kann das liegen ?
-Gibt es eine Möglichkeit direkt in TVH einen kompletten HardwareTranscode durchzuführen (cuvid).. ich habe irgenwdo gelesen, mann kann TVH mit dem selbst compilierten FFmpeg konfiigurieren


Zur info..
Server Im Ausland HP Workstation Z260 mir Xeon E5-2600 16Gb Ram, 120Gb SSD, Ubuntu Server 18.04, GTX 1060 6Gb, Nvidia 440.36, Cuda Toolkit 10.2.

Danke schon mal im Vorraus.
 
Hi,

hab leider kein nvidia, Karte, mit AMD hab ich es mal am laufen gehabt, allerdings mt dem standard vaapi.
Versuch mal folgenden Befehlt, evtl hilft es:
pipe:///usr/bin/ffmpeg -re -vsync -hwaccel cuvid -c:v h264_cuvid -i INPUTLINK -c:a copy -c:v h264_nvenc -preset llhq -rc cbr_hq -b:v 5M -maxrate 6M -bufsize 9M -zerolatency 1 -f mpegts pipe:1

Mit deinem Xeon E5-2600 , bekommst doch locker 4-5 streams hin. Ich empfehle eh mit CPU zu transcodieren, da das Bild bei GPU deutlich schlechter ist

Grüße
 
Zuletzt bearbeitet:
Erstmal Danke für die Antwort.
Ich rechne mit bis cu ca. 10 HD Streams, das schafft die CPU nicht mehr, außerdem würde ich mit der GPU die CPU entlasten. Das Hardwarebeschleunigte Transcodieren ist mittlerweile sehr gut, bei entsprechenden Einstellugnen erkennt der Laie meiner Meinung nach den unterschied nicht.
Habe es mal mit deinen Einstellungen probiert, leider keine Besserung. Immernoch Pixelfehler. Außerdem ist der Befehl "-re" eigentlich für das Streamen von lokalen Files, das decodieren erfolgt dann entsprechend der Eingangsframerate.. so zumindest in der Dokumentation in FFmpeg.
Die Pixelfehler treten eigentlich nur bei HD Sendern auf. Bei SD eigentlich nicht.
Und wenn ich ein lokales Video mit den gleichen Einstellungen im LAN Streame funktioniert auch alles super, da schaffe ich sogar 4k Streams ohne Pixelfehler.

lG
 
Kannst du den Streaming Profile anlegen in tvheadend?
Ich nutze zwei keine Nvidia Karte, aber mit Intel Vaapi kann ich so Profile anlegen.
Bildschirmfoto 2020-01-10 um 20.15.45.png

Damit kann ich auf einer Intel i5 CPU entspannt 3 HD Streams bewerkstelligen.
 
Also meines Wissens nach können die gtx, rtx Karten allgemein nur 2 Sreams transcodieren. Die kleinste Grafikkarte für deine Zwecke wäre demnach eine quadro p2000.
 
Das stimmt sogar für Consumer Karten. Kann man aber per Patch aufheben dieses Limit.


@justcause, mal dieser Anleitung gefolgt:
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
 
Zuletzt bearbeitet von einem Moderator:
zapping in enigma2 dreambox 900uhd zu langsam dauert 6 sekunde
pipe:///usr/bin/ffmpeg -i
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
-i /home/logo.png -filter_com overlay=main_w-overlay_w+10:main_h-overlay_h+10 -c copy -map 2 -vcodec libx264 -preset veryfast -s 1920x1080 -b 3000k -minrate 3000k -maxrate 3000k -bufsize 3000k -acodec aac -ab 128k -ar 44100 -strict -2 -metadata service_provider=IPTV -metadata service_name=ITALIA1HD -f mpegts -tune zerolatency pipe:1
 
Schneller geht das Umschalten nicht, damit must du leben oder dauerhaft die streams abfragen

Gesendet von meinem Redmi Note 5 mit Tapatalk
 
wie kann ich das verbesser bei original stream ist di text claro
pipe:///usr/bin/ffmpeg -i
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
-i /home/logo.png -filter_complex overlay=main_w-overlay_w-1750:main_h-overlay_h-995 -vcodec libx264 -preset veryfast -s 1280x720 -b 2500k -minrate 2500k -maxrate 2500k -bufsize 2500k -acodec aac -ab 128k -ar 44100 -strict -2 -metadata service_provider=TTVSTREAM -metadata service_name=TGCOM24 -f mpegts -tune zerolatency pipe:1
 

Anhänge

  • Cattura.PNG
    Cattura.PNG
    419,7 KB · Aufrufe: 34
  • Cattura2.PNG
    Cattura2.PNG
    596,2 KB · Aufrufe: 33
du musst deinterlacing anschalten. da kann man einige Sachen einstellen, probier mal "-vf yadif=0:0:0".
Und nimm mal dein logo overlay raus, vielleicht bekommst du dadurch den Stream ein wenig schneller auf.

Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
 
ok und kann ich trotzem meine logo trotzem rein??
ist bissler besser aber noch nocht klaro
 

Anhänge

  • Cattura3.PNG
    Cattura3.PNG
    544 KB · Aufrufe: 27
Zuletzt bearbeitet:
probier mal mit "yadif=0:-1:0".
Aber das wird nie so gut werden wie das Original, du komprimierst die Qualität des originals ja auch noch.
 
Zurück
Oben