Page 1 of 2

Only one core used by wmsmpeg when transcoding

Posted: Tue Apr 06, 2010 7:43 pm
by paaland
I have an AMD Athlon 64 X2 (BE2300) cpu, which is a dual core cpu running at 1.9 GHz. When transcoding for my xbox 360 one core is running at 100% and the other core is idle (resulting in overall CPU load at 50%). Sometimes, especially on HD content, the playback stutters and rebuffers quite often.

Is there any way or making wmsmpeg.exe use both cores, or any other encoder that I can use which is more efficient on multi-core cpu's? I imagine that if both cores were used it might be enough so the rebuffering problem goes away.

Re: Only one core used by wmsmpeg when transcoding

Posted: Thu Apr 08, 2010 10:30 am
by Eugene
paaland wrote:I have an AMD Athlon 64 X2 (BE2300) cpu, which is a dual core cpu running at 1.9 GHz. When transcoding for my xbox 360 one core is running at 100% and the other core is idle (resulting in overall CPU load at 50%). Sometimes, especially on HD content, the playback stutters and rebuffers quite often.

Is there any way or making wmsmpeg.exe use both cores, or any other encoder that I can use which is more efficient on multi-core cpu's? I imagine that if both cores were used it might be enough so the rebuffering problem goes away.
WmsMpeg (FFMPEG) is not supported multithread for WMV. You can use the profile transcoding "Movies-DirectShow - WMV", probably somewhere in the system is activated multithread for WMVideo9 Encoder.

Re: Only one core used by wmsmpeg when transcoding

Posted: Sun May 23, 2010 3:12 pm
by copson
Hi Eugene,
I have a similar problem but my encoding is to a Samsung TV (B650) which uses MPEGTS and still only seem to use one core. Encoding from 1920x1080 mkv to 1280x720 then only gets a fps lower than 24 using only one of my 2.4GHz cores, which make the stream unwatchable due to buffering and I have to pre-transcode them to be watchable.

Is there some setting of the FFMPEG (or any other codec that might work) I can use for the Samsung that actually use more than one core to improve the performance?

Re: Only one core used by wmsmpeg when transcoding

Posted: Sun May 23, 2010 3:48 pm
by Eugene
Hi,
copson wrote: I have a similar problem but my encoding is to a Samsung TV (B650) which uses MPEGTS and still only seem to use one core. Encoding from 1920x1080 mkv to 1280x720 then only gets a fps lower than 24 using only one of my 2.4GHz cores, which make the stream unwatchable due to buffering and I have to pre-transcode them to be watchable.

Is there some setting of the FFMPEG (or any other codec that might work) I can use for the Samsung that actually use more than one core to improve the performance?
If the video encoding is supported by the TV, you can use the transcoding profile "Movies - TsMuxer", which does not change the video, so fast.

Re: Only one core used by wmsmpeg when transcoding

Posted: Sun May 23, 2010 5:13 pm
by copson
Thanks for the tip! I tried the "Movied - TsMuxer" profile but it was jerky, like it was slowing up and down. Sound seem to be in sync though but not really watchable due to the non-smooth playback.

Tried a few other transcoding settings and the CoreAVC codec just seems to manage to keep it up to speed so I ended up using that. It also seems to use multiple threads as both wmsmpeg.exe and wms.exe seems to be high on the cpu when using this profile.

There was another TsMuxer setting I tried that did not work though, the Movies - DirectShow - TsMuxer which gave the error "Error (code : 80004002) - No such interface supported". Would it be possible to register something to get this to work?

Re: Only one core used by wmsmpeg when transcoding

Posted: Sun May 23, 2010 7:02 pm
by Eugene
copson wrote:Thanks for the tip! I tried the "Movied - TsMuxer" profile but it was jerky, like it was slowing up and down. Sound seem to be in sync though but not really watchable due to the non-smooth playback.
If you use a WiFi connection, then the problem is this.
copson wrote: There was another TsMuxer setting I tried that did not work though, the Movies - DirectShow - TsMuxer which gave the error "Error (code : 80004002) - No such interface supported". Would it be possible to register something to get this to work?
Settings-Transcoder-Profiles-"Movies - DirectShow - TsMuxer"-Edit: you can go step by step execution, may not have any codecs (Haali, FFDShow)

Re: Only one core used by wmsmpeg when transcoding

Posted: Sun Jun 20, 2010 8:50 pm
by Merlin
Hello Eugen,
There is a way that FFMPEG uses more cores.
use the commandline option "-threads <no of cores>"
Is there a way to add this commandline option at the configuration? or at the encoding Profile?

greets,
Martin

Re: Only one core used by wmsmpeg when transcoding

Posted: Mon Jun 21, 2010 6:12 am
by Eugene
Hello,
Merlin wrote: There is a way that FFMPEG uses more cores.
use the commandline option "-threads <no of cores>"
Is there a way to add this commandline option at the configuration? or at the encoding Profile?
The program adds this parameter according to the configuration, but FFMPEG does not support it for WMV.
You can check: Settings - Transcoder - Profiles - "Movies (additional)" - Edit

Code: Select all

function GetMultiThreadSupported(const aVideoCodec: string): Boolean;
begin
{  if SameText(aVideoCodec, 'WMV') then
    Result := False
  else}
    Result := True
end;

Re: Only one core used by wmsmpeg when transcoding

Posted: Sat Apr 16, 2011 11:56 am
by tuliolazarini
Hi Eugene, hi everyone,

I'm using WMS 1.09.1 on a Core 2 Quad Q6600 running Windows Vista, and my client player is a Sony KDL-40EX405 TV. Every time WMS start transcoding, a console window opens and I watch how many FPS are being generated. Sometimes, when I'm watching 1080p MKV movies, FPS are lower than 25fps, and the movie stutters. My default workaround is to pause the movie on TV, wait 15-30 minutes to 'buffer' some transcoded video, and then come back to watch it.

Ok, it works great! But it's a little bit boring waiting movie to buffer... I have 'number of threads transcoding' configured to '4', but wmsmpeg never uses more than 30%-35% CPU. Am I doing something wrong? Is there a way to get wmsmpeg running at higher CPU usage when converting MKV movie to my Sony TV? Are there any restrictions about multithreading in this case?

Thanks in advance, and congrats, Wild Media Server rocks!

Re: Only one core used by wmsmpeg when transcoding

Posted: Sat Apr 16, 2011 12:43 pm
by Eugene
Hi,
tuliolazarini wrote: I'm using WMS 1.09.1 on a Core 2 Quad Q6600 running Windows Vista, and my client player is a Sony KDL-40EX405 TV. Every time WMS start transcoding, a console window opens and I watch how many FPS are being generated. Sometimes, when I'm watching 1080p MKV movies, FPS are lower than 25fps, and the movie stutters. My default workaround is to pause the movie on TV, wait 15-30 minutes to 'buffer' some transcoded video, and then come back to watch it.

Ok, it works great! But it's a little bit boring waiting movie to buffer... I have 'number of threads transcoding' configured to '4', but wmsmpeg never uses more than 30%-35% CPU. Am I doing something wrong? Is there a way to get wmsmpeg running at higher CPU usage when converting MKV movie to my Sony TV? Are there any restrictions about multithreading in this case?
Try use the transcoding profile "Movies - CoreAVC" (select a file - right click - Transcoding profile - "Movies - CoreAVC")
FFDShow codec maybe required