2

I am a researcher working on video compression. As part of my work I need to play back raw (i.e. not compressed) video at the correct frame rate for participants to view as part of a compression quality assessment.

These clips are typically 10 seconds long, at a variety of frame rates up to 60fps and at a variety of resolutions from CIF to 1080p. They usually stored in yuv files of 4:2:0 format.

The problem I have is that 1080p videos cannot play back at the correct frame rate (at least above 24 or 30fps). I assume that this is because the data cannot be loaded from the the HDD quickly enough.

I typically used vlc player, or an obscure windows exe I have called vidview. But this is flexible. I have tried adjusting the file caching and disc caching parameters in vlc player to 10000ms, but this does solve the problem.

I usually use a Windows 7 computer, but this is flexible. I may possibly (or possibly not) already have access to an external RAID box. The desktop machine I am using at the moment has an i7, 8GB memory, a SATA2 HDD.

My question is: would simply playing the videos from a faster drive such as a RAID array or SSD be sufficient to solve the problem?

3 Answers 3

3

My question is: would simply playing the videos from a faster drive such as a RAID array or SSD be sufficient to solve the problem?

Maybe - however, before this can be answered more specifically, you first have to determine where the bottleneck in the video playback is to begin with. Indeed, if one could cache the entire video into RAM (or keep a rolling buffer long enough), using a faster disk drive wouldn't make any difference at all (again, assuming you have a large enough buffer).

If your buffer is long enough, it's possible your CPU is bottlenecked during playback. You can determine if this is the case by looking at your CPU usage during video playback; if it reaches a very high value (or you are using a single-threaded decoder, it shows a load of 100/C %, where C is the # of cores), it's possible your CPU is simply too slow to display the video in real-time.


Once you've determined that the CPU is not the bottleneck, then you may want to consider adding a faster storage device to the machine (either SSD or RAM). To determine if your storage device is the bottleneck, you can use something like resmon.exe (included with Windows 7/8) to look at the disk activity of your media player during playback. If the disk transfer rate approaches the maximum speed the disk can handle, then it's likely this is where the bottleneck lies.

3
  • 1
    +1 for 'measure first`.
    – Hennes
    Jul 31, 2013 at 17:33
  • With uncompressed video, it is highly unlikely that the processor (especially a core i7) is the bottleneck. It is more likely the I/O subsystem as the OP suspects and the other answer says. Aug 1, 2013 at 17:55
  • Yeah, I should have mentioned in my answer why I was willing to accept the OPs guess for the disk being the bottleneck. Uncompressed video is much lighter on the CPU than compression. The OP mentioned they were testing compression quality and hadn't mentioned difficultly playing the compressed video, so I assumed the CPU was up to the task . . . also, even if the buffer is long enough, they could be getting buffer underruns if the disk I/O isn't fast enough . . .
    – ernie
    Aug 1, 2013 at 22:07
3

Raw HD generally requires about 120 MB/s, which you're not likely to get off a single spinning disk.

SSDs can get you this speed pretty easily, even on a SATA 3 GB/s port. Tom's Hardware has some charts of read speeds. They've got charts for spinning disks as well.

Another alternative since the clip is short might be to use a RAM disk, and shove the whole video in there.

RAID could get you there, but is probably the most complicated solution, and if you use spinning disks, you'd still have to worry about fragmentation, head seek, and other overhead that could cause dropped frames or other lag.

3
  • 1
    My vote goes for trying out a RAM disk first.
    – Taegost
    Jul 31, 2013 at 17:09
  • Although a RAM disk would be cool, they tend to be quite expensive. Just about any modern SSD will have more than enough speed for what you are trying to do. I would definitely recommend an SSD.
    – tbenz9
    Aug 2, 2013 at 1:28
  • 1
    @tbenz9 by RAM disk, I was just thinking a software RAM disk (as linked in the original answer), not dedicated hardware. Cost for this can be free (e.g. Gavotte Ramdisk), if there's enough system RAM available. The OPs system has 8 gigs of memory, and a 10 second, uncompressed 1080p would fit in less than 1.5 GB.
    – ernie
    Aug 2, 2013 at 15:54
1

I have done some work on the same stuff, 1080p60 is a total pain in the ass its about 3Gbps so you need a sata gen 3 at least to work with a hard drive and that means everything in the chain (processor, hard drive, motherboard) need to conform to the sata 3 standard. Most manufactures will say they support it but really don't.

I ended up using RAM a lot (not a disk, I wrote my own programs), and exclusively Linux. If you are doing research on Windows, you frankly have no idea what the computer is doing. Windows hides far too much from you and makes most things on the edge of consumer research impossible.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.