I recently got a CPU upgrade (went from a Core 2 Duo to an i5 3570K; it's amazing :D), and was excited to get to try streaming again (since, obviously, not a lot you can do on a C2D). I've been trying a few games now, all through software capture in windowed mode, and there's good news and bad news.
Good news is, the games themselves are all running perfectly, whereas before streaming would completely cripple my system.
Bad news - this isn't resulting in good streams. All of my streams have been choppy and laggy (though not low-quality, other than frame rate - this doesn't seem to be a bitrate issue). My target is 1280x720 (well, technically 1280x800 since it's a 16:10 capture) at 30fps, but at that resolution, the stream becomes a total slideshow. If I downscale it all the way down to 640x400, it just barely ekes out a steady 30 fps - which works, but isn't ideal, of course. If I had to pin this to one root cause, my graphics card is somewhat old - a GTX 275 - but I didn't think it would cause this much difficulty at 720p (though I don't expect it to pull 1080p 60fps or anything!).
I've attached a log, which has some different attempts at changing quality while streaming TF2 today. Hopefully there's a solution for this that I'm missing.
(the first couple of entries, which have 0% frames dropped, are all from the menus. You can tell the gameplay ones because they'll have 50-75% dropped :p)
Good news is, the games themselves are all running perfectly, whereas before streaming would completely cripple my system.
Bad news - this isn't resulting in good streams. All of my streams have been choppy and laggy (though not low-quality, other than frame rate - this doesn't seem to be a bitrate issue). My target is 1280x720 (well, technically 1280x800 since it's a 16:10 capture) at 30fps, but at that resolution, the stream becomes a total slideshow. If I downscale it all the way down to 640x400, it just barely ekes out a steady 30 fps - which works, but isn't ideal, of course. If I had to pin this to one root cause, my graphics card is somewhat old - a GTX 275 - but I didn't think it would cause this much difficulty at 720p (though I don't expect it to pull 1080p 60fps or anything!).
I've attached a log, which has some different attempts at changing quality while streaming TF2 today. Hopefully there's a solution for this that I'm missing.
(the first couple of entries, which have 0% frames dropped, are all from the menus. You can tell the gameplay ones because they'll have 50-75% dropped :p)
Code:
Open Broadcaster Software v0.460a - 32bit (´・ω・`)
-------------------------------
CPU Name: Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz
CPU Speed: 3392MHz
Physical Memory: 4095MB Total, 4095MB Free
stepping id: 9, model 10, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 4, total cores 4
Windows Version: 6.2 Build 9200
Aero is Enabled
------------------------------------------
Adapter 1
Video Adapter: NVIDIA GeForce GTX 275
Video Adapter Dedicated Video Memory: 911605760
Video Adapter Shared System Memory: 3354996736
------------------------------------------
Adapter 2
Video Adapter: Microsoft Basic Render Driver
Video Adapter Dedicated Video Memory: 0
Video Adapter Shared System Memory: 268435456
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1280x800
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 2500
buffer size: 2500
quality: 7
------------------------------------------
Total frames rendered: 145, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 2500
buffer size: 2500
quality: 7
------------------------------------------
Total frames rendered: 48, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 2500
buffer size: 2500
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1714, outputRateWindowTime: 1000, dropThreshold: 2214
Total frames rendered: 7327, number of frames that lagged: 103 (1.41%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 2500
buffer size: 2500
quality: 7
------------------------------------------
Total frames rendered: 27, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 2500
buffer size: 2500
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1850, outputRateWindowTime: 1000, dropThreshold: 2350
Total frames rendered: 6581, number of frames that lagged: 1098 (16.68%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 2000
buffer size: 2000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1619, outputRateWindowTime: 1000, dropThreshold: 2119
Total frames rendered: 786, number of frames that lagged: 477 (60.69%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 60
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 3500
buffer size: 3500
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1864, outputRateWindowTime: 1000, dropThreshold: 2364
Total frames rendered: 804, number of frames that lagged: 639 (79.48%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1920x1200
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 60
width: 1920, height: 1200
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1854, outputRateWindowTime: 1000, dropThreshold: 2354
RTMPPublisher::BufferedSend: Buffer is full (522375 / 524288 bytes), waiting to send 4097 bytes
RTMPPublisher::BufferedSend: Buffer is full (522375 / 524288 bytes), waiting to send 4097 bytes
RTMPPublisher::BufferedSend: Buffer is full (521065 / 524288 bytes), waiting to send 4097 bytes
RTMPPublisher::BufferedSend: Buffer is full (520377 / 524288 bytes), waiting to send 4097 bytes
RTMPPublisher::BufferedSend: Buffer is full (521035 / 524288 bytes), waiting to send 4097 bytes
Total frames rendered: 929, number of frames that lagged: 420 (45.21%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 3 (0.098%), Number of p-frames dropped: 37 (1.2%), Total 40 (1.3%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1645, outputRateWindowTime: 1000, dropThreshold: 2145
Total frames rendered: 4203, number of frames that lagged: 2659 (63.26%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1280x800
Output resolution: 1280x800
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 1280, height: 800
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1940, outputRateWindowTime: 1000, dropThreshold: 2440
Total frames rendered: 684, number of frames that lagged: 318 (46.49%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 960x600
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 960, height: 600
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1442, outputRateWindowTime: 1000, dropThreshold: 1942
Total frames rendered: 2630, number of frames that lagged: 2074 (78.86%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 960x600
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 60
width: 960, height: 600
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 2540, outputRateWindowTime: 1000, dropThreshold: 3040
Total frames rendered: 1028, number of frames that lagged: 780 (75.88%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 640x400
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 640, height: 400
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 7
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1872, outputRateWindowTime: 1000, dropThreshold: 2372
Total frames rendered: 4235, number of frames that lagged: 434 (10.25%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
=====Stream Start=====================================================================
Multithreaded optimizations: On
Base resolution: 1920x1200
Output resolution: 852x532
------------------------------------------
Loading up D3D10...
------------------------------------------
Audio Encoding: AAC
bitrate: 96
Using Window Capture
Using Window Capture
------------------------------------------
Video Encoding: x264
fps: 30
width: 852, height: 532
preset: veryfast
CBR: no
max bitrate: 4000
buffer size: 4000
quality: 6
------------------------------------------
SO_SNDBUF already at 65536
bufferTime: 1985, outputRateWindowTime: 1000, dropThreshold: 2485
Total frames rendered: 2516, number of frames that lagged: 1865 (74.13%) (it's okay for some frames to lag)
RTMPPublisher::SocketLoop: Aborting due to bStopping
Number of b-frames dropped: 0 (0%), Number of p-frames dropped: 0 (0%), Total 0 (0%)
=====Stream End=======================================================================
Profiler results:
==============================================================
frame - [100%] [avg time: 26.844 ms] [avg calls per frame: 1] [children: 99.2%] [unaccounted: 0.76%]
| scene->Preprocess - [3.95%] [avg time: 1.059 ms] [avg calls per frame: 1]
| video encoding and uploading - [95.3%] [avg time: 25.581 ms] [avg calls per frame: 1] [children: 95.2%] [unaccounted: 0.0708%]
| | CopyResource - [91.5%] [avg time: 24.574 ms] [avg calls per frame: 0]
| | conversion to 4:2:0 - [0.0782%] [avg time: 0.021 ms] [avg calls per frame: 0]
| | call to encoder - [3.52%] [avg time: 0.945 ms] [avg calls per frame: 0]
| | sending stuff out - [0.082%] [avg time: 0.022 ms] [avg calls per frame: 0]
==============================================================