Question / Help x264 Encoding Profile

Unless Twitch forces everyone to use Main which is why this was implemented in case they do once the HLS switch happens for real, stick with High. Luckily Twitch is currently transcoding your stream using Main profile. It is likely they want to avoid sending the transcoded stream to mobile, which is why they might make everyone stream in Main. Youtube live streaming also recommends Main profile, but they transcode everything anyways while still accepting High.

Main is easier to decode which is why its necessary for mobile devices. The quality will be worse if you happen to use Main profile for whatever reason. Once again this setting is in advanced so if you don't know what to do leave it at the default High unless they force everyone to use Main, and if that is the case Main shall become the new default setting most likely.
 
Sorry for not putting this in the patch notes, I added the ability to select "main" because it's more compatible with many mobile devices. There are apparently some devices that won't properly play back streams if you're not on "main" profile. This could problems especially if your viewers on twitch want to watch your stream on certain devices.

I haven't really compared the difference but if I recall it should be negligible.
 
Thanks for the insightful responses.

Any chance we could get hi10 implemented? :D Is that even supported by twitch or streaming?

It's great you guys worked in a 48khz option on the stream as well, audio definitely sounds better going through my vods from yesterday to today. Is it possible to also get more audio options in this department? (I'm still hoping for multichannel 5.1/7.1 support)
 
10bit would be cool, I agree. It'll probably be implemented in the future.

5.1/etc isn't supported by RTMP/flash I don't think, so even if I wanted to implement it I probably couldn't.
 
You won't really notice a difference between High and Main, but there is quite a big difference between Main and Baseline. I can't see them restricting people to Main instead of High, it would be a pretty arbitrary requirement for few gains. I do unfortunately see reasons for restricting to Baseline. I doubt they would do that however. They might just make it another "requirement" to be compatible for mobile transcoding or something, but I doubt that as well.

I heartily endorse 10bit!

Having the option for 5.1 sound would be nice for local recording, I suppose.
 
Ah, I guess if flash doesn't support it. I was still hoping for surround sound support at some time.

I've seen some 10bit encodes, they do look better as far as color representation goes. It'd be great to have this option, as long as Twitch/RTMP supports it.

I asked at one time if you guys were planning on doing higher sampling for audio. Is that still on the table? Like 96 or 192khz and 24bit. I'm not entirely sure about the bandwidth usage for such a thing, but audio uses a fraction of the bandwidth of video right now and it's like half the experience. Twitch also knocked out all the bitrates above 160 so that effectively limits that.
 
I noticed today that OBS was admonishing me for streaming to Twitch on High Profile instead of Main Profile. Anyone know what's up with this? I didn't know this was one of Twitch's requirements or recommendations.
 
It's not a Twitch requirement, but a Twitch recommendation. As I stated earlier, some lower-power mobile devices aren't capable of decoding high-profile video, so main is more compatible with devices that might watch a stream. You can do it either way, though you'll probably have a hard time seeing much of a difference between the two on your computer.
 
Definitely not admonishing, or at least that shouldn't be how the wording is, it's more of a recommendation if you want to reach out to as many viewers as a possible, rather than a requirement. Though for all I know they might make it a requirement in the future, I don't quite know to be honest.
 
And here I thought Android phones only played videos with Baseline profile selected, not main nor high. Surely Twitch is doing some sort of transcoding for all streams so I'm gonna stick with high as I don't stream in sd anymore :)
 
Pretty sure they do transcoding. I'm on a non-partnered channel using VBR and the high preset, I don't have any problems with mobile users watching me (when I'm on the mobile site). They definitely transcode your stream for bitrate and resolution, if they're doing that I'm sure they're also changing it to a 'main' profile as well since they're transcoding in the first place.
 
The main profile isn't required to be able to watch it on a mobile device, but some older devices can't decode the high profile (such as the iPhone 3GS). So it might still at least be the same profile.
 
Is there a difference in performance for this setting? I am barely able to stream at the moment, I can't afford losing any fps in game.
 
If anything, performance is probably better with main than with high, as you're basically turning the settings down a slight bit. However, I think it's negligible regardless.
 
Yeah, the x264 settings being changed by switching between main and high aren't really anything CPU intensive. It's basically changing container settings and not much else.
 
Is main supposed to be easier on the encoding side or the decoding side though? It has to be decoding, or else it doesn't make sense, but is it on the encoding as well? I did some internet searches but I found very few hard answers, even on forums like Doom9.

Assuming decode is correct in whole or part, is it a way to partially get around the Flash playback problems?
 
Ah, my previous post was a bit mistaken, Levels deal with container constraints.

The profiles are basically a set of constraints for various encoding settings. They tell the encoder what settings are allowed to be used or not. It's a bunch of standards set to ensure compatibility within certain classes of devices, usually.

http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles
Scroll down a bit to the "Feature support in particular profiles" table. It shows what techniques are allowed in each profile. This would pertain to things like trying to set custom encoder parameters (though most of the ones you would edit to improve quality for the typical usage scenarios in OBS aren't really affected by this all that much)
 
Back
Top