video conversion performance

Posted on 2012-09-07
Medium Priority
Last Modified: 2012-09-09
I have a 64-bit windows server that runs ffmpeg and mkvmerge to perform video file manipulation.

The app is a 64-bit c# console app that basically runs in a loop and waits for something to process.  It is monitoring a folder and when it sees a file in the folder it grabs the file and processes it then puts the processed file in to another folder.
It processes small videos by calling out and running ffmpeg and mkvmerge at the command line.
It creates asynchronous threads to process in parallel (at least I think it is doing that).
The videos are all well under 1 meg in size.

This is real-time processing and I could have as many as 1000 simultaneous requests so every millisecond counts.

I have tried to tune it as best I can, but I am looking for better performance.
The bottleneck is in the ffmpeg/mkvmerge processing.

Here are my thoughts on ways to improve performance.  I am looking for comments on which changes I can make to get biggest performance boost with least amount of $$.
And which changes are not going to make a big difference.

1 - more powerful CPU (add more cores).
2 - use solid state hard drives?
3 - cache more videos in RAM (since the videos are quite small I could in theory create a RAMdisk.
4 - link directly to ffmpeg and mkvmerge libraries instead of shelling out to command-line. (not sure if this would buy me much performance increase)
5 - switch to Linux?
6 - Any other ideas?

Thanks for your thoughts.

Question by:kevinvw1
1 Comment

Accepted Solution

OCDan earned 2000 total points
ID: 38378068
The disk speed is going to be a big bottle neck here. SSD's IMO are probably the most cost effective upgrade (after RAM, depending on how much you have).

Depending how much you are looking to spend, these have stupidly high IO, which is what you need: RevoDrive

Depending on what quality is required, GPU conversion maybe the way to go, if you can find an appropriate program to do that for you.

Linux install will not make a huge difference (spec dependent), but it's free so...

I presume you have RAID arrays in there for maximum IO, try to get this sort of flow as much as possible:
-Read file into RAM
-Write File to a different hard disk.

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Users will learn how to set proper sequence settings, scale images, paste attributes, add transitions, fades, and music. Open up Final Cut Pro 7 and Create a new Project: Set the Sequence Settings. a) Click File > Easy Setup > Format > Apple ProRe…
This video teaches viewers how to process images for a time-lapse video. Programs required: Adobe Lightroom, Adobe After Effects, Video Editing Program. In Adobe Lightroom: Import sequence image files into Adobe Lightroom: Develop settings of an I…
Suggested Courses

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question