ffmpeg output thru http


ffmpeg can output to a remote host that runs web server, e.g nginx.
1. Configure nginx so that it can accept http PUT requests. three items:
Make sure nginx was built with –with-http_dav_module
nginx.conf: under location, add: dav_methods PUT;
Make sure nginx have write access to folder
2. Output to remote host
ffmpeg.exe -i SummerDance2016SC.mp4 -f hls -method PUT http://riowing.net/archive/put/SummerDance2016SC.m3u8

The other option to output to remote requires the remote host to run RTMP server.
The HLS URL generated for playing, of course, is:
http://riowing.net/archive/put/SummerDance2016SC.m3u8

SummerDance2016SC

Streaming to Youtube


We are streaming to YouTube for the first time today, at https://www.YouTube.com/c/RioWingR/live
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 https://www.tsrnsports.com/schedule/?LocationId=2 , a division of MaxxSports.tv, and MaxxSports Android/iOS apps.
YouTube’s input is a RTMP URL, which looks like this: rtmp://a.rtmp.YouTube.com/live2/wa3k-p6y6-pmqv-YOUR
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”

YouTubeStream

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;
	TestForwardingFuncCalled(std::forward(t));
	cout << "Results without std::forward" << endl;
	TestForwardingFuncCalled(t);
}

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()
{
	TestForwarding();
}

 

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.