Hallo,
ich habe seit ein paar Tagen endlich einen Mehrkernprozessor und wollte heute anfangen wieder meine Fernsehaufnahmen zu encoden. Ich habe ganz normal mein encodescript gestartet und bemerkt, dass wärend des Encodens nur etwa 40fps rum kamen. Als ich die Systemüberwachung startete habe ich gesehen, dass die CPU 1 zu 100% ausgelastet war, wärend die anderen drei alle vor sich rumidelten. Nach ein paar Suchen im Netz kam ich darauf, dass man -lavcopts den Parameter threads=N mitgeben kann, wobei N zwischen 1 und 8 liegen soll. Das habe ich dann auch noch in der Manpage gelesen. Frohen Mutes habe ich dann mein Script geändert und rief den mencoder wie folgt auf
mencoder "$MPGFILE" -passlogfile "$LOGFILE" -vf yadif,$VFOPTS -oac copy -ovc lavc -lavcopts threads=4:vcodec=mpeg4:vbitrate=$BITRATE:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=$VPASS -ffourcc DIVX -noodml -o "$AVIFILE"
Der erste Erfolg war, dass nun die Last nicht nur auf einem Kern war, sondern immer zwischen den Kernen hin und her sprang. Die FPS blieb aber leider bei konstant 40, obwohl die CPUs teilweise immer noch idelten. Mein I/O Weight war nicht der Rede wert, dass kann nicht der Grund gewesen sein, warum die FPS nicht hoch ging.
Mir stellt sich nun die Frage, ob ich etwas falsch eingegeben oder verstanden habe. Sollte der Codiervorgang nicht schneller werden wenn er die Rechenlast verteilen kann?
Mein System
- Prozessor: Intel Core i5 750 - Board: MSI P55 GD65 - RAM: A-Data 4GB KIT PC3-106670U DDR3-1333 CL8 Gamer - OS: Karmic 64Bit - Das System ist uptodate aus den offiziellen Repositories
Ich hoffe ihr könnt mir helfen. Weitere Fragen beantworte ich gern noch.
Grüße