Help Optimizing Wirecast Setup
Hi! I work for a small non profit that hosts events and we want to start Facebook Live-streaming our events. I like the way the stream itself looks on Facebook, but I want to record the events and upload the recordings to YouTube. (They're over an hour long so Facebook reduces them to 480p when it saves it on Facebook.) However the recordings don't look very good and I want to record them at 1080p, but when I choose 1080p it jumps to about 90% CPU. (when I record at 720p it stays around 60%) I feel like we have a fast enough laptop to run the stream and record it while keeping the CPU lower but I feel like I'm not optimizing the settings properly. Could someone help me? Maybe I'm overlooking something really simple, I'm fairly new to live video.
Things that I don't really understand:
- GPU ?
- Canvas Size (how do I see what mine is/change it? It looks like it's a ScreenFlow thing but what is that and how does that relate to Wirecast? Is it a different program??)
- Encoder Presets VS. Output Settings ?
Thank you for any suggestions on getting higher quality recordings while lowering CPU. The specs are listed below.
These are my specs:
Ethernet: 11.60 Mbps Upload
MacBook Pro 3.1GHz Dual-core Intel i7
16 GB 1867 MHz DDR3
Intel Iris Graphics 6100
2 Vixia Handicams 30fps (HDMI outs)
--> (hdmi cables)
HDMI to SDI converters
--> (75 ft. HD-SDI cables)
SDI to Thunderbolt BM Design Ultrastudio Mini Recorders
--> (2 Thunderbolt cables)
Audio Interface USB
Wirecast Studio 7.5.0 Specs
Canvas Settings: ???
- Encoder: Apple H.264
- 1280 x 720, 30 Frames per second
- Average bit rate: 2250
- Profile: Main
- Key frame every: 240 frames
- Facebook Live Encoding: 720p30 (2Mbps) x264 H.264
- Record to Disk Encoding: 720p30 (2Mbps) x264 H.264
- Video Display Rate: 30 fps, Live Icon FPS in middle
- Processing: High Quality Video, Render using YUV colorspace on the GPU
= CPU Usage: 50 - 60%
Recording Sample on YouTube: https://www.youtube.com/watch?v=c4HVbsCNCSk
One very basic step would be to minimize scaling in any form.
Example: Cam is 480p, Canvas is 720p and output is set to 1080p
In this case WIrecast scales twice and the result would be bad in regards to CPU and quality.
In the above example it would be best to make the canvas to 1080 as well so only one scaling applies.Reply
Okay so my cameras are 1080p but I need to broadcast facebook live at 720p. I changed my canvas from 720 to 1080 and my encoder to 1080 but it was just as high cpu at ~95% with dropped frames. How do I get a high quality recording but also 720p facebook stream? Is it more CPU-friendly to upgrade Wirecast to get ISO Rec and is that raw camera and less CPU-intensive?Reply
Rob Rusli If you're on Mac I'd suggest local recording of the streamed content using Apple ProRes. It uses much less CPU than any H.264 codec unless you use the same encoder as streaming (but that would be lower quality).
As Jens notes, ISO recording is I-Frame so it's light CPU use. That's one reason why our ISO recording is an I-Frame codec. This is recording camera sources though, not the final switched stream.
Also as Jens notes, scaling involves CPU resources so limiting scaling to the encoder only can help.
Turning off Live Icons may lower CPU a bit.
If it's not inconvenient (depends on the kinds of switching you need to do) turning off Preview display may also lower CPU.
Generally you want to keep total system CPU use under 80% or you may have issues.Reply
So as soon as I put it on MOV ProRes 1080 and canvas size 1080 the CPU is at 57% with just recording to disk. Once I start Facebook Living at 720, it spikes to 99%. Is there nothing I can do about this? The computer I have is above what Wirecast recommends in specs which is why I purchased the computer.Reply
Rob Rusli Using a late 2013 15" MBPr 2GHz Quad i7 I get about 30% CPU recording 1080 ProRes.
Personally I always recommend overbuying because you want headroom to grow such as SkyLake or newer i7 so you can stream to more than one destination and record as well. Even then the results may vary depending on your sources.
ProRes has good quality because it's virtually uncompressed and its I-Frame codec can use less CPU than H.264.
You can record using the same encoder that you stream with which also be efficient use of the CPU, because you're only using one encoder (twice) but the quality generally won't match ProRes in that case.
You can turn off Live Icons in Wirecast Preferences and that may lower the CPU a little bit more.Reply
Rob Rusli Number of cores has greater influence than processor speed especially when it comes to real time encoding. Some encoders can use the GPU (Graphics Card) to lower CPU use when encoding. Wirecast support NVENC encoding supported on recent Nvidia graphics card (which Macs generally don't use though).Reply
@CraigS can you share where we would find the Apple ProRes setting?
Right now, I have the canvas set to Auto 1280 x 720.
In the output menu, I have the Facebook Live recording set to encoding: Facebook 720p30 (2Mbps) x264 H.264 and record to disk set to MOV: ProRes 720p 16:9 (1280x720p).
Note: In preferences, we have "show number of viewers" off and maximum reconnect attempts set to 7.
Is this an ideal setup that also won't tax the CPU?Reply
Christian Karasiewicz said:
can you share where we would find the Apple ProRes setting?
Seems you have it noted below. It's a record to disk setting.
Christian Karasiewicz said:
record to disk set to MOV: ProRes 720p 16:9
Christian Karasiewicz said:
Is this an ideal setup that also won't tax the CPU?
ProRes recording generally uses less CPU than H.264 recording unless you use the streaming encoder but that often sacrifices quality.
For lowest CPU use when streaming on Mac you'd want to use an Apple H.264 preset rather than x264. Apple H.264 uses their equivalent of Intel QuickSync (unless you have a Mac Pro because its CPU doesn't provide that feature)Reply