Question / Help OBS 0.16.2 With BMD Intensity Pro 4K max at 20fps

Juraji

New Member
Yeah, today my brand new BMD Intensity Pro 4K arrived, so I jammed it into my streaming PC and hooked up the nessecary cables and settings.
Then I installed a fresh copy of OBS Studio for Linux and started setting up scenes. But as I added the BlackMagic Device source and set it up to show the incoming feed I noticed the FPS count of obs not exceeding 18~20 fps with the CPU not even breaking a sweat.

I've been searching for hours on end, even contemplating installing Windows and be done with it. This is however NOT an option as it would make me compromise too many other purposes of the machine.

System specs (of PC running the capture card and OBS):
OS: Linux Ubuntu 16.04 with Gnome3
CPU: AMD FX-4300 (3.8Ghz, 4 cores)
MB: Asus M5A78L-M/USB3 (Video chipset: AMD Radeon RS780 with 1G Frame buffer size)
RAM: Geil 12GB DDR3@1333MHz

OBS Scenes with non-capture sources work fine:
http://puu.sh/uiuV3/dc0b643b84.png

OBS Scene with screen capture is not fully 30fps but acceptable:
http://puu.sh/uivfc/4f11bcd45d.png

OBS Scene with BlackMagic device lingers around 18~20fps:
The input stream is 1080p@60, I can't set this any lower, because that would mean lowering the actual resolution on the game machine.
The CPU usage never exceeds 20%, so I feel like something is holding it back... Disabling the preview gains me a frame or 2. http://puu.sh/uivrR/7e2b00bddd.png

Things I tried but failed:
- Setting the output format in BlackMagic Desktop Video Setup: Doesn't seem to do anything at all
- Find a better/faster driver for the RS780 chipset: The best I can do is the Gallium 0.4 driver...
- Contemplate adding a dedicated graphics card: Can't the only PCIe port is taken by the capture card.
- On the game machine the capture card is on HDMI out, while the main monitor is on DVI, both "monitors" are in a duplicate setup, so the image is sent to both;
With this I tried to find a way to have the main monitor show 1080p@60 while the capture would recieve 720p@30, but this doesn't seem possible.

01:05:48 AM.124: Processor: 4 logical cores
01:05:48 AM.124: Processor: AMD FX(tm)-4300 Quad-Core Processor
01:05:48 AM.124: Physical Memory: 11745MB Total
01:05:48 AM.124: Kernel Version: Linux 4.4.0-64-generic
01:05:48 AM.124: Distribution: "Ubuntu" "16.04"
01:05:48 AM.144: OBS 0.16.2 (linux)
01:05:48 AM.144: ---------------------------------
01:05:48 AM.145: ---------------------------------
01:05:48 AM.145: audio settings reset:
01:05:48 AM.145: samples per sec: 44100
01:05:48 AM.145: speakers: 2
01:05:48 AM.230: OpenGL version: 3.3 (Core Profile) Mesa 12.0.6
01:05:48 AM.230:
01:05:48 AM.287: ---------------------------------
01:05:48 AM.287: video settings reset:
01:05:48 AM.287: base resolution: 1280x720
01:05:48 AM.287: output resolution: 1280x720
01:05:48 AM.287: downscale filter: Bilinear
01:05:48 AM.287: fps: 30/1
01:05:48 AM.287: format: NV12
01:05:48 AM.288: ---------------------------------
01:05:48 AM.320: ---------------------------------
01:05:48 AM.320: Loaded Modules:
01:05:48 AM.320: text-freetype2.so
01:05:48 AM.320: rtmp-services.so
01:05:48 AM.320: obs-x264.so
01:05:48 AM.320: obs-transitions.so
01:05:48 AM.320: obs-outputs.so
01:05:48 AM.320: obs-libfdk.so
01:05:48 AM.320: obs-filters.so
01:05:48 AM.320: obs-ffmpeg.so
01:05:48 AM.320: linux-v4l2.so
01:05:48 AM.320: linux-pulseaudio.so
01:05:48 AM.320: linux-jack.so
01:05:48 AM.320: linux-decklink.so
01:05:48 AM.320: linux-capture.so
01:05:48 AM.320: image-source.so
01:05:48 AM.320: ==== Startup complete ===============================================
01:05:48 AM.321: Service '' not found
01:05:48 AM.322: All scene data cleared
01:05:48 AM.322: ------------------------------------------------
01:05:48 AM.330: pulse-input: Server name: 'pulseaudio 8.0'
01:05:48 AM.330: pulse-input: An error occurred while getting the source info!
01:05:48 AM.330: pulse-input: Server name: 'pulseaudio 8.0'
01:05:48 AM.330: pulse-input: An error occurred while getting the source info!
01:05:48 AM.331: xshm-input: Geometry 1440x900 @ 0,0
01:05:48 AM.354: v4l2-input: Start capture from /dev/video0
01:05:48 AM.458: v4l2-input: Input: 0
01:05:48 AM.508: v4l2-input: Resolution: 320x240
01:05:48 AM.508: v4l2-input: Pixelformat: VYUY
01:05:48 AM.508: v4l2-input: Linesize: 640 Bytes
01:05:48 AM.509: v4l2-input: Framerate: 30.00 fps
01:05:48 AM.511: [Media Source 'Branding video']: settings:
01:05:48 AM.511: input: /media/files/Streaming/Resources/Channel Brand - silent - no end flash.mp4
01:05:48 AM.511: input_format: (null)
01:05:48 AM.511: is_looping: yes
01:05:48 AM.511: is_forcing_scale: yes
01:05:48 AM.511: is_hw_decoding: yes
01:05:48 AM.511: is_clear_on_media_end: no
01:05:48 AM.511: restart_on_activate: yes
01:05:48 AM.524: Capture Card: Starting capture...
01:05:48 AM.705: Switched to scene 'Live - Game PC Screen 1'
01:05:48 AM.705: ------------------------------------------------
01:05:48 AM.705: Loaded scenes:
01:05:48 AM.705: - scene 'Startup':
01:05:48 AM.705: - source: 'Branding video' (ffmpeg_source)
01:05:48 AM.705: - source: 'Text - Starting Soon' (text_ft2_source)
01:05:48 AM.705: - scene 'Live - Game PC Screen 1':
01:05:48 AM.705: - source: 'Capture Card' (decklink-input)
01:05:48 AM.705: - source: 'Camera' (v4l2_input)
01:05:48 AM.705: - filter: 'Afbeeldingsmasker' (mask_filter)
01:05:48 AM.705: - source: 'Logo - Juraji' (image_source)
01:05:48 AM.705: - scene 'Live - Stream PC Screen':
01:05:48 AM.705: - source: 'Schermopname (XSHM)' (xshm_input)
01:05:48 AM.705: - source: 'Camera' (v4l2_input)
01:05:48 AM.705: - filter: 'Afbeeldingsmasker' (mask_filter)
01:05:48 AM.705: - source: 'Logo - Juraji' (image_source)
01:05:48 AM.705: - scene 'Pause':
01:05:48 AM.705: - source: 'Background - Pause Screen' (image_source)
01:05:48 AM.705: - source: 'Text - Coffee Time' (text_ft2_source)
01:05:48 AM.705: - scene 'Ending':
01:05:48 AM.705: - source: 'Branding video' (ffmpeg_source)
01:05:48 AM.705: - source: 'Text - Thank For Watching' (text_ft2_source)
01:05:48 AM.705: ------------------------------------------------
01:05:48 AM.767: adding 23 milliseconds of audio buffering, total audio buffering is now 23 milliseconds
01:05:49 AM.130: Update check: last known remote version is 0.4.0
01:15:23 AM.370: User switched to scene 'Live - Stream PC Screen'
01:15:25 AM.343: User switched to scene 'Live - Game PC Screen 1'
01:27:49 AM.145: Source 'Capture Card' renamed to 'Intensity Pro 4K'
01:29:35 AM.366: User switched to scene 'Live - Stream PC Screen'
01:29:53 AM.806: User switched to scene 'Ending'
01:29:55 AM.973: User switched to scene 'Startup'
01:30:16 AM.630: adding 23 milliseconds of audio buffering, total audio buffering is now 46 milliseconds
01:33:39 AM.622: User switched to scene 'Live - Game PC Screen 1'

Any input is greatly appreciated,
Thanks in advance
 
Last edited:

c3r1c3

Member
1. Make sure your system is running in dual channel mode, and the memory is balanced (i.e. channel A1 has the same size stick as B1, and the same for A2 and B2).

2. OBS composites on the GPU, and your GPU is one built into the MB. And it's VERY weak. If #1 doesn't get you up to 30fps+, then you'll want to get a better GPU and disable the on-board one.

3. You have a Weak CPU (Think 2-core Intel running at 2.4GHz level of weak, that's sharing resources with the on-board GPU, making it even weaker). This means that when encoding video, if your system is doing anything else of weight it'll have trouble encoding video at 1280x720@30p.
 

Juraji

New Member
1. Make sure your system is running in dual channel mode...
I absolutely agree and I assure you this is the case for this system.

2. OBS composites on the GPU, and your GPU is...
Also agreed, tho as stated the system cannot support another 16x card.

3. You have a Weak CPU (Think 2-core Intel running
I find this to be a somewhat odd comparison and I certainly do not agree. Sure it's not top of the line, but it will manage.

I eventually got the capture card to supply the 1080p@60 stream to OBS as 720p@30.

I eventually did the following:
  1. Set the output, from the game machine to the capture card to 720p@30. Resulting in two monitors. M1 in 1080p@60 and M2 in 720p@30.
  2. Write a small python script that uses OpenGL to capture the image of M1 and scale it down. Then it takes that image and displays it on M2.
Everything is running fluently now, even when streaming AND recording at the same time, which I'm not planning to do for now.
I do not understand why I did not do this earlier... I'll host the python app on github after I cleaned it up and made it a bit more user friendly to install and link it for anyone who needs it.

Edit:
According to AIDA, running just the python app uses aprox. 1~2 percent of my GTX 970. I find this VERY acceptable, untill I dish out some cash to upgrade my streaming PC
 
Top