IBRAHIM ULUKAYA: Hi, everyone.
I am Ibrahim Ulukaya from YouTube API Developer Relations
team.
I am joining you today from New York.
Today we'll talk about the live streaming
implementation called XSplit.
And I'm sure if you guys are playing games and streaming
them live, you are already familiar
with this amazing product XSplit.
But today we are really lucky to have Henrik Levring and Miguel
Molina from XSplit to join us and talk about the product.
Hi, guys.
Thanks so much for joining us.
HENRIK LEVRING: Good to be here.
Thank you very much.
MIGUEL MOLINA: Thanks.
IBRAHIM ULUKAYA: And today they'll talk about the product,
and hopefully, we'll see a nice live demo.
But to start, can you talk about the history of the product
and what are the goals behind this?
HENRIK LEVRING: Yeah, definitely.
Well, originally, SplitmediaLabs was really
organized as a development team in a European--
a privately-owned outsourcing company called World Partner.
The team started off developing a set
of multimedia applications for visual communication.
And the app that we developed back then
was called XSplit Capture.
And that was really more of a one-to-few video communications
product.
And that's the product based on which
we got funding and created SplitmediaLabs
as a company in Hong Kong back in 2009.
This product is totally different from how
XSplit Broadcaster is today, and basically it
evolved from XSplit Capture.
XSplit Capture was only published in an internal beta.
And from the feedback we got there
and through the requirements we discovered from users
and so forth, we sort of changed it from a simple screen
capture with camera thing into a real internet TV application
that we have today.
IBRAHIM ULUKAYA: OK, great.
Can you just show us a little live demo of the product?
HENRIK LEVRING: Absolutely.
Absolutely we can do that.
So I"ll just boot up XSplit here.
And probably some people might note that it doesn't exactly
look like the XSplit that they know,
and that's because the new version of XSplit
that we're using here for this demo.
So for those who don't know XSplit,
XSplit has 12 scenes as you can see here in the right corner.
And we've got input sound and system sounds.
I can drag, as you can see, an image to my first scene.
And on my second scene, I'm going
to add StarCraft II, which I'm playing in the background here.
So I've now got two scenes set up,
and I'm ready to add my YouTube Live channel.
I just go to the broadcast menu at the channel
and then I just fill in my credentials, Google YouTube
credentials.
And I need to authorize first using the OAuth 2.0,
and just typing in my password.
So this all runs from Google servers
and can take a little time, not because it's Google servers.
And then, yep, we got authenticated.
And we can add a description, title,
and we can also set our category.
These things we can change as we go
live, but now we're done setting up the channel.
So when we do go live now, you can see the title bar changes,
and we get a prompt here.
So we can now select whether we want to do an ad hoc event
or connect to an existing scheduled event.
We can also change our description tags,
and so forth, category, just before we go live.
So consider the initial setup as a template, so to speak.
So once we're live, then we've got a link in our clipboard,
and we can try and test that out to see if we're live.
And hopefully it's going to show up in a short while.
It can take a little time.
IBRAHIM ULUKAYA: In the meantime,
can you talk about the new features in the new product?
I assume that you guys have an upload feature as well, right?
HENRIK LEVRING: Actually, you can
see as I was-- some of the features in the new product is
what we're seeing right here.
Once we hover our mouse on the top of the scenes,
we can see a preview immediately.
And that's definitely one of the new features.
So anyway, now as you can see, we got live
and I'm just going to stop this broadcast now.
I'll just show you another new feature here,
a very interesting thing, which is our feature that
allows XSplit to upload videos and track videos straightly
on YouTube.
So as you can see here the preview-- that's
one of the features-- we're hovering a mouse
across the scene and you can see the preview.
You can see what's behind the scene, basically.
Right now you can see in scene two my StarCraft was there.
So that's one of the things that's
a brilliant thing with the new version of the product.
So now I've made a small recording,
and I can then go to my recordings
where I can see the recording I just made.
I can change the thumbnail view.
So this recording, I can share it on Facebook,
Twitter and in Google+, but first I need to share it
on YouTube.
I need to upload it to YouTube.
Then I can set my title and my privacy settings there
and, I can straightly go and upload it.
That also could take a few seconds,
but our video's not that big, so that
should be up in a few seconds.
We have to have a little patience, perhaps.
So anyway, once it's up, we can see here it has a link,
and we can just check it out to see that it actually
got uploaded.
Well, it's being processed but it certainly-- it'll
just take a minute.
It's there already, I think.
Yup.
So that's the video we just recorded a few minutes ago.
IBRAHIM ULUKAYA: That's great.
HENRIK LEVRING: So as you see there's
a small-- you can see a little red thing in the video before,
and that was uploaded to YouTube.
Now we're sharing it on Facebook,
and we can share it on Twitter as well and certainly also
Google+.
And these sharing features all require
is that it's uploaded to YouTube first.
IBRAHIM ULUKAYA: That's right.
HENRIK LEVRING: We track the videos there.
So next time you open XSplit, you
can see what videos in my video recordings
that's already on YouTube.
IBRAHIM ULUKAYA: Sounds great.
And thanks for this amazing demo.
Can you just talk a little bit about how this app implemented?
What programming languages did you use?
HENRIK LEVRING: Yeah, certainly.
So all our core is built in C++, because we have a lot
of functions that are very close to the operating system.
So that's sort of what we found most suitable.
And the UI and other functions such as, for example,
the YouTube live broadcast plug-in, is built using C#.
IBRAHIM ULUKAYA: Was there any reason that you guys used C#?
HENRIK LEVRING: I mean, a lot of people know C#.
And it's easier, usually, to develop interface using C#.
So I think that's why we originally chose C#.
IBRAHIM ULUKAYA: Maybe, Miguel, talk
about if you guys used the APIs through the client libraries
or just straight to the codes?
MIGUEL MOLINA: I think I can answer that.
HENRIK LEVRING: Yeah, I wouldn't be able to do that.
MIGUEL MOLINA: Initially we were trying to implement it in C++.
But since when we started our implementation,
the live API was very much in beta,
and a lot of things were changing,
so it was highly impractical for us to keep rewriting our REST
code in C++.
So we just settled for the C# client library that's provided
by you guys.
IBRAHIM ULUKAYA: Yeah, I should mention
that you guys were one of the first implementers
first using the beta version as well.
And by using it, can you also talk about
if you're using other APIs besides live streaming?
Because I saw you were doing uploads
and you were also tracking the videos.
MIGUEL MOLINA: Yes.
We are actually using the data API, both Version 2
and Version 3.
We mainly use the Version 3 API.
But for tracking our videos, such as tagging it
with developer tags, we have to use the Version 2 data API,
because that's the only library that supports developer tags.
But we do hope that you will support developer tags
in the newer version.
IBRAHIM ULUKAYA: Yeah, there's definitely
a request on that end.
We hope to have the developer text on [INAUDIBLE] as well.
And besides that, can you guys share any other feedback
or where you guys had any surprise moments when
you were implementing this API?
MIGUEL MOLINA: Well, back when we started,
we were actually surprised that there was no live viewer count.
That was, I think, early this year.
But it's already implemented now in your latest release, so
[INAUDIBLE] with that.
And we were also surprised with the way broadcasts
and streams were kind of different,
because in our other use cases, we just kind of stream
straight to an endpoint, and that's it.
They have one end point and then we
take note of that and we stream to it.
But in your API, you create multiple stream objects
and then you bind them to broadcast
objects which are the actual events.
And from what I understand is, the stream objects to it
so that the end points can be reusable,
and the settings are very much preset.
So you can just select which particular broadcast resolution
you're going to be going for and then just bind it to an event.
I think that's how you wanted it.
IBRAHIM ULUKAYA: Yeah, definitely.
You summarized it for me already.
And are there any features?
Or do you guys want to [INAUDIBLE]?
MIGUEL MOLINA: Currently, I guess
we would like to enable our broadcasters to be
able to interact with our viewers more.
And to do that, you need some sort of implementation
for your live comments.
But we also noticed a big delay from the real-time broadcast
to the actual thing that you see on YouTube.
So there's, like, a 40, 45-second delay.
And that would probably kill any sort of real-time interaction
between viewers and broadcasters.
HENRIK LEVRING: Yeah, I think it's right.
I mean, the big missing feature right
now is really low latency and then real-time comments.
MIGUEL MOLINA: Yes.
HENRIK LEVRING: We see a lot of the big streams in gaming
where, really, the broadcaster feeds off the user's comments.
Do this, go there, and they really
have a wonderful interaction there.
And so we'd love to see that on YouTube Live as well.
That's the biggest missing feature, right?
MIGUEL MOLINA: Yeah, I believe so.
IBRAHIM ULUKAYA: Yeah, thanks for the valuable feedback.
I'm sure, actually, we are really
doing our best to get latency lowest as possible,
and hopefully we'll have comments in future.
And maybe like to summarize, I heard, actually,
you guys also have opportunities in XSplit as well.
Can you guys talk a little bit?
HENRIK LEVRING: Yeah, absolutely.
So we're definitely also hiring in XSplit.
You can go to XSplit.com/careers.
And I think we have positions open both for bus developers,
shop developers, web developers, and so forth.
And our development center is located in Manila,
but we're certainly also accepting
applications from developers from other countries, US,
and so forth.
So yeah, that'd be great.
Go to XSplit.com/careers and see if there might be a position
you guys would like to apply for.
IBRAHIM ULUKAYA: OK, thanks so much for joining me today,
guys.
It was really nice to see the live demo
and talk about XSplit product, and I really
hope to see the new features and the new version
publicly available really soon.
HENRIK LEVRING: It was great to be here, Ibrahim.
Thank you.
MIGUEL MOLINA: Yeah, thank you for having us.
IBRAHIM ULUKAYA: Thanks a lot.
And lastly, I just want to finish up
with saying to the viewers there's a Google Developer
Relations team.
We are hiring almost everywhere in the world.
You can always check the options from developer.google.com/jobs.
And thanks for joining me today, guys.
And have a nice day.
Ibrahim Ulukaya from New York.