Jump to content

Streaming mit GPU Beschleunigung ?


Unreal

Recommended Posts

Da ich vermehrt Anfragen bezüglich einer FFMEG Version mit Intel QSV Support bekomme...

Hier eine aktuelle free --enable-gpl static_build Windows 32/64Bit Version mit Intel Quicksync

 

Download Link:

 

http://www.filehosting.at/file/details/545465/ffmpeg_free_static.rar

 

Zu bemerken wäre noch, das der freie AAC Audio codec seit Dezember 2015 fest in FFMPEG integriert ist.

Will man den Audio Stream statt in MP3 in AAC (MP4) encoden, so reicht ein -c:a aac in der command line !

Edited by feedzapper
  • Like 1
Link to comment
  • 1 month later...

So im täglichen Gebrauch habe ich festgestellt, dass der h264_qsv Codec mit der Qualität nicht so wirklich an den

libx264 Software Codec heran kommt.

Selbst der libvpx liefert mit veryslow bessere Ergebnisse. Insbesondere bei niedriegeren Bitraten, schnelleren Bewegungen im Bild und viel Bildinformationen wird es schnell pixelig.

Hat dies auch schon jemand festgestellt ?

Im Moment spiele ich bei den Einstellungen in HD ein wenig im 4:2:2 Farbraum und bin seelig :dvbviewer:

 

[Flash High 1800 kbit HD]
Cmd=-analyzeduration 1500k -threads {threads} {offset} {realtime} -i "{infile}" -threads {threads} -f flv -vcodec libx264 -bufsize 1668k -b:v 1668k -maxrate 1668k {framerate} -map 0:0 -map 0:1 -vf "yadif=0:-1:1, scale={scalex}:{scaley}" -preset {vpreset} -tune film -profile:v high422 -level 4.2 -pix_fmt yuv422p -acodec libfdk_aac -profile:a aac_he -ab 128k -ar 48000 -ac 2 -async 1 -y "{outfile}"
maxWidth=1280
maxHeight=720
MimeType=video/x-flv
Ext=.flv
Link to comment
  • 2 weeks later...

Danke Tjod. Habs jetzt auch am Laufen!

 

Zu beachten ist, dass libmfx für Quick Sync nur in den Nightlies drin ist, nicht in den Release Builds mit der Versionsnummer im Dateinamen. Auf meiner Ivy Bridge CPU i3-3225 bin ich nun bei der CPU-Last von 40% auf 15% herunter.

 

Ich werde jetzt noch ein bisschen damit herumspielen und dann entsprechende ffmpeg bzw. iPhone Konfigurationen posten.

Link to comment

Danke Tjod. Habs jetzt auch am Laufen!

 

Zu beachten ist, dass libmfx für Quick Sync nur in den Nightlies drin ist, nicht in den Release Builds mit der Versionsnummer im Dateinamen. Auf meiner Ivy Bridge CPU i3-3225 bin ich nun bei der CPU-Last von 40% auf 15% herunter.

 

Ich werde jetzt noch ein bisschen damit herumspielen und dann entsprechende FFmpeg bzw. iPhone Konfigurationen posten.

Noch ein kurzer Hinweis fürs debugging, der eventuell ganz nützlich ist :

 

-report in der commandline von ffmpeg.exe schreibt bei jedem Start die kompletten Console Ausgaben (verbose) von ffmpeg in ein LOG File. Dieses wird bei jedem Aufruf von ffmpeg.exe erneut angelegt und wird ins Verzeichnis von ffmpeg.exe geschrieben.

Im Format "ffmpeg-JAHR_MONAT_TAG-STUNDE_MINUTE_SEKUNDE.log"

Link to comment

 

-report in der commandline von FFmpeg.exe schreibt bei jedem Start die kompletten Console Ausgaben (verbose) von FFmpeg in ein LOG File. Dieses wird bei jedem Aufruf von FFmpeg.exe erneut angelegt und wird ins Verzeichnis von FFmpeg.exe geschrieben.

Im Format "FFmpeg-JAHR_MONAT_TAG-STUNDE_MINUTE_SEKUNDE.log"

 

Landet alles auch im svcdebug.log, wenn man im Web-If "UPnP debug logging" aktiviert.

Link to comment

Nur damit auch Nutzer, die nur dieses Topic verfolgen, es mitbekommen: CiNcH hat für Intel QSV einiges zusammengestellt:

http://www.DVBViewer.tv/forum/topic/58039-intel-quick-sync-video-unterstutzung/

 

 

Und bei "UPnP debug logging" landet alles was sonst in der Ausgabe landet im log. -report setzt das loglevel automatisch gleich auf "verbose", das heißt, du kannst auch -loglevel verbose anhängen um die gleiche Ausgabe zu erhalten.

Mit -loglevel debug oder trace und eventuell noch repeat+ bekommst du noch deutlich mehr in das Log ;)

Link to comment

okok , mir war das einfach mit der Zeit auch zu lästig , nach jedem Neustart des Recording Service immer erst per Hand das

UpNp Debug logging wieder zu aktivieren :-(

Noch kurz etwas zu meinem "HIGH 4:2:2"

Habe ffmpeg mit dem H.264 libx264 Codec nun einmal mit 10-bit 4:2:2 compiliert - default ist 8-bit.

Ist auch noch einmal eine Klasse besser.

Allerdings kann der FLOWPLAYER nur 8-bit Farbraum darstellen. Mit dem VLC Player gehts -> super.

 

Das transcoding wäre dann bei HD : H.264 4:2:0 8-Bit -> H.264 4:2:2 10-Bit :-)

 

Nochwas zum nachlesen :

 

https://gist.github.com/l4n9th4n9/4459997

Link to comment

Hmmm, für mich lesen sich deine Presets nicht sehr sinnvoll...

 

HE-AAC bei 128kbps?

Wenn das Quellmaterial 8-Bit 4:2:0 ist, gewinnst du nicht viel, wenn du es nach 10-Bit 4:2:2 wandelst. Infos, die in der Quelle schon nicht vorhanden sind, bekommst mit so einer Konvertierung auch nicht rekonstruiert. Vielleicht der eine oder andere Rundungsfehler weniger. Dithering macht da ja keiner!? Bei der gewählten Datenrate sehe ich so eine Konvertierung eher kontraproduktiv. IMHO bekommst du wirklich bessere Qualität nur über (Luma-)Auflösung und Datenrate hin. Dann ist die Player-Kompatibilität auch wieder besser...

Link to comment
  • 1 year later...

Hallo,

 

hat jemand eine passende config für eine nvenc Kodierung?

ich bekomme es leider nicht ans laufen und würde gerne meine Nvidia Karte zur Konvertierung nutzen

Edited by chvb
Link to comment
  • 2 months later...

Es gibt da nicht die eine Lösung für alles, da Intel, AMD und Nvidia sich nicht auf eine gemeinsame Schnittstelle festgelegt haben.

Und dann sind je nach GPU Generation auch nicht alle Parameter oder Formate möglich.

 

Das heißt du wirst nicht umhin kommen, dich etwas damit auseinander zu setzen.

Und wenn du wenigstens das Topic gelesen hättest, an das du dich dran gehängt hast, währst du schon über einen Link zu einer fertigen Lösung für QSV gestolpert o:)

Link to comment
  • 1 year later...

Für den Decodierung und Codierung mit meiner Nvidia GeForce GTX 1050 Ti benutze ich mit dem aktuellen FFMPEG.exe für das Streamen zum iPad folgende Einstellungen. Diese funktionieren für SD- und HD-Programme.  DMS 2.1.2 Die Bandbreite habe ich bewusst so hoch gesetzt, da ich gute WLAN-Abdeckung habe und der Hardware-Encoder nicht ganz so gut ist bei niedrigeren Datenraten. Da ich yadif für das Deinterlacing benutze und das Scaling auch in Software erfolgt, ist die CPU-Last mit einem Core i5-4560 mit 15-19% nicht ganz so niedrig. Für mich war das aber ein guter Kompromis, da ich dann mit dem Profil sowohl SD 576i als auch HD 720p und 1080i sehen kann.

 

iphoneprefs.ini

 

[HLS HD 5000 kbit GPU HD]
Cmd=-hwaccel cuvid -threads 1 -analyzeduration {analyzeduration} {offset} -i "{infile}" -f mpegts -vcodec nvenc_h264 -force_key_frames "expr:gte(t,n_forced*{segdur})" -bufsize 6400k -maxrate 5000k  -map 0:a:0 -map 0:v:0 -vf "yadif=0:-1:1, scale={scalex}:{scaley}" -preset hq -vprofile high -level 4.2 -acodec aac -ab 192k -ar 48000 -ac 2 -async 1 -y "{outfile}"
maxWidth_IPhone=1280
maxHeight_IPhone=720
maxWidth_IPad=1920
maxHeight_IPad=1080

Link to comment
×
×
  • Create New...