# video player der mehr als ein cpu kern nutzt

## pieter_parker

gibt es einen video player fuer linux der 2 oder 4 cpu kerne nutzen kann?

----------

## Keruskerfuerst

Dann setz mal die USE Variable "threads" in /etc/make.conf und probiers mal aus.

Z.B.: vlc, mplayer, totem,...

----------

## Anarcho

 *Keruskerfuerst wrote:*   

> Dann setz mal die USE Variable "threads" in /etc/make.conf und probiers mal aus.
> 
> Z.B.: vlc, mplayer, totem,...

 

Vielleicht sollte man vorher nachsehen und dann nicht sinnlose Tipps geben. Keines der genannten Programme hat überhaupt ein USE-Flag threads.

Aber es gibt ein mplayer clone mit Multiprozessorunterstützung, scheint aber noch nicht in Portage zu sein:

http://mplayerxp.sourceforge.net/ (grauenvolle Website...)

----------

## Keruskerfuerst

Gut ein sinnloser Tipp...

Videocodierung/decodierung kann man aber leicht parallelisieren.

----------

## Vortex375

Ich bin mir nicht ganz sicher, in wie weit Gstreamer Multi-Threading nutzt, aber Gstreamer kann jedenfalls mehrere Threads und damit mehrere Prozessoren/Kerne verwenden.

----------

## blice

ich bin immer davon ausgegangen, daß ein "-j3" dafür sorgt, daß beide Kerne angesprochen werden, 

desweiteren hat mplayer das flag "cpu-detection" - bei jedem start erkennt der beide CPUs

Und falls ich mich irre, bereue ich den kauf eines Dual-Cores.. da hätte ich für das Geld lieber einen Single-Core mit echten 4 Ghz kaufen können .. (aktuell AMD64X2-3800;2x2000mhz)

----------

## Anarcho

 *blice wrote:*   

> ich bin immer davon ausgegangen, daß ein "-j3" dafür sorgt, daß beide Kerne angesprochen werden, 

 

Das sort lediglich dafür das beim kompilieren mehrere Threads (solange es die Anwendung zulässt) verwendet werden. Das beschleunigt zwar das kompilieren, beeinflusst aber in keinsterweise die Ausführung des Programms später.

 *blice wrote:*   

> desweiteren hat mplayer das flag "cpu-detection" - bei jedem start erkennt der beide CPUs

 

Also laut mplayer Mailinglists usw. unterstützt mplayer explizit kein SMP. Das war wohl auch einer der Hauptgründe warum mplayerxp geforkt wurde (siehe link weiter oben).

Die CPU detection sorgt dafür das Techniken wie XMMS, SSE, 3DNow usw. genutzt werden.

 *blice wrote:*   

> Und falls ich mich irre, bereue ich den kauf eines Dual-Cores.. da hätte ich für das Geld lieber einen Single-Core mit echten 4 Ghz kaufen können .. (aktuell 
> 
> AMD64X2-3800;2x2000mhz)

 

Also ich bereue es nicht da das multitasking mit 2 Kernen doch deutlich angenehmer ist.

----------

## Vortex375

Also ich krieg meinen X2 mit Video nicht voll ausgelastet, nicht mal einen Kern, auch nicht wenn ich h264 mit 1920x1056 Pixel oder sowas abspiele.

Ich denke es kommt zu einem großen Teil auch auf die Grafikkarte an.

----------

## WiredEd

OT:

 *Quote:*   

> Und falls ich mich irre, bereue ich den kauf eines Dual-Cores.. da hätte ich für das Geld lieber einen Single-Core mit echten 4 Ghz kaufen können .. (aktuell AMD64X2-3800;2x2000mhz)

 

Und ich irre mich überhaupt nicht: Ich bin sowas von begeistert über meinen Dualcore (X2-4400 EE). Das kodieren von Videos mit dvd:rip auf beiden Kernen ist überwältigend bei der Geschwindigkeit (ist zwar kein echtes SMP, aber wen interessierts ...). 

Habe in einem Forum einen Thread gefunden, in dem sich irgendwelche Windows-DAUs über ihre 4-Kern Intels unterhalten haben. Die hatten mit einem 500Euro Prozessor weniger Frames beim Kodieren, als ich mit meinem 80Euro AMD X2  :Very Happy:  ... und das Ganze nach mehreren Stunden Dauerlast mit gerade mal 50°C CPU-Temperatur (interne Diode). Benutzer gewisser anderer Betriebssysteme warten noch heute darauf, dass ihre Prozessoren vernünftig unterstützt werden.

Hinzu kommt, dass das World-Update jetzt spürbar schneller abläuft, da beide Kerne zum Kompilieren genutzt werden.

Bis dann jede hungrige Software von mehreren Kernen profitieren kann, muss man halt ein paar Monate/Jahre Gedult haben. Ich kann es kaum erwarten, bis irgendwann mal (hoffentlich) eine xvid-Version kommt, die SMP unterstützt.

----------

## firefly

 *WiredEd wrote:*   

> OT:
> 
>  *Quote:*   Und falls ich mich irre, bereue ich den kauf eines Dual-Cores.. da hätte ich für das Geld lieber einen Single-Core mit echten 4 Ghz kaufen können .. (aktuell AMD64X2-3800;2x2000mhz) 
> 
> Und ich irre mich überhaupt nicht: Ich bin sowas von begeistert über meinen Dualcore (X2-4400 EE). Das kodieren von Videos mit dvd:rip auf beiden Kernen ist überwältigend bei der Geschwindigkeit (ist zwar kein echtes SMP, aber wen interessierts ...). 
> ...

 

nur zur info die dualcore/quadcore prozessoren sind echte SMP systeme nur halt das du anstelle von 2 cpu sockeln nur einen hast. Denn auf der cpu befinden sich physikalsich 2 cpu kerne;) die HT technik von Intel war kein echtes SMP.

----------

## sirro

Hab gerade in den Release-Notes vom mplayer rc2 was von einer option für h264 in ffmpeg gelesen, die ich natürlich direkt mal ausprobieren musst  :Very Happy: 

```
-lavdopts fast:threads=N
```

Wenn ich die benutze hat der Prozess anscheinend drei Threads laut htop braucht aber auch deutlich mehr Ressourcen als ohne die Angabe.

Ohne Threads komme ich in top auf eine Grundauslastung von 40-60% für 1080p und mit threads=2 auf >90-110%! Dafür habe ich das Gefühl, dass bei einem Schwenk, der mit einem Prozess ganz leicht ruckelt, das Ruckeln nicht mehr sichtbar ist.

Der grundsätzliche Leistungs-Mehrverbrauch natürlich unschön, aber dafür hat man mit Threads auf zwei Kernen noch genug Spielraum um Spitzen gekonnt zu meistern.

Könnt ihr bei Interesse ja auch etwas mit rumspielen.

Laut man-page soll das nur mit MPEG1/2 gehen, aber das ist vielleicht veraltet. Steht ja in den Release-Notes auch für h264 drin und die verschiedenen Threads arbeiten alle bei mir.  :Wink: 

----------

## pieter_parker

mplayerxp .. letztes update april 2007

nvidia geforce8 8500gt+ karten haben einen video prozesser der 2ten generation (vp2), geforce9 9500gt+ sogar vp3

4 kerne intel cpu mit 2666mhz gibts fuer unter 200 euro

...

aber es gibt irgendwie keine moeglichkeit vernuepftig hochaufloesende videos mit hoher lbitrate ruckelfrei abzuspielen, irgendwie schade : /

.. es soll zwar moeglich sein den coreavc codec fuer den player zubauen und zubenutzen, aber das klappt oft nicht, oder soll auch keinen wirklichen leistungsschub bringen

-> http://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallationhttp://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallation

warum gibts keinen gescheiten player der 4 cpu kerne nutzt ?

...

/etc/make.conf

```

USE=" mmx mmxext sse sse2 ssse3 X opengl gtk qt3  a52 aac alsa arts dts mp2 mp3 x264 vorbis win32codecs xv xvid java samba lm_sensors flac sensord matroska vcd nvidia xvmc "

```

ich habe ssse3 in meiner make.conf stehen, und auch mit in den mplayer eingebaut, aber warum wird es nicht mit benutzt ?

http://www.gentoo-portage.com/media-video/mplayer

```

mplayer

MPlayer dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2008 MPlayer Team

CPU: Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz (Family: 6, Model: 15, Stepping: 11)

CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1

Kompiliert für x86 CPU mit folgenden Erweiterungen: MMX MMX2 SSE SSE2

Verwendung:   mplayer [Optionen] [URL|Verzeichnis/]Dateiname

```

der mplayer haette nutzten vom ssse3, wie baue ich es richtig ein ?

----------

## ChrisJumper

Servus pieter_parker,

vielleichst postest du mal einen Link zu einem "Hochauflösenden" Film der bei dir ruckelt!

Ich kann die Erfahrung eigentlich nur bestätigen das ich fast noch "keinen" Film hatte der nicht vernünftig auf meinem Dual-Core Rechner lief. Du hast ja scheinbar auch eine gute technische Ausstattung und ich schließe mich der Meinung an, das du mal unterschiedliche Videoausgabetreiber verwenden solltest.

Bestimmt ist der Flaschenhals an einer anderen Stelle als an deiner CPU..

Grüße Chris

----------

## pieter_parker

naja .. top und gkrellm schenke ich recht viel glauben wenn sie mir anzeigen wieviel die cpu beschaeftigt ist

bei transformers bei scenen wo viel beweung im bild ist sehe ich das mit 2 bis 3 mb/s gelesen wird und das ein cpukern zwischen 80 und 92% beschaeftigt ist (blau in gkrellm)

mplayer -nosound datei.h264

so rufe ich den mplayer auf

ffmpeg multithread soll in einer der kommenden versionen moeglich sein

irgendwo hatte ich auch etwas aufgeschnappt das mittels gallium3d die power der gpu endlich fuer solche dinge genutzt werden kann

manche nvidia karten haben einen videoprozessor mit dem es moeglich ist bedingt manche decodier geschichten zubeschleunigen, das aber nur unter windows und auch wohl nicht mit allen h264/vc1 dateien...

den intel e8400 3000 mhz core2duo gibts fuer um die 150 euro, wenn der fronsidebus von 333 mhz standart auf 400 mhz erhoeht wird, laeuft die cpu mit 3600 mhz

ich denke das sollte reichen fuer ruckelfreie wiedergabe mit soundausgabe

mit dem programm setfsb laesst sich im windows der fsb aendern ohne rebooten zumuessen

sowas fuer linux waere praktisch, denn wenn ich rebooten muss um den fsb im bios zuaendern kann ich genauso gut auch gleich windows booten wo ich den highdef film mit dem mpc (media player classic) und dem coreavc video codec laufen lassen kann

coreavc kann 2 oder mehr cpu kerne benutzen und bringt einen guten leistungsschub

http://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallation

ich habe es nicht hinbekommen coreavc nach dieser anleitung mit dem mplayer zupatchen

mit welchen video ausgabe treiber hast du denn die besten erfahrungen gemacht chris ?

----------

## ChrisJumper

Vielleicht bist du technisch schon ein stückchen Versierter als ich. Denn so gut kenne ich mich dann doch nicht mit den Codecs usw. aus.

Aber folgende Erfahrung kennst du bestimmt auch. Wenn du Windows mit dem Vesa-Treiber benutzt kannst du nicht mal ein Fenster verschieben ohne das es ganz schlimm Ruckelt!

Und beim mplayer kann man ja mit dem Parameter -vo ja den Videoausgabetreiber bestimmen. Obwohl ich nicht genau die Ebene kenne auf der diese Art ansetzt. Ich vermute aber schon das wenn ich jetzt z.B. bei mir in der GUI vom gmplayer den "gl2 X11 (OpenGL) - multiple textures version" Treiber verwende und merke das es damit wesentlich weniger CPU und Ressourcen kostet, als wenn ich z.B. den "x11" oder "gl" verwende. Das dir das vielleicht auch helfen könnte.

Vortex375, war es der mir da mal in irgendeinem anderen Thread den tipp gegeben hat :)

Oh und ich glaube die HD-Version von diesem "Blender-Open Source Film", ich komme grad nicht auf dem Namen.. hatte damit zumindest bei mir nicht mehr geruckelt. Wobei er aber auch auf meinem "klienen 3000er AMDxp" Probleme gemacht hat.

Jedenfalls, was du da an Rechenleistung zur Verfügung hast ist ja schon ziemlich stark... und ich kann mir einfach nicht vorstellen das man dann selbst bei hoher Auflösung (ok in Exorbitanten selbst-geränderten Filmen vielleicht), noch solche Probleme hast. Daher vermute ich eher eine andere "einfachere" Fehlkonfiguration.

Grüße!

----------

## py-ro

```
mencoder -ofps 25 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:abitrate=192:threads=2 -o out.mpeg2 in
```

Damit transkodiere ich Videomaterial (720p H.264 im mkv Container) auf meinem Athlon64x2 4200+ mit 2 Threads mit etwas über 30 FPS und streame das ganze auchnoch zu einer UPNP Box. 

Bei wiedergabe liegt ein Kern bei etwa 50%.

Daten des System:

AMD Athlon64x2

Samsung Spinpoint 32MB Cache 

2GB RAM

Was höherauflösendes hab ich leider nicht zum testen.

Py

----------

## pieter_parker

du meinst .elephantsdream ? -> http://www.elephantsdream.org/

```

mplayer datei.h264 -vo gl2 -nosound

MPlayer dev-SVN-rUNKNOWN-4.1.2 (C) 2000-2008 MPlayer Team

CPU: Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz (Family: 6, Model: 15, Stepping: 11)

CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1

Kompiliert für x86 CPU mit folgenden Erweiterungen: MMX MMX2 SSE SSE2

Spiele datei.h264.

libavformat-Dateiformat erkannt!

[lavf] Videostream gefunden, -vid 0

VIDEO:  [H264]  1920x1080  0bpp  25.000 fps    0.0 kbps ( 0.0 kbyte/s)

==========================================================================

Öffne Videodecoder: [ffmpeg] FFmpeg's libavcodec codec family

Ausgewählter Videocodec: [ffh264] vfm: ffmpeg (FFmpeg H.264)

==========================================================================

Audio: kein Ton!

Starte Wiedergabe...

VDec: VO wird versucht, auf 1920 x 1080 (Bevorzugter Farbraum: Planar YV12) zu setzen.

Konnte keinen passenden Farbraum finden - neuer Versuch mit '-vf scale'...

Öffne Videofilter: [scale]

VDec: Verwende Planar YV12 als Ausgabefarbraum (Nummer 0).

Film-Aspekt ist 1.78:1 - Vorskalierung zur Korrektur der Seitenverhältnisse.

[swscaler @ 0x874cca8]SwScaler: using unscaled yuv420p -> bgr24 special converter

VO: [gl2] 1920x1080 => 1920x1080 BGR 24-bit

[gl2] You have OpenGL >= 1.2 capable drivers, GOOD (16bpp and BGR is ok!)

[gl2] antialiasing off

[gl2] bilinear linear

V:   0.0   1/  1 ??% ??% ??,?% 0 0

Beenden... (Ende)

```

spuere keine verbesserung oder verschlechterung mit dem gl2

ansich eine gute idee .. das video durch den mencoder jagen und das was rauskommt weiterleiten /angucken

da der mencoder auch 3...4 cpu kerne nutzen kann (?) .. waere es doch theoretisch moeglich ihn mit 3 kernen das hd video bearbeiten zulassen und im mpeg2 z.b. umzuwandeln und cpu kern 4 von 4 gibt dann das mpeg2 video wieder

----------

## py-ro

Nein, der Mencoder kann keine mehrere Kerne nutzen. Hab viel Zeit darauf verwendet das rauszubekommen.

Steht ja auch weiter oben.

Aber die lavc kann es.

Ich mache das nur weil meine Streamingbox sonst überfordert wäre.

Py

----------

## pieter_parker

... lavc laesst sich aber nicht zur wiedergabe mit 2+ kernen verwenden ?

----------

## py-ro

Ist eine mencoder keine mplayer Option.

Py

----------

## Mr_Maniac

Am besten SOLLTEN filme mit xv als Videoausgabe laufen, da die Farbumwandlung (YUV->RGB) dann von der GPU übernommen wird.

Und bei mir ist das auch die beste Einstellung.

Wenn du on-line mal einen hochauflösenden Film siehst, der auch bei dir ruckelt, dann poste mal bitte einen Link. Ich werde dann auch mal schauen (bei mir ruckeln manche HD-Filme aber auch. Liegt aber auch stark am Codec der verwendet wird.)

----------

## pieter_parker

naja .. die videoes die es so im netz gibt, sind ja so das sie auf jedem pc abspielbar sind, sonst waeren sie nicht im netz  :) 

warum wird da etwas von yuv->rgb gewandelt ?

kann man die wandlung weglassen ? ich will so wenig wie moeglich irgendwas von irgendwo nach irgendwas anderem wandeln

weil jede wandlung bedeutet irgendwo am ende einen verlust von irgendetwas

----------

## c_m

 *WiredEd wrote:*   

> Habe in einem Forum einen Thread gefunden, in dem sich irgendwelche Windows-DAUs über ihre 4-Kern Intels unterhalten haben. Die hatten mit einem 500Euro Prozessor weniger Frames beim Kodieren, als ich mit meinem 80Euro AMD X2  

 Mit solchen Aussagen solltest du extrem vorsichtig sein! Ein "simpler" encode mit DVD Rip ist nichts im Vergleich zu einem avisynth & co encode mit diversen Filtern etc. Da macht dein X2 mal ganz schnell auch die grätsche...

@Topic

Also wenn ein rechner ausgelastet ist bei der Ausgabe eines Videos, dann liegts idR am falschen ausgabefilter (wie ChrisJumper und MrManiac ja schon schrieben).

nen Film auf mehrer Cores zu verteilen ist IMHO mit Kanonenkugeln auf Spatzen geschossen. Lieber die Zeit nutzen und die Ausgabefilter mal durchprobieren. 

Also Xine steht bei mir auf "auto" und ich hatte noch nie probleme ^^

----------

## Mr_Maniac

 *pieter_parker wrote:*   

> naja .. die videoes die es so im netz gibt, sind ja so das sie auf jedem pc abspielbar sind, sonst waeren sie nicht im netz  

 

Nun ja... Es gibt da in der Tat einige Demo-HD-Trailer, die schon nicht mehr so gut auf meinem PC laufen  :Wink: 

Zum Beispiel ein HD-Video von nVidia, das die Vorteile von PureVideo HD (nVidia-Beschleunigungs-Technik) aufzeigen soll (das Video ist ein WMV...)

Oder das Video eines Raketenstarts von der NASA (bekommt man sogar irgendwo auf deren Seite). Das NASA-Video gab es sogar in zwei Formaten. WMV und H264, wenn ich mich nicht irre... Und das H264 lief AFAIK besser  :Wink: 

 *Quote:*   

> warum wird da etwas von yuv->rgb gewandelt ?
> 
> kann man die wandlung weglassen ? ich will so wenig wie moeglich irgendwas von irgendwo nach irgendwas anderem wandeln
> 
> weil jede wandlung bedeutet irgendwo am ende einen verlust von irgendetwas

 

Nun... Ich weiß nicht mehr genau, WARUM filme in YUV gespeichert werden... Ich glaube das spart Platz oder geht schneller oder etwas in der Richtung...

Soweit ich mich momentan erinnern kann (ist gerade etwas zu spät um nachzuschauen  :Wink:  ) bedeutet YUV ja, dass manche Farbinformationen in der Helligkeit versteckt sind, oder ähnliches... Ich kann mich da gut irren und schaue morgen vielleicht noch mal nach...

Auf jeden Fall können Computermonitore kein YUV anzeigen. Also MUSS es leider umgewandelt werden.

Aber wie gesagt: Das sollte inzwischen die GPU machen, wenn man die Ausgabe über xv wählt (normaler Weise sollte der Player dieses Ausgabemodul automatisch auswählen, falls verfügbar).

Und was die Nutzung mehrerer Kerne angeht: Ich weiß nicht, inwieweit man einen Film auf mehrere CPU-Kerne aufteilen kann. Aber theoretisch sollte es doch zumindest möglich sein, Audio und Video auf zwei verschiedene Kerne zu verteilen, oder (vielleicht auch noch die Subtitles und die Filter, falls verwendet)?

EDIT:

Uhm... Nun gut... Ich lag knapp daneben mit dem YUV  :Wink: 

Hier doch noch schnell zwei kleine Links zu Wikipedia:

http://de.wikipedia.org/wiki/YUV

http://de.wikipedia.org/wiki/YCbCr

----------

## pieter_parker

aber hattest du schonmal mit xine einen film gehabt der zwischen 20 und 40gig gross ist ? (zieh 4 bis 5 gig ab wenn eine dts-hd tonspur drin ist)

mit 1920x1080 pixeln und bitratespitzen von bis zu 50mbit/s ? - bezweifel ich  :D

coreavc kann es aufteilen, im windows funktioniert es auch gut damit...

laesst es sich denn in yuv ausgeben? mein projector kann yuv wenn ich mich nicht irreLast edited by pieter_parker on Sat Apr 26, 2008 9:32 pm; edited 2 times in total

----------

## Mr_Maniac

Leider ist mir - bis auf einige Videos im Netz - noch kein HD-Material in die Finger geraten  :Sad: 

----------

## ph03n1x

[ebuild   R   ] media-libs/x264-0.0.20070924  USE="threads* -debug" 0 kB 

[ebuild   R   ] media-video/ffmpeg-0.4.9_p20070616  USE="X a52 aac mmx ogg threads* vorbis xvid zlib (-altivec) -amr -debug -doc -encode -ieee1394 -imlib -network -oss -sdl -test -theora -truetype -v4l -x264" 0 kB 

Also so ein bisschen Unterstützung scheint ja da zu sein...?

----------

## Vortex375

Jo, also ich hab mir das mal angesehen mit htop.

Spiele ich im mplayer in ein HD-Video ab, dann sehe ich in htop nur einen Thread, der im Schnitt so 50-60% CPU-Auslastung hat. An manchen Stellen mit viel Bewegung geht die CPU-Last aber bis 100% hoch und das Bild fängt entsprechend an zu ruckeln.

Spiele ich das selbe Video mit gstreamer ab, sehe ich zwei Threads, die sich die CPU-Auslastung teilen.

Allerdings: Bei mplayer und gstreamer fängt es an zu ruckeln, so bald die (addierte) CPU-Last 100% erreicht. Obwohl auf einem DualCore-Prozessor eigentlich beide Threads von gstreamer zu 100% auslasten können sollten (jeweils einen Kern), ehe es anfängt zu ruckeln.

Also: Gstreamer scheint zum dekodieren mehrere Threads zu benutzen (auf jeden Fall mindestens zwei für Video und noch weitere für Audio - aber deren CPU-Last fällt nicht wirklich ins Gewicht), jedoch kann ich gegenüber mplayer keinen Geschwindigkeitsvorteil feststellen. An Stellen wo der mplayer ruckelt, geht auch gstreamer die Puste aus.

----------

## pieter_parker

mit dem useflag threads spuere ich keine veraenderung 

wie soll das abspielen mit gstreamer funktionieren ?

auf einem 3,17ghz c2d ruckelt es nicht mehr

----------

## c_m

was xine und kaffeine betrifft fiel mir gestern diese Option in die Hände:

processing.ffmpeg_thread_count

In verbindung mit maximalem deinterlacing ging die auslastung auf beiden Kernen spürbar hoch ^^

----------

