Streaming to Youtube

We are streaming to YouTube for the first time today, at
Our staff is at Klein Memorial Stadium, Spring, TX, from 17:00 to 19:00 PDT, Oct.18, 2018, broadcasting this college football game.
The live game can also be viewed at YouTube app by searching channel “Rio Wing live stream”.
The official way to view the game is at , a division of, and MaxxSports Android/iOS apps.
YouTube’s input is a RTMP URL, which looks like this: rtmp://
Some RTMP URLs can be used for both input (receiving from FFMPEG) and output (playable by VLC) such as nginx-rtmp-module. However, the RTMP URL from YouTube is only for input, and doesn’t work with players such as VLC.
YouTube RTMP server is quite picky on video; none of our IP cameras’s RTSP video is accepted by YouTube with “-vcodec copy”



Perfect Forwarding: std::forward and std::move

Based on the source code below, here is the forwarding result:
Input parameter                    Forwarded to
int intNonConst:                     (int&)
const int intConst:                  (const int&)
6(just a literal):                        (int&&) or if (int&&) doesn’t exist, to (const int& i)
std::move(intNonConst)):      (int&&)
int IntTemp():                          (int&&)
Why std::forward: otherwise, when a rvalue is passed, e.g. 6, std::move or IntTemp(), it gets forwarded to &, instead of &&.
Why std::move: so that a lvalue such as intNonConst can be treated as rvalue, and therefore be forwarded to &&
Summary: std::forward is to deal with rvalue forwarding, and it does not affect rvalue reference, regardless of constness

int IntTemp() { return 0; }
void TestForwardingFuncCalled(const int& i)
	cout << "const &" << endl;
void TestForwardingFuncCalled(int& i)
	cout << "&" << endl;
void TestForwardingFuncCalled(int&& i)
	cout << "&& " << endl;

template  void TestForwardingTemplateFunc(T&& t)
	cout << "Results with std::forward" << endl;
	cout << "Results without std::forward" << endl;

void TestForwarding()
	int intNonConst = 2;
	const int intConst = 3;
	TestForwardingTemplateFunc(intNonConst); //with std::forward: (int&)", without std::forward: same
	TestForwardingTemplateFunc(intConst); //with std::forward: (const int&)", without std::forward: same
	TestForwardingTemplateFunc(6); //with std::forward: (int&&) or if (int&&) doesn't exist, to (const int& i), without std::forward: (int&)
	TestForwardingTemplateFunc(std::move(intNonConst)); //with std::forward: (int&&), without std::forward: (int&)
	TestForwardingTemplateFunc(IntTemp());  //with std::forward: (int&&), without std::forward: (int&)
void main()


AI Assistant Mica

Augmented Reality: Magic Leap’s AI Assistant Mica
The idea is that as soon as you put on the Magic Leap One AR headset, Mica appears in your room.
Mica’s gender looks vague though.

Live Streaming Options

HTTP segmentation based, high latency
As static HTTP content, well received by players, whether web or native based, and efficient on CDN
distributed by standard HTTP server.
Standard protocol for IP camera video output. Weak browser play support.
Requires router configuration when video source if behind NAT since streaming server have to pull video from video source.
Low latency
Popular with video source since source pushes to streaming server, and therefore no router work is needed when video source is behind NAT.
Low latency
I believe this will be the protocol to deliver low latency video to browser.
supported by Chrome and Firefox. I don’t include IE/Safari plugin as it requires installation.
Support both VP8/VP9 and H.264 through OpenH264 and ffmpeg
Here is a little page that renders the laptop camera: tested on Edge (Chrome requires https or localhost)