project Websites / videos.bentasker.co.uk avatar

Websites / videos.bentasker.co.uk: c2d7249f




VID-14 Calculate Mimetype when omitted from call to {{embedBensPlayer}}

VID-14 Calculate Mimetype when omitted from call to {{embedBensPlayer}}

Introduces new function {{guessMimeFromUrl}} which'll use the filename extension to try and derive a mime-type.

That currently only happens if the calling function hasn't specified a mime-type. Should probably think about whether we want to allow the calculation to be overridden or not (as allowing it still leaves potential for tab lockups).

If a mime-type cannot be calculated, then {{video/mp4}} is used as the most common and (probably) least harmful default

Commit c2d7249f.

Authored 2019-12-15T09:59:03.000+00:00 by B Tasker in project Websites / videos.bentasker.co.uk

+75 lines -1 lines

Changes

diff --git a/resources/embed/embed.js b/resources/embed/embed.js
--- a/resources/embed/embed.js
+++ b/resources/embed/embed.js
# @@ -26,10 +26,84 @@ document.write=function(s){
# }
#
#
# +
# +function guessMimeFromUrl(vidurl){
# + /* VID-14: If a mimetype wasn't provided, try and figure it out from the url
# + *
# + * The main thing being to avoid declaring HLS if it isn't - in some browsers the result would be trying
# + * to parse an MP4 as if it were a manifest....
# + *
# + *
# + */
# +
# + // Get and check the file extension
# + var segs = vidurl.split(".")
# + var ext = segs[segs.length -1]
# +
# + // Check there actually was an extension
# + if (!ext){
# + return 'video/mp4'; // hail mary pass
# + }
# +
# + switch(ext.toLowerCase()) {
# + case 'm3u8':
# + return "application/x-mpegURL";
# + break;
# +
# +
# + case 'avi':
# + return 'video/avi';
# + break;
# +
# + case 'mp3':
# + return 'audio/mpeg';
# + break;
# +
# + case 'mkv':
# + return 'video/x-matroska';
# + break;
# +
# + case 'webm':
# + return 'video/webm';
# + break;
# +
# + case 'mov':
# + return 'video/quicktime';
# + break;
# +
# + case 'mpg':
# + return 'video/mpeg';
# + break;
# +
# + case 'mpeg':
# + return 'video/mpeg';
# + break;
# +
# + case 'mp4':
# + return 'video/mp4';
# + break;
# +
# + case 'mp4a':
# + return 'audio/mp4';
# + break;
# +
# + case 'wav':
# + return 'audio/wav';
# + break;
# +
# + default:
# + console.log("Calculating mimetime failed for " + vidurl + " ext: " + ext.toLowerCase());
# + return 'video/mp4';
# + }
# +
# +
# +}
# +
# +
# function embedBensPlayer(vidurl,vidtype){
#
# if (vidtype == undefined){
# - vidtype="application/x-mpegURL";
# + vidtype=guessMimeFromUrl(vidurl);
# }
#
# var vidid = 0;
#