DayGeckoArt
Member
Back in the VCR days, recording TV was easy. You would just press record. Now it's difficult, but it's still just as legal as it was in the VCR days under the fair use doctrine. Why would you record TV? Many shows are broadcast but never made available in other formats like streaming or Blu-Ray. Some content like local government meetings can be viewed live by the public on Zoom or WebEx with great image quality, but then published in crummy low res formats.
For about a year I've been experimenting with recording TV with OBS and StreamLabs, both from web streams and my cable box. But I've mostly been stumbling through and guessing settings, because most of the information out there is about streaming games. Recently I've learned that there's a bunch of stuff I didn't know and got wrong! So my goal is to have a thread where methods and settings can be discussed so that people can easily understand what their choices are, or in some cases what the best practices are. Hopefully it will be useful to others looking to do this. I think most of this will also be relevant to recording games and recording home movies off VCRs.
My hardware: Dell T3610 workstation with Xeon E5-1620V2 (2013 CPU with no QuickSync encoder), 16GB RAM, Nvidia Qaudro T400 (cheapest GPU with newest NVENC video encoder/decoder), Blackmagic Intensity Pro 4K (for component input)
OBS high level settings: Color Format, Color Space, and Color Range
Color format determines which color format your video gets recorded in, I444, I420, and RGB. Sources: https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/ https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/ https://wiki.videolan.org/YUV https://programmer.help/blogs/scaling-of-nv12-format-pictures-based-on-libyuv-library.html http://paulbourke.net/dataformats/nv12/ https://docs.microsoft.com/en-us/windows-hardware/drivers/display/4-2-0-video-pixel-formats https://en.wikipedia.org/wiki/Luma_(video)
I now use I444. Why I444 when streaming video and video from my cable box is I420? My reasoning is that streaming video and TV are converted to RGB by the time OBS gets them, and I want to record the RGB pixels as accurately as possible. I don't trust the encoder to reverse engineer the image and come up with I420 video that accurately represents the original data.
Color Space refers to the range of colors that the color data represents. An RGB pixel has 256 possible red values, 256 possible green values, and 256 possible blue values. But there are dozens of color spaces in the world of computers and television.
Computers have traditionally used the SRGB color space since the 90s, but current iPads have DCI-P3 screens. If you have an iPad you may have noticed that colors look more saturated. It's because even though they use the same 256/256/256 shades of R/G/B, the highest values in the range are more saturated.
I don't know what this setting does. I used to just set it to REC709 because that's the HDTV standard, but I was told in the thread above to use SRGB. I tried SRGB and there's zero difference in the resulting video. Maybe it's only a flag that gets set in the video? It's possible that the encoder is only seeing the 256 values for each color channel, and encoding whatever it sees without worrying about color space. Maybe if you record from a VCR it would make sense to set it to 601. I think the best way to figure out what to choose is to experiment.
Color Range refers to whether video uses the Full 0-255 range or Partial 16-240. Apparently omitting the lowest and highest values makes sense for TV. According to the forum link below, this affects the output video. But in my experiments using component input from my cable box to my Blackmagic Intensity, the video looks different on the OBS preview based on this setting. Partial gives you a more contrasty image with darker blacks and brighter whites. Full gives slightly faded blacks and less contrast.
You probably should match whatever the source is, but I don't mind the slight contrast reduction so I set it to full. My reasoning here is that even if the video source is 16-240, there's no downside in recording full 0-255, the original data is still there.
TV streaming in the web browser seems to be full range so choose the Full option.
Sources: https://www.richardlackey.com/choosing-video-color-space/ https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/
To be continued with Output settings... Forum experts, please post comments on what I've posted so far and correct anything I'm wrong about!
For about a year I've been experimenting with recording TV with OBS and StreamLabs, both from web streams and my cable box. But I've mostly been stumbling through and guessing settings, because most of the information out there is about streaming games. Recently I've learned that there's a bunch of stuff I didn't know and got wrong! So my goal is to have a thread where methods and settings can be discussed so that people can easily understand what their choices are, or in some cases what the best practices are. Hopefully it will be useful to others looking to do this. I think most of this will also be relevant to recording games and recording home movies off VCRs.
My hardware: Dell T3610 workstation with Xeon E5-1620V2 (2013 CPU with no QuickSync encoder), 16GB RAM, Nvidia Qaudro T400 (cheapest GPU with newest NVENC video encoder/decoder), Blackmagic Intensity Pro 4K (for component input)
OBS high level settings: Color Format, Color Space, and Color Range
Color format determines which color format your video gets recorded in, I444, I420, and RGB. Sources: https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/ https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/ https://wiki.videolan.org/YUV https://programmer.help/blogs/scaling-of-nv12-format-pictures-based-on-libyuv-library.html http://paulbourke.net/dataformats/nv12/ https://docs.microsoft.com/en-us/windows-hardware/drivers/display/4-2-0-video-pixel-formats https://en.wikipedia.org/wiki/Luma_(video)
- RGB is the simplest one, each pixel gets 8 bit values for each color, red, green, and blue. With 8 bits, each color channel has 256 possible values (0 to 255), and when you combine them 256 * 256 * 256 = 16 million colors. Most JPEG files are RGB format. I've recently learned from this forum that RGB isn't supported by the encoder on Nvidia graphics cards so the setting just gives you I420.
- I444 records full color information in 3 channels, but in a different format. This color scheme is known as YUV or YPbPr. Y = luma which is the brightness of a pixel. Pb = blue projection. Pr = red projection. I don't know exactly how it works but the idea is that you generate the green channel by subtracting blue and red from luminance
- I420 is also YPbPr except only the Y value is stored for each pixel. Pb and Pr are stored at half the resolution. So if you have a 4k 3840x2160 video you have that full res for chroma (brightness) but only 1920x1080 for the color information. Almost all computer videos and streaming services use I420.
- NV12 is similar to I420 except the Pb and Pr are interleaved. I can't visualize it so I don't understand it
I now use I444. Why I444 when streaming video and video from my cable box is I420? My reasoning is that streaming video and TV are converted to RGB by the time OBS gets them, and I want to record the RGB pixels as accurately as possible. I don't trust the encoder to reverse engineer the image and come up with I420 video that accurately represents the original data.
Color Space refers to the range of colors that the color data represents. An RGB pixel has 256 possible red values, 256 possible green values, and 256 possible blue values. But there are dozens of color spaces in the world of computers and television.
Computers have traditionally used the SRGB color space since the 90s, but current iPads have DCI-P3 screens. If you have an iPad you may have noticed that colors look more saturated. It's because even though they use the same 256/256/256 shades of R/G/B, the highest values in the range are more saturated.
- SRGB = Standard color space for computers since 1996
- 709 = HDTV standard, almost the same as SRGB
- 601 = Standard Definition TV standard dating back to the 80s
I don't know what this setting does. I used to just set it to REC709 because that's the HDTV standard, but I was told in the thread above to use SRGB. I tried SRGB and there's zero difference in the resulting video. Maybe it's only a flag that gets set in the video? It's possible that the encoder is only seeing the 256 values for each color channel, and encoding whatever it sees without worrying about color space. Maybe if you record from a VCR it would make sense to set it to 601. I think the best way to figure out what to choose is to experiment.
Color Range refers to whether video uses the Full 0-255 range or Partial 16-240. Apparently omitting the lowest and highest values makes sense for TV. According to the forum link below, this affects the output video. But in my experiments using component input from my cable box to my Blackmagic Intensity, the video looks different on the OBS preview based on this setting. Partial gives you a more contrasty image with darker blacks and brighter whites. Full gives slightly faded blacks and less contrast.
You probably should match whatever the source is, but I don't mind the slight contrast reduction so I set it to full. My reasoning here is that even if the video source is 16-240, there's no downside in recording full 0-255, the original data is still there.
TV streaming in the web browser seems to be full range so choose the Full option.
Sources: https://www.richardlackey.com/choosing-video-color-space/ https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/
To be continued with Output settings... Forum experts, please post comments on what I've posted so far and correct anything I'm wrong about!