Changeset 1767
- Timestamp:
- 04/26/11 09:57:59 (2 years ago)
- Location:
- branches/captions
- Files:
-
- 20 added
- 12 deleted
- 8 edited
- 5 moved
-
assets/active.png (added)
-
assets/down.png (added)
-
assets/is0639-scrummed.csv (added)
-
assets/up.png (added)
-
captions.swf (modified) (previous)
-
doc/assets (deleted)
-
doc/guides (deleted)
-
doc/reference.pdf (deleted)
-
src/com/longtailvideo/plugins/captions/Captions.as (modified) (6 diffs)
-
src/com/longtailvideo/plugins/captions/DFXP.as (modified) (1 diff)
-
src/com/longtailvideo/plugins/captions/ISO639.as (modified) (1 diff)
-
src/com/longtailvideo/plugins/captions/SRT.as (modified) (1 diff)
-
test/assets/bunny.jpg (deleted)
-
test/assets/bunny.mp4 (deleted)
-
test/assets/bunny.srt (modified) (1 diff)
-
test/assets/captions.xml (deleted)
-
test/assets/corrie-speakers.xml (added)
-
test/assets/corrie-styled.srt (moved) (moved from branches/captions/test/assets/styled.srt) (2 diffs)
-
test/assets/corrie-styled.xml (moved) (moved from branches/captions/test/assets/styled.xml) (1 diff)
-
test/assets/corrie.jpg (deleted)
-
test/assets/corrie.srt (moved) (moved from branches/captions/test/assets/plain.srt)
-
test/assets/corrie.xml (moved) (moved from branches/captions/test/assets/plain.xml)
-
test/assets/jquery.js (deleted)
-
test/assets/playlist.xml (modified) (1 diff)
-
test/assets/sintel-dut.txt (added)
-
test/assets/sintel-eng.txt (added)
-
test/assets/sintel-fre.txt (added)
-
test/assets/sintel-ger.txt (added)
-
test/assets/sintel-ita.txt (added)
-
test/assets/sintel-pol.txt (added)
-
test/assets/sintel-por.txt (added)
-
test/assets/sintel-rus.txt (added)
-
test/assets/sintel-spa.txt (added)
-
test/assets/sintel.txt (deleted)
-
test/assets/stijl.zip (added)
-
test/assets/style.css (deleted)
-
test/assets/swfobject.js (deleted)
-
test/files.html (deleted)
-
test/index.html (modified) (1 diff)
-
test/multiple.html (moved) (moved from branches/captions/test/mp4.html) (2 diffs)
-
test/options.html (added)
-
test/playlist.html (added)
-
test/single.html (added)
-
test/skin.html (added)
-
test/styling.html (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/captions/src/com/longtailvideo/plugins/captions/Captions.as
r1754 r1767 28 28 /** List with configuration options. **/ 29 29 private var _config:Object = { 30 back: true,30 back: false, 31 31 file: undefined, 32 32 state: true … … 140 140 if(info[i].sampledescription[0].sampletype == 'tx3g') { 141 141 _tracks.push({ 142 label: ISO639.MAP[info[i].language],142 label: info[i].language, 143 143 id: i, 144 144 data: undefined … … 147 147 } 148 148 if(_tracks.length) { 149 var options:Array = new Array(' (Captions off)');149 var options:Array = new Array('Captions Off'); 150 150 for(var j:Number=0; j<_tracks.length; j++) { 151 options.push(_tracks[j].label); 151 if(ISO639.MAP[_tracks[j].label]) { 152 options.push(ISO639.MAP[_tracks[j].label]); 153 } else { 154 options.push(_tracks[j].label); 155 } 152 156 } 153 157 _selector.populate(options,1); … … 196 200 private function _redraw():void { 197 201 if(!_tracks.length) { 198 _icon.alpha = 0. 5;202 _icon.alpha = 0.3; 199 203 if (_button) { 200 _button.field.alpha = 0. 5;204 _button.field.alpha = 0.3; 201 205 _button.field.text = 'not set'; 202 206 } … … 212 216 _icon.alpha = 1; 213 217 } else { 214 _icon.alpha = 0. 25;218 _icon.alpha = 0.3; 215 219 } 216 220 _renderer.visible = false; … … 220 224 _button.field.alpha = 1; 221 225 if(_tracks.length > 1) { 222 _button.field.text = _tracks[_current].label;226 _button.field.text = '('+_tracks[_current].label+')'; 223 227 } else { 224 228 _button.field.text = 'is on'; -
branches/captions/src/com/longtailvideo/plugins/captions/DFXP.as
r1754 r1767 2 2 3 3 4 /** Parser for DFXP (W3C TimedText) XML files. **/ 5 public class DFXP { 4 import com.longtailvideo.jwplayer.utils.Strings; 5 6 /** 7 * Parse styling and contents of W3C Timed Text XML files. 8 **/ 9 public class DFXP { 6 10 7 11 12 /** Parse stylesheets from the head. */ 13 public static function parseStyles(data:XML,defaults:Object):Object { 14 var styles:Object = {}; 15 for each (var i:XML in data.children()) { 16 if (i.localName() == "head") { 17 for each (var styling:XML in i.children()) { 18 for each (var node:XML in styling.children()) { 19 if (node.localName() == 'style') { 20 // Set the defaults. 21 var rules:Object = {}; 22 for(var rule:String in defaults) { 23 rules[rule] = defaults[rule]; 24 } 25 // Loop through all attributes for overrides. 26 for each (var attrib:XML in node.attributes()) { 27 var name:String = attrib.name(); 28 if (name.indexOf("::") > -1) { 29 name = name.substring(name.indexOf("::") + 2); 30 } 31 rules[name] = attrib.toString(); 32 } 33 // Save to listing 34 if (node.@id) { 35 styles[node.@id] = rules; 36 } 37 } 38 } 39 } 40 } 41 } 42 return styles; 43 }; 44 45 46 /** Parse captions from the TT XML, returning a list with {begin:Number,text:String} objects. **/ 47 public static function parseCaptions(data:XML):Array { 48 var arr:Array = new Array({begin:0,text:''}); 49 for each (var i:XML in data.children()) { 50 if (i.localName() == "body") { 51 for each (var j:XML in i.children()) { 52 for each (var k:XML in j.children()) { 53 // Paragraphs are single captions. They live inside dividers. 54 if (k.localName() == 'p') { 55 var obj:Object = TTParser.parseCaption(k); 56 arr.push(obj); 57 // End with a new, empty caption, accontig for duration or end set. 58 if (obj['end']) { 59 arr.push({begin:obj['end'],text:''}); 60 delete obj['end']; 61 } else if (obj['dur']) { 62 arr.push({begin:obj['begin']+obj['dur'],text:''}); 63 delete obj['dur']; 64 } 65 } 66 } 67 } 68 } 69 } 70 return arr; 71 }; 72 73 74 /** Parse a single captions entry. **/ 75 private static function parseCaption(dat:XML):Object { 76 var ptn:RegExp = /(\n<br.*>\n)+/; 77 var obj:Object = { 78 begin:Strings.seconds(dat.@begin), 79 dur:Strings.seconds(dat.@dur), 80 end:Strings.seconds(dat.@end), 81 style:dat.@style, 82 // Not sure what this does anymore, but looks like it should be cleaned up. 83 text:dat.children().toString().replace(ptn,'<br/>').replace(/\n</,' <').replace(/>\n/, '> ') 84 }; 85 return obj; 86 }; 87 88 89 /** Convert inline caption styling into HTML. */ 90 public static function parseSpans(text:String,styles:Object,defaults:Object):String { 91 while (text.indexOf("<span") > -1) { 92 text = parseSpan(text,styles,defaults); 93 } 94 return text; 95 }; 96 97 98 /** Convert a span entry into HTML. **/ 99 private static function parseSpan(text:String,styles:Object,defaults:Object):String { 100 var rules:Object = {}; 101 var newtext:String = ''; 102 // Find the span bounds and convert to XML. 103 var left:Number = text.indexOf("<span "); 104 var right:Number = text.indexOf("</span>",left); 105 if (left > -1 && right > -1) { 106 var span:XML = new XML(text.substring(left,right+7)); 107 // Use style if defined, else set defaults. 108 var style:String = span.@style; 109 if(style && styles[style]) { 110 for(var i:String in styles[style]) { rules[i] = styles[style][i]; } 111 } else { 112 for(var j:String in defaults) { rules[j] = defaults[j]; } 113 } 114 // Override style with inline declarations 115 for each (var attrib:XML in span.@*) { 116 var name:String = attrib.localName().toString(); 117 if (rules[name]) { 118 rules[name] = attrib.toString(); 119 } 120 } 121 // Wrap plain text with font and b/i/u tags. 122 newtext = '<font family="'+rules.fontFamily+'" size="'+rules.fontSize+'" color="'+rules.color+'">'; 123 newtext += text.substring(text.indexOf('>',left)+1, right); 124 newtext += "</font>"; 125 if(rules.fontWeight == 'bold') { newtext = '<b>'+newtext+'</b>'; } 126 if(rules.fontStyle == 'italic') { newtext = '<i>'+newtext+'</i>'; } 127 if(rules.textDecoration == 'underline') { newtext = '<u>'+newtext+'</u>'; } 128 } 129 return text.substr(0,left)+newtext+text.substr(right+7); 8 130 }; 9 131 10 132 11 133 } 134 135 136 } -
branches/captions/src/com/longtailvideo/plugins/captions/ISO639.as
r1754 r1767 8 8 /** Most common ISO639 language codes. **/ 9 9 public static const MAP:Object = { 10 ara:'Arabic', 11 ben:'Bengali', 12 zho:'Chinese', 13 deu:'German', 14 eng:'English', 15 fra:'French', 16 heb:'Hebrew', 17 hin:'Hindi', 18 jpn:'Japanese', 19 tlh:'Klingon', 20 kor:'Korean', 21 nld:'Dutch', 22 por:'Portuguese', 23 rus:'Russian', 24 spa:'Spanish', 25 tur:'Turkish', 26 pan:'Punjabi', 27 und:'Captions' 10 afr: 'Afrikaans', 11 alb: 'Albanian', 12 ara: 'Arabic', 13 aze: 'Azerbaijani', 14 baq: 'Basque', 15 bel: 'Belarusian', 16 bul: 'Bulgarian', 17 cat: 'Catalan', 18 chi: 'Chinese', 19 cze: 'Czech', 20 dan: 'Danish', 21 dut: 'Dutch', 22 eng: 'English', 23 est: 'Estonian', 24 fil: 'Filipino', 25 fin: 'Finnish', 26 fre: 'French', 27 geo: 'Georgian', 28 ger: 'German', 29 gle: 'Irish', 30 glg: 'Galician', 31 gre: 'Greek', 32 hat: 'Haitian', 33 heb: 'Hebrew', 34 hin: 'Hindi', 35 hrv: 'Croatian', 36 hun: 'Hungarian', 37 ice: 'Icelandic', 38 ind: 'Indonesian', 39 ita: 'Italian', 40 jpn: 'Japanese', 41 kor: 'Korean', 42 lat: 'Latin', 43 lav: 'Latvian', 44 lit: 'Lithuanian', 45 mac: 'Macedonian', 46 may: 'Malay', 47 mlt: 'Maltese', 48 nor: 'Norwegian', 49 per: 'Persian', 50 pol: 'Polish', 51 por: 'Portuguese', 52 rum: 'Romanian', 53 rus: 'Russian', 54 slo: 'Slovak', 55 slv: 'Slovenian', 56 spa: 'Spanish', 57 srp: 'Serbian', 58 swa: 'Swahili', 59 swe: 'Swedish', 60 tha: 'Thai', 61 tur: 'Turkish', 62 ukr: 'Ukrainian', 63 und: 'Captions on', 64 urd: 'Urdu', 65 vie: 'Vietnamese' 28 66 }; 29 67 -
branches/captions/src/com/longtailvideo/plugins/captions/SRT.as
r1754 r1767 2 2 3 3 4 /** Parser for SubRip text files. **/ 5 public class SRT { 4 import com.longtailvideo.jwplayer.utils.Strings; 5 6 /** 7 * Parse an Subrip caption file and return an array of captions. 8 **/ 9 public class SRT { 6 10 7 11 12 /** Parse SRT captions string into an array. **/ 13 public static function parseCaptions(dat:String):Array { 14 var arr:Array = new Array({begin:0,text:''}); 15 // Trim whitespace and split the list by returns. 16 dat = dat.replace(/^\s+/, '').replace(/\s+$/, ''); 17 var lst:Array = dat.split("\r\n\r\n"); 18 if(lst.length == 1) { lst = dat.split("\n\n"); } 19 for(var i:Number=0; i<lst.length; i++) { 20 // Parse the caption 21 var obj:Object = SRTParser.parseCaption(lst[i]); 22 if(obj['begin'] && obj['text']) { 23 arr.push(obj); 24 // Insert empty caption at the end. 25 if(obj['end']) { 26 arr.push({begin:obj['end'],text:''}); 27 delete obj['end']; 28 } 29 } 30 } 31 return arr; 32 }; 33 34 35 /** Parse a single captions entry. **/ 36 private static function parseCaption(dat:String):Object { 37 var obj:Object = new Object(); 38 var arr:Array = dat.split("\r\n"); 39 if(arr.length == 1) { arr = dat.split("\n"); } 40 try { 41 // First line contains the start and end. 42 var idx:Number = arr[1].indexOf(' --> '); 43 if(idx > 0) { 44 obj['begin'] = Strings.seconds(arr[1].substr(0,idx)); 45 obj['end'] = Strings.seconds(arr[1].substr(idx+5)); 46 } 47 // Second line starts the text. 48 if(arr[2]) { 49 obj['text'] = arr[2]; 50 // Arbitrary number of additional lines. 51 for (var i:Number = 3; i < arr.length; i++) { 52 obj['text'] += '<br/>'+arr[i]; 53 } 54 } 55 } catch (err:Error) {} 56 return obj; 8 57 }; 9 58 10 59 11 60 } 61 62 63 } -
branches/captions/test/assets/bunny.srt
r1593 r1767 29 29 8 30 30 00:00:31,000 --> 00:00:33,000 31 <u><a href="http://www.bigbuckbunny.org">www.bigbuckbunny.org</a></u> 31 www.bigbuckbunny.org 32 32 Licensed as Creative Commons 3.0 attribution -
branches/captions/test/assets/corrie-styled.srt
r1509 r1767 5 5 2 6 6 00:00:10,500 --> 00:00:12,500 7 <font face="Times, serif" size=" -3" color="#FFCC00">You liar!</font>7 <font face="Times, serif" size="20" color="#FFCC00">You liar!</font> 8 8 9 9 3 10 10 00:00:13,500 --> 00:00:15,000 11 Are<i>you</i>?11 <u>Are</u> <i>you</i>? 12 12 13 13 4 14 14 00:00:17,000 --> 00:00:20,000 15 Violet, <i> please</i>!16 - I am <font face="Courier, monospace" size="+10" color="#FF0000"><b> not</b></font> your babe!15 Violet, <i><b><u>please</u></b></i>! 16 - I am <font face="Courier, monospace" size="+10" color="#FF0000"><b><u>not</u></b></font> your babe! 17 17 18 18 5 … … 28 28 7 29 29 00:00:36,000 --> 00:00:38,500 30 - < b><i><u>We need to talk.</u></i></b></span>31 - Jason, are you <font face="Courier, monospace" size="+10" color="#FF0000">deaf</font>?!</span>30 - <u><a href="http://www.correlatie.nl">We need to talk.</u></a></span> 31 - Jason, are you deaf?!</span> 32 32 33 33 8 -
branches/captions/test/assets/corrie-styled.xml
r1293 r1767 2 2 <head> 3 3 <styling> 4 <style id=" normal" tts:fontSize="15" />5 <style id="yellow" tts:color="#FFFF00" tts:fontSize="12"/>6 <style id="big " tts:fontWeight="bold" tts:fontSize="20" />4 <style id="boldened" tts:fontWeight="bold" /> 5 <style id="yellow" tts:color="#FFFF00" /> 6 <style id="bigger" tts:fontWeight="bold" tts:fontSize="20" tts:textDecoration="underline" /> 7 7 <style id="serifed" tts:fontFamily="Times,serif" tts:fontStyle="italic" /> 8 <style id="bigred" tts:color="#FF0000" tts:textDecoration="underline" tts:fontSize="20"/>9 8 </styling> 10 9 </head> 11 10 <body> 12 11 <div> 13 <p begin="00:00:08" end="00:00:10" style=" normal">- <span tts:textDecoration="underline">Nothing</span>is going on.</p>14 <p begin="00:00:10.5" end="00:00:12.5" style=" big">You <span tts:fontSize="+10">liar</span>!</p>15 <p begin="00:00:13.5" end="00:00:15" style="yellow"> Are you?</p>16 <p begin="00:00:17" end="00:00:20" style="big red">Violet, please!<br/>- I am <span tts:fontSize="30">not</span> your babe!</p>17 <p begin="00:00:24" end="00:00:29" style=" normal">12 <p begin="00:00:08" end="00:00:10" style="boldened">- Nothing is going on.</p> 13 <p begin="00:00:10.5" end="00:00:12.5" style="yellow">You liar!</p> 14 <p begin="00:00:13.5" end="00:00:15" style="yellow"><span tts:fontSize="+10">Are you?</span></p> 15 <p begin="00:00:17" end="00:00:20" style="bigger">Violet, please!<br/>- I am <span tts:fontSize="30">not</span> your babe!</p> 16 <p begin="00:00:24" end="00:00:29" style="yellow"> 18 17 You <span tts:textDecoration="underline" tts:fontStyle="italic">stupid cow</span>, look what<br/>you gone and done now, ay. 19 18 </p> 20 19 <p begin="00:00:34" end="00:00:36" style="serifed">Vi, please.<br/>- Leave me alone!</p> 21 <p begin="00:00:36" end="00:00:38.5" style=" normal">- We need to <span tts:color="#00FF00">talk</span>20 <p begin="00:00:36" end="00:00:38.5" style="serifed">- We need to <span style="yellow">talk</span> 22 21 .<br/>- Jason, are you deaf?!</p> 23 <p begin="00:00:41" end="00:00:42.9" style=" normal">What's going on?<br/> <br/> <br/><span tts:fontSize="-3">[some extra linebreaks]</span></p>24 <p begin="00:00:43" end="00:00:45" style=" normal">Gét out thëre and try tÞ Ãalvage this©!<br/> <span tts:fontSize="-3">[some special characters]</span></p>22 <p begin="00:00:41" end="00:00:42.9" style="boldened">What's going on?<br/> <br/> <br/><span tts:fontSize="-3">[some extra linebreaks]</span></p> 23 <p begin="00:00:43" end="00:00:45" style="boldened">Gét out thëre and try tÞ Ãalvage this©!<br/> <span tts:fontSize="-3">[some special characters]</span></p> 25 24 </div> 26 25 </body> -
branches/captions/test/assets/playlist.xml
r1293 r1767 5 5 <item> 6 6 <title>Coronation Street</title> 7 <description>This entry has external XML captions</description> 8 <enclosure url="../assets/corrie.flv" /> 9 <jwplayer:captions.file>assets/plain.xml</jwplayer:captions.file> 7 <description>Single, external XML captions.</description> 8 <jwplayer:file>http://content.bitsontherun.com/videos/7OCSON1y-393434.flv</jwplayer:file> 9 <jwplayer:image>http://content.bitsontherun.com/thumbs/7OCSON1y-320.jpg</jwplayer:image> 10 <jwplayer:captions.file>assets/corrie.xml</jwplayer:captions.file> 10 11 </item> 11 12 12 13 <item> 13 14 <title>Big Buck Bunny</title> 14 <description>This entry has external SRT captions.</description> 15 <enclosure url="http://content.bitsontherun.com/videos/nPripu9l-327.mp4" /> 16 <jwplayer:captions.file>assets/bunny.srt</jwplayer:captions.file> 15 <description>Single, embedded MP4 captions.</description> 16 <jwplayer:file>http://content.bitsontherun.com/videos/aytCR4cx-393434.mp4</jwplayer:file> 17 <jwplayer:image>http://content.bitsontherun.com/thumbs/aytCR4cx-320.jpg</jwplayer:image> 18 </item> 19 20 <item> 21 <title>Men With Talent</title> 22 <description>No captions at all.</description> 23 <jwplayer:file>http://content.bitsontherun.com/videos/SAs4hE5G-364766.mp4</jwplayer:file> 24 <jwplayer:image>http://content.bitsontherun.com/thumbs/SAs4hE5G-320.jpg</jwplayer:image> 25 <jwplayer:captions.file>assets/corrie.xml</jwplayer:captions.file> 26 </item> 27 28 <item> 29 <title>Global Timoto</title> 30 <description>Multiple, embedded MP4 captions.</description> 31 <jwplayer:file>http://content.bitsontherun.com/videos/w5VkaqJ1-393434.mp4</jwplayer:file> 32 <jwplayer:image>http://content.bitsontherun.com/thumbs/w5VkaqJ1-320.jpg</jwplayer:image> 17 33 </item> 18 34 19 35 <item> 20 36 <title>Sintel</title> 21 <description>This entry has no code no captions.</description> 22 <enclosure url="http://content.bitsontherun.com/videos/yj1shGJB-327.mp4" /> 23 </item> 24 25 <item> 26 <title>Big Buck Bunny</title> 27 <description>This entry has embedded MPEG-4 captions.</description> 28 <enclosure url="../assets/bunny.mp4" /> 37 <description>Multiple, external SRT captions.</description> 38 <jwplayer:file>http://content.bitsontherun.com/videos/q1fx20VZ-364765.mp4</jwplayer:file> 39 <jwplayer:image>http://content.bitsontherun.com/thumbs/q1fx20VZ-320.jpg</jwplayer:image> 40 <jwplayer:captions.files>assets/sintel-dut.txt,assets/sintel-eng.txt,assets/sintel-fre.txt,assets/sintel-ger.txt,assets/sintel-ita.txt,assets/sintel-pol.txt,assets/sintel-por.txt,assets/sintel-rus.txt,assets/sintel-spa.txt</jwplayer:captions.files> 29 41 </item> 30 42 -
branches/captions/test/index.html
r1706 r1767 16 16 17 17 <ul> 18 <li><a href=" mp4.html">MP4 TimedText</a></li>19 <li><a href=" usubs.html">Universal Subtitles</a></li>18 <li><a href="single.html">Single Track</a></li> 19 <li><a href="multiple.html">Multiple Tracks</a></li> 20 20 </ul> 21 21 <ul> 22 <li><a href="options.html">Configuration Options</a></li> 23 <li><a href="playlist.html">Captions in Playlist</a></li> 24 <li><a href="styling.html">Captions Styling</a></li> 25 </ul> 26 <ul> 27 <li><a href="skin.html">Skinning</a></li> 28 </ul> 22 29 23 30 </body> -
branches/captions/test/multiple.html
r1755 r1767 4 4 <meta charset="UTF-8"> 5 5 <script type="text/javascript" src="assets/jwplayer.min.js"></script> 6 <title>M P4 TimedText</title>6 <title>Multiple Tracks</title> 7 7 <style> 8 8 body { padding: 50px; font: 13px/20px Arial; background: #EEE; } 9 9 form,p, ul { margin-top: 20px; } 10 #player { -webkit-box-shadow: 0 0 5px #999; background: #000; color:#FFF; line-height:270px; text-align: center;}10 #player { -webkit-box-shadow: 0 0 5px #999; background: #000; color:#FFF; } 11 11 </style> 12 12 … … 14 14 <body> 15 15 16 <h2>M P4 TimedText</h2>16 <h2>Multiple Tracks</h2> 17 17 18 18 <div id="player"></div> 19 19 <script type="text/javascript"> 20 jwplayer("player").setup({ 21 controlbar: 'bottom', 22 file:'http://playertest.longtailvideo.com/timoto.mp4', 23 height: 294, 24 plugins: { 25 '../captions.swf': {} 26 }, 27 flashplayer: 'assets/player.swf', 28 width: 480 29 }); 20 function loadPlayer(video,files,labels) { 21 jwplayer("player").setup({ 22 autostart: true, 23 controlbar: 'bottom', 24 file: video, 25 height: 300, 26 plugins: { 27 '../captions.swf': { 28 files: files, 29 labels: labels 30 } 31 }, 32 flashplayer: 'assets/player.swf', 33 width: 480 34 }); 35 } 30 36 </script> 31 37 32 38 33 39 <ul> 34 <li><a href="javascript:jwplayer().load('http://playertest.longtailvideo.com/timoto.mp4')">MP4 with multiple TextTracks</a></li> 35 <li><a href="javascript:jwplayer().load('http://playertest.longtailvideo.com/bunny.mp4')">MP4 with single TextTrack</a></li> 40 <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/q1fx20VZ-364765.mp4','assets/sintel-dut.txt,assets/sintel-eng.txt,assets/sintel-fre.txt,assets/sintel-ger.txt,assets/sintel-ita.txt,assets/sintel-pol.txt,assets/sintel-por.txt,assets/sintel-rus.txt,assets/sintel-spa.txt','Nederlands,English,Français,Deutsch,Italiano,Polska,Português,РПÑÑОÑ,Español')">9 external srt tracks</a> (no labels)</li> 41 <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/q1fx20VZ-364765.mp4','assets/sintel-dut.txt,assets/sintel-eng.txt,assets/sintel-fre.txt,assets/sintel-ger.txt,assets/sintel-ita.txt,assets/sintel-pol.txt,assets/sintel-por.txt,assets/sintel-rus.txt,assets/sintel-spa.txt')">9 external srt tracks</a> (with labels)</li> 42 <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/w5VkaqJ1-393434.mp4')">6 embedded mp4 tracks</a> (no labels)</li> 43 <li><a href="javascript:loadPlayer('http://content.bitsontherun.com/videos/w5VkaqJ1-393434.mp4',null,'English,Português,Deutsch,Français,Norske,Español')">6 embedded mp4 tracks</a> (with labels)</li> 44 </ul> 45 <ul> 46 <li><a href="javascript:jwplayer().resize(320,200)">resize to 320x200</a></li> 47 <li><a href="javascript:jwplayer().resize(480,300)">resize to 480x300</a></li> 48 <li><a href="javascript:jwplayer().resize(720,430)">resize to 720x430</a></li> 36 49 </ul> 37 50 38 39 <p>Test whether the text tracks are correctly shown and rendered.<br /> 40 After hard refreshes, the cookied track should show up.<br /> 41 The multitrack example should pop up a selector. 51 <p>Check whether the text tracks are correctly shown and rendered.<br /> 52 Also check whether the selection menu is correctly rendered, at different sizes.<br /> 53 Also check whether the selection menu labels are correctly rendered. 42 54 </p> 43 55
Note: See TracChangeset
for help on using the changeset viewer.
