Roadmap
- use video tag with cross-scripting
- use jQuery and make the player resizable on the page
- relative datas will be detected only once by php
- make all the relative datas in cache but in ".xml" files instead of ".cache".
Admin should have the possibility to edit this files and restart detection
- Skin should be written in XSL. It would be easier to change for the users
- display subtitles in real time (like this or maybe with jquery.srt)
- improve the "link" output (more youtube-like but not multi-user yet)
4 codes but only one for sharing
Retrocompatibility
First, retrocompatibility must work so object or iframe tags alone
(big challenge with the interface because of frame dependance)
Sharing code
Then, video and audio tags. Playlists should be given as "src" too.
The code will be like this :
<script type="text/javascript" src="http://[your_site]/itheora/js.php?t=[$time]&s=[$skin]&p=[$picture]&b=[bittorrent]&f=[$flash]&n=[$name]&l=[$lang]"></script>
<video src="http://[adress_of_the_video].ogv" style="width : [$wvid]; height : [$hvid]" ></video>
All parameters [$xxx] will be optionals and should not be use because admin can edit the .xml file
Only interesting parameters are $skin and $disable (to disable some options like download, sharing, etc)
For accessibility, a link could be done in fallback.
W3C validity
Maybe it won't be usefull but it will work with all browser (accessible too) and pass the validation. So like previously but with "a" tag ("ivideo" or "iaudio") :
<script type="text/javascript" src="http://[your_site]/itheora/js.php?t=[$time]&s=[$skin]&p=[$picture]&b=[bittorrent]&f=[$flash]&n=[$name]&l=[$lang]"></script>
<a rel="ivideo" src="http://[adress_of_the_video].ogv" style="width : [$wvid]; height : [$hvid]" ></a>
Image
Just a thumbnail in the same link code will open, on click, a lightbox with the player inside.
In all these codes, the script line will be optional if there already is a script line in the header of the HTML page.
Tasklist
Make a jQuery bootloader done
Check cross-scripting compatibility
One id (maybe by md5) for the script url in order to make each js in charge of it own medias (no conflict of version).
One id for each player (in xml file) in order to use only one version of the js function (of course) and to work only on the called media not on the others.
Style skin must have some prefix like "ith-default-3.0-[class of the element]" to not change neither the web page style nor the other players style (other skins or older version of the same skin)
Remake the detection code and the cache
- get [duration in sec] in the RSS feed
- check file_exists before url_exists for lg.srt, hd/hq, lg.ogv
- archive.org don't have .jpg
- Remove .sub, just .srt
XML / XSL
XML Spec (draft).
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://[itheora]/skins/[$skin]/style.xsl" type="text/xsl"?>
<itheora version="3.0">
- <media>
- <title>Bick Buck Bunny</title>
- <artist>Blender Foundation</artist>
- <description><![CDATA[ The plot follows a day of the life of Big Buck Bunny when he meets three bullying rodents, Frank, Rinky and Gamera. The rodents amuse themselves by harassing helpless creatures of the forest by throwing fruits, nuts and rocks at them. After the deaths of two of Bunny's favorite butterflies, and an offensive attack on Bunny himself, Bunny sets aside his gentle nature and orchestrates a complex plan for revenge. (Wikipedia) ]]></description>
- <license>http://creativecommons.org/licenses/by/3.0/</license>
- <tags>blender, big buck bunny, peach, film, animation</tags>
- <downloads>
- <source type="video/ogg" url="http://[video].480p.ogv" p2p="http://[video].480p.torrent"></source>
- <hq type="video/ogg" url="http://[video].720p.ogv></hq>
- <hd type="video/ogg" url="http://[video].1080p.ogv></hd>
- <alt type="video/mp4" url="http://[video].mp4></alt>
- <subtitles>
- <url lang="ca">http://[video].ca.srt</url>
- <url lang="de">http://[video].de.srt</url>
- </subtitles>
- <dubbing>
- <url lang="es">http://[video].es.ogv</url>
- <url lang="fr">http://[video].fr.ogv</url>
- </dubbing>
- </downloads>
- <duration>33000</duration>
- <width>854</width>
- <height>480</height>
- <poster>http://[video].jpg</poster>
- <details>[technical informations]</details>
- </media>
</itheora>
Download "type" for each url is the mime type of the file. It's used to know if it's audio or video. "alt" download can be mp3, mp4, or flv
Detection will be strict but as the player administrator can edit the xml file he could set png, gif, bmp to "poster", torrent or ed2k link to "p2p", sub instead of srt etc.
Skins will have 1 .css and maybe many .xsl files (audio, video, playlist), .xml file will be in the cache folder and html output will be created by the XSLTProcessor class.
Internationalisation
Use .po file for each language. Need to see how it can be use.
For subtitles and dubbing (or incrusted subtitles), detection will be done in function of the list of png files (flags of country/language) in default skin. Adding [$lg].png files will increase the detection time (not a lot). Based on the "100 000+ articles" on wikipedia.
Graphical and perf improvements
- Use only one .png for the player/icons/etc with bg-position inetc avec positionnement CSS (better display and fastest (put in the cache of the browser)).
- use external jquery (maybe Google) with a local jquery in backup. (by default but admin have the choice)
[Accessibility]Remake the playlist scroll (example)
- "Permalink" clickable
- all the dogmazic podcasts must work
- index.php is the local podcast player instead of error.ogv
- https support ?
- only 3 buttons with text next (instead of tooltip, text can be hidden in config) : download, share and options
stop/back button will be replace by a "kill the plugin" button in options
fullscreen will be removed : browsers or plugins do it better (if it's not, they should)
- on plugin detection, if information is needed (like xiph patch for safari) add a 4th button with a light
- replace play error message : "get firefox"
- text will be reduced at the minimum for an easy translation : icons instead ("other playing modes" for example).
- minimalist and extensible audio player (like Wordpress player), album playlist (like XSPF Web Music Player) with cover
- playlist at the bottom of the player with text (and thumbnail onmouseover) or
at the right with thumbnail (and text onmouseover like tooltip)
- all windows will be set at the bottom and won't stop the video (resize video or extend player).
Admin tools
- Create a media manager with cache editor (!= tags editor)
- "Live" code engine (overview in the same page, chose the code) and submission to TS
- Auto fill the form to create playlist
- Check internal links to itheora.org
- Improve upload page (firefogg ?)
- Chose your default "data" folder
Ressources