Roadmap
- use video tag with cross-scripting
- use jQuery and make the player re-sizable on the page
- relative data will be detected only once by php
- make all the relative data 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)
2 codes but only one for sharing
Sharing code
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/?s=[$skin]&d=[$disable]&l=[$lang]"></script>
<video src="http://[adress_of_the_video].ogv" poster="[$picture]" style="width : [$wvid]; height : [$hvid]" ></video>
Parameters [$xxx] will be optionals and name, torrent, flash will 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 set in fall-back.
W3C validity
Maybe it won't be useful 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/?s=[$skin]&d=[$disable]&l=[$lang]"></script>
<a rel="ivideo" src="http://[adress_of_the_video].ogv" style="width : [$wvid]; height : [$hvid]" >
</a>
img tag is optional. If alt="thumbnail", on click, a "lightbox" will be opened with the player inside (any other value will display the player as usual).
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 (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 "idef30-[class of the element]" (i = itheora; def = default; 30 = skin version) to not change neither the web page style nor the other players style (other skins or older version of the same skin) Most of the elements must be defined by tags with parent classes to make style attribute as specific as possible.
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 filenames will be the md5 id of the media. An array in an index file will make the correspondence. (It would be possible to "crypt" the url in the video "src" for paranoïaques)
Playlist will be saved in the cache first and downloaded if it asked (admin page).
Podcasts and playlists will be cleaned (ogv/ogg only, so get_first_video() function would never return false) and then put in the cache.
Podcasts will be periodically updated.
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" id="md5 of the itheora url" >
- <media id="md5 of the media url" >
- <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" coral="http://[host].nyud.net:8090/[video_path].480p.ogv"></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 php-gettext works...
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 in 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