Setup CDN on DNS


Depending on how much control given to CDN provider, most to least, here are the four config options.
Assumption: we are the video content provider and our server domain name is awsq.MaxxSports.cc
1. Redirect to CDN’s domain name with CNAME
2. Change my DNS so that it uses CDN’s Nameservers to resolve awsq.MaxxSports.cc
3. By A record, let awsq.MaxxSports.cc point to CDN’s IP.
4. Use a separate domain name for CDN access, e.g. d2t4kyunpgtwxc.cloudfront.net

More details for the four options, with the same numbering.
1. we have least control, since all our DNS does is just a redirection. This is the setup of Tencent CDN, like *.cdn.dnsv1.com
2. CDN has much control. For requests of awsq.MaxxSports.cc, CDN decides which IP to resolve to, e.g. depending on each user’s geographic location.
Taking CloudFlare as an example, after login at https://dash.cloudflare.com/login, it asks to update my DNS settng at enom.com with those nameservers: scott.ns.cloudflare.com venus.ns.cloudflare.com
Since multiple domain names could share one CDN’s IP, users can only access http://awsq.MaxxSports.cc by domain name, instead of direct IP.
3. since the A record is maintained at my DNS, namely enom.com, I know the CDN’s IP my domain name is mapped to. This is not good as we loses the ability to dynamically map domain name to different IPs in different country for example.
4. this is the setup we use for our streaming server, e.g. d2t4kyunpgtwxc.cloudfront.net. Requests for awsq.MaxxSports.cc go to our original server, and requests for d2t4kyunpgtwxc.cloudfront.net go to our CDN servers.

Advertisements

Subtitle Options


There are five places for subtitles, listed innermost layer first.
1. in VCL: Video Coding Layer, as part of the frame video, called hardsub. e.g. by ffmpeg drawtext.
2. in SEI as part of NAL in ES, Network Abstraction Layer, e.g. CEA-708. ffmpeg cannot generate this kind.
3. in track in a video file, e.g. mp4.
ffmpeg -i Party.mp4 -i cap.srt -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=eng PartyCap.mp4
Here is a sample video, playable with vlc, by clicking Menu – Subtitle – Sub Track:
[ http://riowing.net/local/subtitle/track/PartyCap.mp4 ]
4. WebVtt: subtitle in separate file, segmented VTT or not, for both VOD and live.
This sample page is segmented VTT: http://riowing.net/local/subtitle/caption.htm
5. Subtitle as a layer in web page outside video player. e.g. outside JW Player.
This is no longer video technology but HTML

 

PartyCap

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