alvinhochun
New Member
This post discusses turning OBS into a recording-capable software, and basically requests for two things:
One day I was trying to write an open source OpenGL game capturing program using C# and EasyHook (which obviously wouldn't get much performance).
Later, I found this project and surprised to find it being open source, yet not a widely-known "game capturing program". Obviously, OBS now have game capturing, screen capturing and window capturing, so it has great potential to be a great open source "game capturing program" and also a great "desktop recording program".
The problem: OBS is designed for streaming.
1. Lossy compression is wasting CPU power to decrease quality
OBS currently have a "File Output Only" "broadcast" mode, which can sort of do a local game recording/screencasting. Unfortunately, recording with OBS is forced to go through the x264 encoder (or rather, lossy compressor). This makes sense for video streaming (sacrificing some quality and CPU power to reduce size), but isn't optimal for local recording. Since writing speed to the hard drive is usually faster than network speed and we don't need to care about audiences' download speed (at the moment), it can and should record without lossy compression.
Lossy compression result in a decrease in video quality. (If you understand this you can skip this section entirely.) In the following part, I use both CamStudio and OBS to capture this browser window to demonstrate the decrease in quality.
CamStudio:
OBS:
Here is a part of the captured video from both recordings:
Don't see the quality difference? Let's zoom in a bit:
With OBS (x264 encoding):
So if OBS support lossless video compression (could probably use the AVIFILE API with CamStudio codec), we can get the best video quality. Same goes for audio.
2. Scenes are great, but can do in post-processing
Scenes are obviously needed for streaming. However if people are using OBS for recording, they will probably do post-processing anyway, so the video sources can simply be recorded in their original form, no scaling, positioning and cropping needed. It does not need to deal with a window resize, but if it have to, just crop the extra part and fill empty area with black...
- Add support for lossless compression formats (or even no compression at all == raw) for both audio and video
- File recording mode to output video file with the video sources' resolution, without needing to set it manually
One day I was trying to write an open source OpenGL game capturing program using C# and EasyHook (which obviously wouldn't get much performance).
Later, I found this project and surprised to find it being open source, yet not a widely-known "game capturing program". Obviously, OBS now have game capturing, screen capturing and window capturing, so it has great potential to be a great open source "game capturing program" and also a great "desktop recording program".
The problem: OBS is designed for streaming.
1. Lossy compression is wasting CPU power to decrease quality
OBS currently have a "File Output Only" "broadcast" mode, which can sort of do a local game recording/screencasting. Unfortunately, recording with OBS is forced to go through the x264 encoder (or rather, lossy compressor). This makes sense for video streaming (sacrificing some quality and CPU power to reduce size), but isn't optimal for local recording. Since writing speed to the hard drive is usually faster than network speed and we don't need to care about audiences' download speed (at the moment), it can and should record without lossy compression.
Lossy compression result in a decrease in video quality. (If you understand this you can skip this section entirely.) In the following part, I use both CamStudio and OBS to capture this browser window to demonstrate the decrease in quality.
CamStudio:
- CamStudio Loseless Codec v1.5, LZO compression level 6
- Quality 100% (doesn't really affect anything)
- 1616x876
OBS:
- CBR, 6000kbps, CBR padding enabled
- x264 preset: veryfast
- 1616x876
Here is a part of the captured video from both recordings:
Don't see the quality difference? Let's zoom in a bit:
With OBS (x264 encoding):
- Sharp borders gets fuzzy
- Original RGB not entirely preserved
- Slight noise everywhere
So if OBS support lossless video compression (could probably use the AVIFILE API with CamStudio codec), we can get the best video quality. Same goes for audio.
2. Scenes are great, but can do in post-processing
Scenes are obviously needed for streaming. However if people are using OBS for recording, they will probably do post-processing anyway, so the video sources can simply be recorded in their original form, no scaling, positioning and cropping needed. It does not need to deal with a window resize, but if it have to, just crop the extra part and fill empty area with black...