Author |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Sat 22 Feb '14 6:27 Post subject: FFMPEG Windows Apache 64bit Limiting CPU Consumption |
|
|
So basically i want to control / limit the cpu consumption of ffmpeg.exe on windows i thought i would post it here since it is a video streaming site.
Running under apache 2.4.6 64bit vc11.
Who has any idea of any tools or programs that can limit the cpu consumption of a process ?
I need to find something that can constantly scan for ffmpeg.exe and limit the cpu of it. Such a headache from this process.
http://ffmpeg.zeranoe.com/builds/
I saw some posts of people limiting apache's cpu consumption no idea if it was built in or some kind of third party program/tool you are using.
I have been searching sourceforge.net and github but everything i find is all for stress testing and not limiting cpu consumption of a specific process.
I did find this but i need a program constantly listening out for ffmpeg.exe (since it runs and closes at its own free will) http://stackoverflow.com/questions/11357713/how-to-limit-ffmpeg-cpu-usage?rq=1 |
|
Back to top |
|
jimski
Joined: 18 Jan 2014 Posts: 196 Location: USSA
|
|
Back to top |
|
Anaksunaman
Joined: 19 Dec 2013 Posts: 54
|
Posted: Sat 22 Feb '14 9:30 Post subject: FFMPEG Windows Apache 64bit Limiting CPU Consumption |
|
|
In the stackoverflow article you link to, there seems to be a consensus that reducing the -threads option for ffmpeg may be an option to reduce cpu usage. (discussed very briefly in the duplicate question link).
Also, while it's more of a bandwidth measure, might lowering bitrates help reduce cpu work and thus consumption?
https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Sat 22 Feb '14 17:16 Post subject: |
|
|
I came accross those programs in my search but the issue is none of them actualy listen or wait for the program to run they only work on currently running programs.
The problem with ffmpeg in a server enviorment is it is not always running it only gets run when someone uploads a media item and it converts it to a use friendly format such as flv, mp4, ogg, webm.
So everytime it closes and starts back up again it wont have the configuration set to limit it or set its proccess affinity. It is a bit of a headache i recon this is why people choose linux because they can control and limit programs like this.
Also with process tamer it wont download on any browser they have some kind of server issue.
(I did use the -threads 1 option on ffmpeg and it did not change anything.)
Process lasso might do the trick though i never came accross it before and it has a watchdog that waits for specific programs i will give it a test and post back if it works. |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Sat 22 Feb '14 20:23 Post subject: |
|
|
Process lasso seems to be working fine for now will see how things go with it so far i like it.
Anyone aware of similar software out there that is cheaper or free ? |
|
Back to top |
|
Jan-E
Joined: 09 Mar 2012 Posts: 1266 Location: Amsterdam, NL, EU
|
|
Back to top |
|
Jan-E
Joined: 09 Mar 2012 Posts: 1266 Location: Amsterdam, NL, EU
|
Posted: Sat 22 Feb '14 21:37 Post subject: |
|
|
I was wondering if CPUlimit.exe (a 32-bit program) would work on a 64-bit OS. A little bit to my surprise it did work well on my 64-bits Windows 7 Pro. Try it at you own risk:
http://phpdev.toolsforresearch.com/cpulimit.zip
Start the program with 'cpulimit' in the directory with the exe and the ini.
With these settings ffmpeg only used 10% of the CPU capacity. When I issued cpulimit /q to stop the program, CPU usage of ffmpeg jumped up to 60-70%. |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Sun 23 Feb '14 5:56 Post subject: |
|
|
Jan-E wrote: | I was wondering if CPUlimit.exe (a 32-bit program) would work on a 64-bit OS. A little bit to my surprise it did work well on my 64-bits Windows 7 Pro. Try it at you own risk:
http://phpdev.toolsforresearch.com/cpulimit.zip
Start the program with 'cpulimit' in the directory with the exe and the ini.
With these settings ffmpeg only used 10% of the CPU capacity. When I issued cpulimit /q to stop the program, CPU usage of ffmpeg jumped up to 60-70%. |
Thats good to know thanks jan-e i am currently using process lasso at the moment it gives me extra control over ram(i dont need it) but also setting process priorities etc.
It also starts at windows startup and is running all the time.(Allows me to set what programs / executables should always be running.)
This let me fix nginx to get nginx to run at windows boot. So i can restart windows server and now nginx will start at startup too so it killed allot of birds with one stone for me.
It also let me select what cores/threads of cpu to assign specific processes too (Very handy feature). Everything seems to be performing better now ffmpeg no longer hogs up my cpu |
|
Back to top |
|
Jan-E
Joined: 09 Mar 2012 Posts: 1266 Location: Amsterdam, NL, EU
|
Posted: Wed 26 Feb '14 22:22 Post subject: |
|
|
Today I stumbled over the php_av extension:
http://www.php-qb.net/
https://github.com/chung-leong/av/wiki
As someone who ported php_ffmpeg.dll from PHP 5.2 up until PHP 5.6 I was immediately attracted. You might want to try it:
http://phpdev.toolsforresearch.com/php-5.4.26RC1-nts-Win32-VC9-x86.zip
In the ZIP there is a phpinfo.htm with the specifications of php_av.dll. You'll need Zeranoe's shared DLL's from this build, but they are included in the ZIP as well:
This is a FFmpeg Win32 shared build by Kyle Schwarz.
Zeranoe's FFmpeg Builds Home Page: <http://ffmpeg.zeranoe.com/builds/>
This build was compiled on: Apr 24 2013, at: 22:21:53
FFmpeg version: 2013-04-24 git-aa96439
libavutil 52. 27.101 / 52. 27.101
libavcodec 55. 6.100 / 55. 6.100
libavformat 55. 3.100 / 55. 3.100
libavdevice 55. 0.100 / 55. 0.100
libavfilter 3. 60.101 / 3. 60.101
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Last edited by Jan-E on Wed 12 Mar '14 20:03; edited 1 time in total |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Thu 27 Feb '14 4:13 Post subject: |
|
|
Oh wow brilliant thanks Jan-E i just went over to using HTML5 on all videos on my site i had a bit of a nightmare with flv due to corrupt encoding in the original videos and pseudo streaming. Now i use MP4, webm and ogg files (Fully html5 compatible)
This is the HTML5 media player i use if anyone was intreasted.
http://mediaelementjs.com/
But that extension looks so wounderful if it is stable i will use it. Anything that functions for videos or html5 attracts me |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Thu 27 Feb '14 23:56 Post subject: |
|
|
I tested it Jan-E not working with php 5.5.7 nts 64bit vc11. Oh i see its compiled for vc9 |
|
Back to top |
|
Jan-E
Joined: 09 Mar 2012 Posts: 1266 Location: Amsterdam, NL, EU
|
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Fri 28 Feb '14 18:31 Post subject: |
|
|
Thanks jan that version works fine |
|
Back to top |
|
Jan-E
Joined: 09 Mar 2012 Posts: 1266 Location: Amsterdam, NL, EU
|
Posted: Fri 28 Feb '14 20:30 Post subject: |
|
|
BTW: I have upgraded it to FFMpeg 2.1.4:
http://ffmpeg.zeranoe.com/blog/?p=276#more-276
Zeranoe's latest builds have extra codecs, like x265. In the ZIP the FFMpeg DLL's are included for the moment, but in the future I will only include Zeranoe's readme as php_av_readme.txt.
Let me know how you use it. Is it a replacement for system calls to ffmpeg.exe? How does it perform? And (to be on topic) do ini-settings like av.max_threads_per_stream have any effect? |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Fri 28 Feb '14 20:57 Post subject: |
|
|
I think the max threads per stream is if your streaming through php or doing live streaming i do not use it for that purpose.(And i dont see how it would work when nginx delivers all my static content.)
Like you said just to replace system calls to ffmpeg.exe it seems to work ok i have a much higher success rate in generating mp4 videos from flv's, .avi, webm, ogg etc etc.
Before i used to get allot of failures because the original uploaded video was corrupt or to generate a mp4 the output mp4 file would be larger than the original. I still do have some corrupt videos generated but thats from FLV's and god knows what the reason for that is.
If you like i can share the input and output data. |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Tue 04 Mar '14 2:20 Post subject: |
|
|
Is anyone familure with how to fix a corrupt output because of flv ? |
|
Back to top |
|
Jan-E
Joined: 09 Mar 2012 Posts: 1266 Location: Amsterdam, NL, EU
|
Posted: Tue 04 Mar '14 19:20 Post subject: |
|
|
FLV container or FLV1 video codec? Sometimes old FFmpeg's or old MEncoders do what others cannot. I have got a bunch of old versions. But we are getting really off-topic now. Mail me at phpdev AT ehrhardt.nl to continue. |
|
Back to top |
|
C0nw0nk
Joined: 07 Oct 2013 Posts: 241 Location: United Kingdom, London
|
Posted: Fri 14 Mar '14 18:13 Post subject: |
|
|
Jan-E wrote: | FLV container or FLV1 video codec? Sometimes old FFmpeg's or old MEncoders do what others cannot. I have got a bunch of old versions. But we are getting really off-topic now. Mail me at phpdev AT ehrhardt.nl to continue. |
I did send you a email jan but had no reply. C0nw0nk AT hotmail.co.uk |
|
Back to top |
|
jimski
Joined: 18 Jan 2014 Posts: 196 Location: USSA
|
Posted: Fri 05 Dec '14 9:56 Post subject: |
|
|
Jan-E, you may want to know that your AV builds are no longer compatible with the ffmpeg latest releases because ffmpeg renamed their dlls.
The latest versions of ffmpeg include avcodec56.dll while php_av.dll expects the avcodec55.dll.
The latest version of shared ffmpeg that I was able to get working with AV (php5.3) was dated August 8 2014.
Hope it helps. I'm a fan of your builds.
Last edited by jimski on Sun 11 Jan '15 9:42; edited 1 time in total |
|
Back to top |
|
jimski
Joined: 18 Jan 2014 Posts: 196 Location: USSA
|
Posted: Sun 11 Jan '15 9:30 Post subject: |
|
|
How do you guys manage ffmpeg conversions on windows.
Do you use a job queue or a different method?
If you don't use a job queue then how do you deal with the cases when an ffmpeg video conversion fails for some reason. How do you track those cases and how do you restart them. Also how do you deal with cases when ffmpeg process hangs. How do you track it and shut it down.
Also post your experiences if you do use a job queue on windows.
On Linux all this is much simpler because running a job queue and getting the process IDs and tracking/shutting down processes is well implemented by the Linux OS and by php POSIX and other functions which are not available on windows. Also there are many open source projects related to this subject. On windows this is a major pain in the rear suspension. |
|
Back to top |
|