Digital Eliteboard

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 verwert bleiben

Full Hardware Transcode in TVH mit nvenc & ffmpeg & pipe

justcause

Newbie
Mitglied seit
20. November 2019
Beiträge
2
Erhaltene Reaktionen
1
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 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.
 

clever999

Ist oft hier
Mitglied seit
5. Oktober 2011
Beiträge
173
Erhaltene Reaktionen
114
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:
OP
justcause

justcause

Newbie
Mitglied seit
20. November 2019
Beiträge
2
Erhaltene Reaktionen
1
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
 

Ferrariboy

Ist gelegentlich hier
Mitglied seit
21. April 2019
Beiträge
38
Erhaltene Reaktionen
7
pipe:///usr/bin/ffmpeg -i
 
Zuletzt bearbeitet:

tem_invictus

Ist oft hier
Mitglied seit
18. Februar 2017
Beiträge
144
Erhaltene Reaktionen
78
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.
 

black86

Stamm User
Mitglied seit
2. Oktober 2012
Beiträge
1.060
Erhaltene Reaktionen
654
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.
 

tem_invictus

Ist oft hier
Mitglied seit
18. Februar 2017
Beiträge
144
Erhaltene Reaktionen
78
Das stimmt sogar für Consumer Karten. Kann man aber per Patch aufheben dieses Limit.


@justcause, mal dieser Anleitung gefolgt:
 
Zuletzt bearbeitet von einem Moderator:

Ferrariboy

Ist gelegentlich hier
Mitglied seit
21. April 2019
Beiträge
38
Erhaltene Reaktionen
7
zapping in enigma2 dreambox 900uhd zu langsam dauert 6 sekunde
pipe:///usr/bin/ffmpeg -i -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
 

clever999

Ist oft hier
Mitglied seit
5. Oktober 2011
Beiträge
173
Erhaltene Reaktionen
114
Schneller geht das Umschalten nicht, damit must du leben oder dauerhaft die streams abfragen

Gesendet von meinem Redmi Note 5 mit Tapatalk
 

Ferrariboy

Ist gelegentlich hier
Mitglied seit
21. April 2019
Beiträge
38
Erhaltene Reaktionen
7
wie kann ich das verbesser bei original stream ist di text claro
pipe:///usr/bin/ffmpeg -i -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

tem_invictus

Ist oft hier
Mitglied seit
18. Februar 2017
Beiträge
144
Erhaltene Reaktionen
78
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:
pipe:///usr/bin/ffmpeg -i http://up:live@tvh:9985/stream/channelnumber/54 -vf yadif=0:0:0 -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
 

Ferrariboy

Ist gelegentlich hier
Mitglied seit
21. April 2019
Beiträge
38
Erhaltene Reaktionen
7
ok und kann ich trotzem meine logo trotzem rein??
ist bissler besser aber noch nocht klaro
 

Anhänge

Zuletzt bearbeitet:

tem_invictus

Ist oft hier
Mitglied seit
18. Februar 2017
Beiträge
144
Erhaltene Reaktionen
78
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.
 

Ferrariboy

Ist gelegentlich hier
Mitglied seit
21. April 2019
Beiträge
38
Erhaltene Reaktionen
7
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.
ya hab ich so -vf yadif=0:-1:1 und ist sauber und perfekt
meine frage ist wie kann ich trotzem meine logo rein tun
 

tem_invictus

Ist oft hier
Mitglied seit
18. Februar 2017
Beiträge
144
Erhaltene Reaktionen
78
ja klar, kannst den befehl wieder mit rein nehmen.

Code:
pipe:///usr/bin/ffmpeg -i http://up:live@tvh:9985/stream/channelnumber/54 -i /home/logo.png -filter_complex overlay=main_w-overlay_w-1750:main_h-overlay_h-995 -vf yadif=0:-1:1 -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
 
Oben