JT's recording and or streaming set-up

From ShackWiki
Jump to: navigation, search
See Sapiens Streaming guide for additional info.

This is just a quick write up about my setup to record and or stream, it's not exactly in depth and step by step but I think it's good enough to get you going.

Any method of recording will a balancing act of system resources, hard drive bandwidth vs CPU usage, but either way you'll need a metric fuck ton of free hard drive space to record at a reasonable quality. This is especially true with the codec/method I use to record with which is hard drive bandwidth bound then CPU.

Dxtory

For recording you need Dxtory which runs about $40 USD depending on the conversion rate. There is a trial version that adds a watermark but you can use it to see if everything jibes with you computer set-up before you put down money on it. Take note that Dxtory is coded by one guy not some megacorporation, so please do spend money to buy it, it's worth every penny! Note: Dxtory will also be needed if you plan on streaming.

Fraps is popular way to record video too, so much that's the word Fraps is used as a verb to record game video. (Dude that was awesome, I hope that got Frapsed!) But I tell you right now Fraps is BAD! Why do I think that? Well Fraps ($37) costs almost the same as Dxtory ($40~) but Fraps has very few recording options and features which will drag down performance of your machine.

One of the biggest and most common bottlenecks in recording is hard drive bandwidth, when you're recording video in HD resolutions it will end up gigabytes in size within a very short amount time. One of the main advantages Dxtory has over Fraps is distributed hard drive writing. It's pretty much a software RAID 0 but just for you video. It'll write a few frames to one hard drive then a few frames to the next hard drive, then after you're done recording you combine them back together as one file.

One of the many advantages Dxtory has over Fraps is the ability to record at custom resolutions along with using different codecs for video and audio (read: tweak the balancing act of system resources) and to record microphone audio as a second audio stream, which is useful when editing.

The shortcomings

Now the ability to record microphone audio as a second audio stream is a nice feature, however it is a double edged sword since most video editing programs will only import the first audio steam. You have to rip the second audio steam from the video and import it separately and match it up with the video and first audio steam manually unless you have a very high end video editing software that will import more then one audio steam. Same thing goes for most video encoders as they'll only encode video with the first audio steam only, however the built in encoder in Dxtory will encode with both audio steams intact. It's very important to know that you shouldn't Alt-Tab when recording otherwise will cause audio desync issues with most encoding program, with VirturalDub being the only exception that I know of that doesn't have this problem. This is an issue with either the Dxtory program itself or the Dxtory codec, I haven't tried alt-tabbing out when using other codecs so I'm not sure. I just hope it will get fixed in a future update.

Recording

Folders.jpg


Click over to the Folder Settings tab, this is where you'll set up where the recorded video is going, It's recommended to use at least two hard drives to get the best performance. After adding your folders, benchmark them by hitting the clock icon to the left, you'll need to know this number in a bit.

Dxtorysettings.jpg


  • A: Is where you set your recording quality, see screen shot below.
  • B: Frame rate, Youtube only allows 30fps so that's what I record with, it also saves on hard drive bandwidth and reduces file size.
  • C: File Output is for local recording, in other words you want this checked unless you only want to do streaming.
  • C: DirectShow Output is for sending your video to a streaming app such as OBS. Unless you're streaming have this unchecked.
  • D: If you're recording to one hard drive (NOT recommended) set it to AVI, if you're recording to two or more hard drives set it to RawCap.
  • E: Since I play at 2650x1440 I have the video downsized to full HD, 1920x1080 so it saves on hard drive bandwidth and reduces the overall file size. You can downsize by percentage but it's a good idea to downsize to standard resolutions that stick to your current aspect ratio. Note: This setting is for local recording ONLY. The frame rate and resolution setting for DirectShow Output is set elsewere.


Dxtorysettings2.jpg

Now I use the default Dxtory codec for recording which is more hard drive bandwidth intensive then CPU, even with compression turned on. It's very high quality video dump and after I'm done recording I re-encode using x264vfw to a quality/file size I'm happy with.

You can use the x264vfw codec with Dxtory right off the bat with a fast compression setting, but at the cost of higher CPU usage which is alright since most games aren't CPU limited, however doing the former method of using the Dxtory or similar codec and then encoding it later on will yield better results, just at the cost of hard drive space and encoding time.

Here are the formulas for recording with the Dxtory codec:

RGB24 YUV24:
Width x Height x 3 x fps = bitrate (byte/sec)

YUV420:
Width x Height x 3 / 2 x fps = bitrate (byte/sec)

YUV410:
Width x Height x 9 / 8 x fps = bitrate (byte/sec)
Stolen from Dxtory forums

So for my current settings it looks like this, 1920*1080*3/2*30 = 93312000 byte/sec or roughly 93.31MB/sec Now from the hard drive benchmark I ran in Dxtory when I added my output folders I have a combined peek write speed of 287MB/sec so I'm well within the limitations of my hard drives write speed. Note that hard drives will slow down as they fill up and hiccups do occur so I wouldn't get crazy close to saturating your hard drive bandwidth with your settings.


Soundsettings1.jpg

You can choose up to 8 audio devices to record sound from each with their own setting for a codec. Because I haven't had time to properly experiment with other codecs I currently use PCM which is basically an uncompressed WAV. Make sure to add a second source and select your microphone.


Soundsettings2.jpg

This is where you enabled the setting for the push to talk hot key. If you use a lot of in-game VOIP such as ARMA2 or Planetside 2, you might want to add two sources for you microphone, one with push to talk enabled for your main form of communication and one without, however this means you'll have to edit the second microphone source in your video editor and manually find and remove all the times your not speaking so there isn't constant background noise in your video. Also note that you can adjust the sound level your microphone recorded at.


Cpusettings.jpg

Set the Processing Threads to the maximum available.


Lowerbuttons.jpg

  • A: RawCapConv

If you take advantage of the RawCap setting of using two or more hard drives for your recording you'll need to run this to combine your recording into one file. This can sometimes take a while. Note: In settings there an option to shut down your computer after it's completes building the video.

  • B: AVIFix -Uhh.. fixes corrupt videos, I've never had to use this.
  • C: AVIMux - This is Dxtory's build in encoder program.
  • D: Video Setting - This is were the DirectShow Output video settings are that are used to streaming.

Protip: When you start recording, some of your hard drives might be spun down to save power, when you hit the record button your game might freeze for a few seconds because of this, so it isn't a good idea to start recording while in the middle of a battle. After all your hard drives are spun up, end the recording and start again, this will avoid any potential corruption issues in your recording.

Streaming

For streaming I use Open Broadcaster Software aka OBS. I use this over Xsplit because it's much faster and it's free, while XSplit charges a monthly subscription fee and it's also slow as shit. OBS does have a game capture built it, but the last time I checked it out, it was a bit flakey and since I already have Dxtory there isn't really a need to use it. I highly recommend a dual monitor setup for streaming, it'll make things a lot easier.


Dxtorysettings.jpg

Before we start make sure you have DirectShow Output checked in Dxotry (Pointer C), you can uncheck File Output to save on hard drive space while you're just messing around getting everything set up for testing.


Dxsteamsetting.jpg

Also make sure to add OBS to your Ignore list in Dxtory.

Directshowoutput.jpg

The DirectShow Output frame rate and resolution is independent of the File Output you set on the Movie Settings tab. For reference I play at my monitors native resolution of 2560x1440, record locally at 1920x1080 and steam at 1280x720, obviously by doing all this at the same time drags down the frame rate a lot, and only do it while streaming/recording a tournament match in spectator mode.

It's a good idea to set up a Blank Image File. I use this one.

Media:testpattern-hd-720.png

Open up OBS and click on settings

Obsencodingsettings.jpg

Set up your bitrate. I have max 5Mb/sec upload speed so I set it up to use about 3 Mb/sec for streaming.

Set up your Broadcast Settings, In my case I use Twitch to steam.

Obsvideosettings.jpg

Set your resolution to the same that's in Dxtory. (Not pictured) Now go under Audio and set up your Push to talk key if you wish. All other settings I left alone.


Obsaddglobalsources.jpg

Now go to Global Sources > Add > Add Video Capture Device. It'll ask you to name it, I named mine "Video feed"


Obsvideoselection.jpg

Select Dxtory Video 1 from the dropdown and hit OK, then OK again to get back to the main OBS window.


Obsaddsoureces.jpg

Right click on the Sources: box and add your video feed. The reason you added you video as a Gobal Source is because it saves time if you want to have multiple scenes with the same video feed. For instance one with a scoreboard and another one with some announcement text and maybe one plain one.

As you can see you can also add images too. I use a transparent png image to add the Shacknews Crest to my steam.

Obsstreampreview.jpg


By clicking on Preview Steam > Edit Scene you can resize and drag around the source you currently have selected.

Obshotkeyrename.jpg

After you've set up multiple scenes, right click on them and set up hotkeys, after words rename the scene with the hotkey you assigned to them.

Step 1 Obshotkey.jpg

Step 2 Obsrename.jpg


After it's all done.

Obs1.jpg

Obs2.jpg

Note: While in game you'll need to hit your record hotkey that you set up in Dxotry for it to output to DirectShow.

Obs3.jpg

Adding a scoreboard to your stream

They're many scoreboards out there, almost all of them are made for Starcraft or similar games but thankfully most of them are generic enough so they can be used in other games. I use Starboard because you can connect to it remotely via your Android phone, tablet or another Windows machine. Personally I use my laptop to to remotely control the scoreboard. This is because I don't want to Alt-Tab out of the game, if you're running in full screen mode you'll cut the video and audio feed, or if in windowed mode, just the audio but It will cause problems with local recording.

Sbmain.jpg

Everything is pretty much straight froward, just click on Show Scoreboard and then click on Settings. Note: hitting the reset button resets the players name and color, not just the score.

Sbsettings.jpg

Move the scoreboard to your second monitor if you have one, and enable the remote so you can update names and scores via Android or another Windows machine. There are are keyboard shortcuts to update the score but I found it easier to do all the via my laptop. Do NOT click Allow Transparency otherwise it won't work OBS.

Obsscore.jpg

Next right click on the Sources box in OBS and click Add Software Capture, I named mine Scoreboard. If you wish you can add it as a Gobal Source if you plan on using the scoreboard in more then one scene.

Obsscoresettings.jpg

Click Window Capture and choose ScoreboardDisplay from the drop down and hit OK

Obsscoreboardeditscene.jpg

Now Click on Preview Stream and hit Edit Scene to drag the scoreboard where you want it.


Now ever time you run OBS and the scoreboard you'll have to right click on the Scoreboard in the Sources box in OBS go down to Properties and then hit OK for it to show back up again.

You should be set! Good luck!