Question / Help x264 Encoding Profile

Floatingthru

Community Helper
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.
 

Jim

Jim
Developer
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.
 

Bensam123

Member
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)
 

Jim

Jim
Developer
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.
 

Krazy

Town drunk
Forum Moderator
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.
 

Bensam123

Member
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.
 

Boildown

Active Member
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.
 

dodgepong

Administrator
Forum Admin
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.
 

Jim

Jim
Developer
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.
 

vbdkv

Member
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 :)
 

Bensam123

Member
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.
 

dodgepong

Administrator
Forum Admin
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.
 

TheYonderGod

New Member
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.
 

Jim

Jim
Developer
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.
 

Krazy

Town drunk
Forum Moderator
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.
 

Boildown

Active Member
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?
 

Krazy

Town drunk
Forum Moderator
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)
 
Top