-
Notifications
You must be signed in to change notification settings - Fork 0
Live Stats
- CDN-Based site stats automatically updated (push) every minute. No true live stats and no unique viewers. (original)
- Add unique visitors/viewers to site stats (original)
- Add true Live site stats (current visitors and current viewers) (original)
- Video stats (to be announced with video hosting, but can be used even if video not hosted by us) (original)
- Period/Range available in popup:
- Last 60 minutes
- Last 24 hours
- Last 7 days
- Last 30 days
- All time
- Custom range
- The period/range is automatically selected depending on activity (if there're no views in the last hour, we are not going to automatically selected "Last 60 minutes")
- Browser/OS pie chart is based on Page load data, HTML5/Flash pie chart is based on video prepared data
- Page load vs. Video load
- Page load is what we currently call "video pageview".
- Decided to avoid displaying both (too complicated to understand)
- So in the site stats we do not show the ratio views/pageload because it doesn't make much sense (if you have multiple videos on 1 page)
- We'll introduce the "video load" concept on phase 4 (with the video stats). This is what the other video platforms provide: when they say "page load" it is actually a per-video-counter that is incremented every time the video is loaded on the page, we'll call this "video load", and so if you visit a single page with 4 playbable videos in it, you'll generate 1 page load and 4 video loads...
- There is no Stats tab. (Only "Sites" and "Videos" tabs)
- Sites page - Site row
- Last 30 days video views count
- Link to Site stats page
- Site stats page
- (see above)
- sortable table with videos (with paginate) + searchfield (we'll have to find a way to name videos)
- click on table row to access video stats page
- Video stats page
- Title is something like: "Stats for 'VideoX' on 'SiteY'"
- Type of stats we'll show here are still to be defined precisely, but we'll definitely have stats similar to the ones we present in the Site stats page, but instead of page load, we'll rather have the video load number:
- ratio views/load (%)
- chart showing views and loads
- embed stats (with referrer)
- engagement chart
- more to be defined
- Videos page - Video row
- Can access to video stats page for a particular site (that will be selected from popup)
Top X (10) video in the current select period (day/hour/minute/second) sorted by views (at first)
Table fields:
- Posterframe (with click to play the video with all current sources)
- Name
- Info box if name doesn't comes from data-name
- Info box if token doesn't comes from data-uid
- Total of views for current period
- Total of loads for current period
- Sparkline of views for current period (not displayed for last 60 seconds)
Later:
- Sort by loads
- "Show more" if more than 10 videos
- Search fields (on video name)
All params need to be URL encoded (escaped). Maybe truncate HTTP GET request to 2048 characters (IE has a limitation of 2048 char.)
GIF urls:
Params | Descrption | Example |
---|---|---|
t | Site token | t=23fdsfsf |
e | Event type (load, start,...) | e=l / e=s |
i | Timestamp to prevent browser caching of the GIF | i=1310389135336 |
h | Hostname license type (main, extra, dev or invalid) | h=m / h=e / h=d / h=i |
d | Device (desktop/mobile) | d=d / d=m / d=t |
em* | is iframe Embedded | em=1 |
(*) optional param, nil/false if not present
Note:
- Send e=load requests after license check
Step 2 only:
Params | Descrption | Example |
---|---|---|
u | User unique ID (Cookie based) 24x[a-z0-9] | u=346t5rd98y98a73ynio8wp98 |
Parent page is used in case of an embedded (iframe) prepared video. One request can contains mutliple prepared videos info.
Params | Descrption | Example |
---|---|---|
po* | Video Prepare only (page already visited) | po=1 |
dt | (Parent) document title (only non-embed) | pt=analytics%20page%20test |
du | (Parent) document url | ph=http%3A//jime.com/testDirectory/myPage.html%3Fwer |
ru* | (Parent) referrer url (only non-embed) | ru=http%3A//www.google.com/search%3Fq%3Dbob |
eu* | Embedded iframe src url | eu=http%3A//cdn.sublimevideo.net/e/123asda3%3Ft%3D23fdsfsf |
fv* | Flash version | fv=9.0%20r48& |
sr | Screen resolution | sr=2400x1920 |
bl* | Browser language | bl=pt-br |
vu[]** | Video uids | vu[]=asd123ef |
pz[] | Player sizes | pz[]=400x300 |
pt[] | Player types (normal/lightbox/simple/fake) | pt[]=n / pt[]=l / pt[]=s / pt[]=f |
pm[] | Player modes (html5/flash) | pm[]=h / pm[]=f |
pff[]* | Player modes flash forced | pff[]=1 |
(*) optional param, nil/false if not present
(**) we must strip GET params from the source path/url used to compute this param
Note:
- Video uid comes from
data-uid
video tag attribute or from thefirst video source
crc32
Params | Descrption | Example |
---|---|---|
pt | Player type (normal/lightbox/simple/fake) | pt=n / pt=l / pt=s / pt=f |
pm | Player mode (html5/flash) | pm=h / pm=f |
vu** | Video uid | vu=asd123ef |
vuo | Video uid origin (attribute/source) | vuo=a / vuo=s |
vn | Video name | vn=My%20Awesome%20Video |
vno | Video name origin (attribute/source) | vno=a / vno=s |
vs | Video source url | vs=http%3A//videos.sublimevideo.net/123asda3.mp4 |
vc** | Video source crc32 | vc=5062d010 |
vcs[]** | Video crc32 sources array (in order) | vcs[]=5062d010 |
vsq | Video source quality (hd/base) | vsq=hd / vsq=base |
vsf | Video source family (mp4/webm/ogg) | vsf=mp4 / vsf=webm / vsf=ogg |
vsr* | Video source resolution | vsr=400x300 |
vsd* | Video source duration in ms (can be undefined if live streaming) | vsd=12345 |
vp* | Video poster url | vp=http%3A//posters.sublimevideo.net/123asda3.png |
(*) optional param, nil/false if not present
(**) we must strip GET params from the source path/url used to compute this param
Note:
- Video uid comes from
data-uid
video tag attribute or from thefirst video source
crc32 - Video name comes from
data-name
video tag attribute or from thefirst video source
filename "maybe humanized" (without the extension)
- site token (t)
- seconds (s) / minutes (m) / hours (h) / days (d): DateTime
- page visits hash (pv) { m (main) => 2, e (extra) => 10, d (dev) => 43, i (invalid) => 2, em (main & extra embed) => 1 }
- video views hash (vv) { m (main) => 1, e (extra) => 3, d (dev) => 11, i (invalid) => 1, em (main & extra embed) => 1 }
Only counted for main & extra hostname (non-embed)
- Player mode + device hash of hash (md) { h (html5) => { d (desktop) => 2, m (mobile) => 1 }, f (flash) => ... } (on each video loads)
- Browser + Plateform hash (bp) { "saf-win" => 2, "saf-osx" => 4, ...} (on page visit)
- site token (st)
- video uid (u)
- seconds (s) / minutes (m) / hours (h) / days (d): DateTime
- video loads hash (vl) { m (main) => 2, e (extra) => 10, d (dev) => 43, i (invalid) => 2, em (main & extra embed) => 1 }
- video views hash (vv) { m (main) => 1, e (extra) => 3, d (dev) => 11, i (invalid) => 1, em (main & extra embed) => 1 }
Only counted for main & extra hostname (non-embed)
- Player mode + device hash of hash (md) { h (html5) => { d (desktop) => 2, m (mobile) => 1 }, f (flash) => ... } (on video load)
- Browser + Plateform hash (bp) { "saf-win" => 2, "saf-osx" => 4, ...} (on video load)
- Video sources views hash (vs) { '5062d010' (video source crc32) => 32, ... } (on video view)
- site token (st)
- video uid (u)
- video uid origin (uo)
- video name (n)
- video name origin (no)
- video poster url (p)
- video current sources array (cs) ['5062d010' (video source crc32), 'abcd1234', ... ] # sources actually used in the video tag
- video sources hash (s) { '5062d010' (video source crc32) => { u (source url) => 'http://.../dartmoor.mp4', q (quality) => 'hd', f (family) => 'mp4', r (resolution) => '320x240' }, ... }
- timestamps
Note: Video information is updated each minutes when there's a play on one of his video sources and video tag has changed (Pushed!).
Abbr. | Description |
---|---|
fir | Firefox |
chr | Chrome |
iex | Internet Explorer |
saf | Safari |
and | Android |
rim | BlackBerry |
web | webOS |
ope | Opera |
oth | Other |
Platform Supported:
Abbr. | Description |
---|---|
win | Windows |
osx | Mac OS X |
ipa | iOS (iPad) |
iph | iOS (iPhone) |
ipo | iOS (iPod) |
lin | Linux |
and | Android |
rim | BlackBerry |
web | webOS |
wip | Windows Phone |
otd | Other (Desktop) |
otm | Other (Mobile) |
Feature | Owner | Estimate | State |
---|---|---|---|
Define gif tracking API (which params to send for wich method) | Z, T | 1-2 | ✓ |
Optimizing logs fecth/download (without using the super slow voxel.voxcast.ondemand.logs.list method) | T | 1 | ✓ |
Implement & deploy gif tracking in SV player (to have data to shown in september) | Z | ? | |
Finalize wireframe (maybe already done) | O, T, Z | 1-2 | ~✓ |
Think about MongoDB stats structure (one collection for minutes / hours / days) | T | 1 | ✓ |
Implement gif log parsing (with MongoDB storage) | T | 3-4 | ✓ |
Learn Backbone.js | T | 1-2 | ✓ |
Implement site stats view (with highchart + backbone) | T | 5-7 | ✓ |
Add automatic data reload (ajax) with Pusher | T | 2-3 | ✓ |
Design CSS/Photoshop | O | ? | |
Total | 14-22 |
Feature | Owner | Estimate | State |
---|---|---|---|
Add unique user id (UUID) support in SV gif tracking (cookie based) | Z | ? | |
Think about how storing unique visitor/viewer (MongoDB vs Redis) | T | 1-2 | |
Update gif log parsing for unique visitor/viewer | T | 2-3 | |
Add unique visitor/viewer counter to site stats view (with automatic update) | T | 2-3 | |
Design CSS | O | ? | |
Total | 5-8 |
Tasks still need to be clearly identified
- Think about:
- how live server (node.js or goliath) work, maybe it doesn't need to store data (in MongoDB or redis) but only parse it and push it to the client.
- if SV player is always sending live request or only when a sv customer has his site stats page open (in that case all SV player instance used must be connected via websocket to start sending data -> super big number of connection needed))
- how CDN data (update every minute) are merged with live data
- Define how and when SV player instance send data (like gosquared certainly or maybe via gif requests served via live server)
- Implement live server
- client request parsing
- storing data in db, maybe not useful
- push data to msv site stats view (via Puhser)
- Update backbone code to support live push data
- Add live data view
- Update existing data in realtime (live)
- Design CSS
- Wistia
- Vimeo
- Blip.tv (limited view without signup)
- Viddler
- http://www.viddler.com/learn-more/track-and-analyze Super lame flash-only video presentation
- VP Factory
- Vzaar
- Longtail JW Player
- Brightcove
- Google Analytics
- Tubemogul
- Anvato
- Omniture
- About pie charts: Please don't use pie charts
- Charts suggestions: http://www.flickr.com/photos/amit-agarwal/3196386402/sizes/l/