<?xml version="1.0" encoding="UTF-8"?>
<ticket>
  <assigned-user-id type="integer" nil="true"></assigned-user-id>
  <attachments-count type="integer">0</attachments-count>
  <closed type="boolean">false</closed>
  <created-at type="datetime">2009-07-14T07:14:26-05:00</created-at>
  <creator-id type="integer">35715</creator-id>
  <milestone-due-on type="datetime" nil="true"></milestone-due-on>
  <milestone-id type="integer" nil="true"></milestone-id>
  <number type="integer">235</number>
  <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
  <priority type="integer">125927</priority>
  <project-id type="integer">24342</project-id>
  <raw-data type="binary" nil="true" encoding="base64"></raw-data>
  <state>accepted</state>
  <tag>feature featurerequest</tag>
  <title>Modular support for playing back H.264 content on sites other than YouTube</title>
  <updated-at type="datetime">2009-10-07T18:44:52-05:00</updated-at>
  <user-id type="integer">48093</user-id>
  <user-name>ssp</user-name>
  <creator-name>Nathan de Vries</creator-name>
  <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
  <original-body>I briefly spoke to Simone Manganelli about this feature request, however I thought I should present my idea here so others can comment on whether they would find it useful.

In short, it would be great if playback of H.264 content worked for sites other than YouTube.

At the moment, YouTube support is working perfectly but the codebase will require major changes to allow for other sites to be added.

VLC has come up with a novel solution to this problem with their &quot;playlist scripts&quot;, which allows people to write Lua scripts that do the work of resolving a URL into a downloadable media URL. Each Lua script contains two methods, probe() and parse(). The probe() method returns true or false depending on whether it is capable of handling the given URL, and the parse() method returns a dictionary containing a URL to the media file (among other things). You can find out the full details of how this works by checking out the [VLC documentation](http://wiki.videolan.org/Documentation:Play_HowTo/Building_Lua_Playlist_Scripts).

Regardless of whether Lua (using LuaCore?) is used or not, I propose the following changes:

* Option &quot;Load H.264 videos from Youtube&quot; changes to &quot;Load H.264 videos if available&quot;
* New option called &quot;Use HD H.264 videos if available&quot;
* Define a protocol with a similar API to VLC's probe/parse API. It would make the webview, container, host, baseURL, attributes and src available.
* Rip out the Youtube functionality and rewrite it using the new protocol.
* Add support for a couple of other sites, like Vimeo &amp; Google Video.

Thoughts?</original-body>
  <latest-body>I briefly spoke to Simone Manganelli about this feature request, however I thought I should present my idea here so others can comment on whether they would find it useful.

In short, it would be great if playback of H.264 content worked for sites other than YouTube.

At the moment, YouTube support is working perfectly but the codebase will require major changes to allow for other sites to be added.

VLC has come up with a novel solution to this problem with their &quot;playlist scripts&quot;, which allows people to write Lua scripts that do the work of resolving a URL into a downloadable media URL. Each Lua script contains two methods, probe() and parse(). The probe() method returns true or false depending on whether it is capable of handling the given URL, and the parse() method returns a dictionary containing a URL to the media file (among other things). You can find out the full details of how this works by checking out the [VLC documentation](http://wiki.videolan.org/Documentation:Play_HowTo/Building_Lua_Playlist_Scripts).

Regardless of whether Lua (using LuaCore?) is used or not, I propose the following changes:

* Option &quot;Load H.264 videos from Youtube&quot; changes to &quot;Load H.264 videos if available&quot;
* New option called &quot;Use HD H.264 videos if available&quot;
* Define a protocol with a similar API to VLC's probe/parse API. It would make the webview, container, host, baseURL, attributes and src available.
* Rip out the Youtube functionality and rewrite it using the new protocol.
* Add support for a couple of other sites, like Vimeo &amp; Google Video.

Thoughts?</latest-body>
  <original-body-html>&lt;div&gt;&lt;p&gt;I briefly spoke to Simone Manganelli about this feature request,
however I thought I should present my idea here so others can
comment on whether they would find it useful.&lt;/p&gt;
&lt;p&gt;In short, it would be great if playback of H.264 content worked
for sites other than YouTube.&lt;/p&gt;
&lt;p&gt;At the moment, YouTube support is working perfectly but the
codebase will require major changes to allow for other sites to be
added.&lt;/p&gt;
&lt;p&gt;VLC has come up with a novel solution to this problem with their
&quot;playlist scripts&quot;, which allows people to write Lua scripts that
do the work of resolving a URL into a downloadable media URL. Each
Lua script contains two methods, probe() and parse(). The probe()
method returns true or false depending on whether it is capable of
handling the given URL, and the parse() method returns a dictionary
containing a URL to the media file (among other things). You can
find out the full details of how this works by checking out the
&lt;a href=&quot;http://wiki.videolan.org/Documentation:Play_HowTo/Building_Lua_Playlist_Scripts&quot;&gt;
VLC documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Regardless of whether Lua (using LuaCore?) is used or not, I
propose the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option &quot;Load H.264 videos from Youtube&quot; changes to &quot;Load H.264
videos if available&quot;&lt;/li&gt;
&lt;li&gt;New option called &quot;Use HD H.264 videos if available&quot;&lt;/li&gt;
&lt;li&gt;Define a protocol with a similar API to VLC's probe/parse API.
It would make the webview, container, host, baseURL, attributes and
src available.&lt;/li&gt;
&lt;li&gt;Rip out the Youtube functionality and rewrite it using the new
protocol.&lt;/li&gt;
&lt;li&gt;Add support for a couple of other sites, like Vimeo &amp;amp;
Google Video.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;&lt;/div&gt;</original-body-html>
  <versions type="array">
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>I briefly spoke to Simone Manganelli about this feature request, however I thought I should present my idea here so others can comment on whether they would find it useful.

In short, it would be great if playback of H.264 content worked for sites other than YouTube.

At the moment, YouTube support is working perfectly but the codebase will require major changes to allow for other sites to be added.

VLC has come up with a novel solution to this problem with their &quot;playlist scripts&quot;, which allows people to write Lua scripts that do the work of resolving a URL into a downloadable media URL. Each Lua script contains two methods, probe() and parse(). The probe() method returns true or false depending on whether it is capable of handling the given URL, and the parse() method returns a dictionary containing a URL to the media file (among other things). You can find out the full details of how this works by checking out the [VLC documentation](http://wiki.videolan.org/Documentation:Play_HowTo/Building_Lua_Playlist_Scripts).

Regardless of whether Lua (using LuaCore?) is used or not, I propose the following changes:

* Option &quot;Load H.264 videos from Youtube&quot; changes to &quot;Load H.264 videos if available&quot;
* New option called &quot;Use HD H.264 videos if available&quot;
* Define a protocol with a similar API to VLC's probe/parse API. It would make the webview, container, host, baseURL, attributes and src available.
* Rip out the Youtube functionality and rewrite it using the new protocol.
* Add support for a couple of other sites, like Vimeo &amp; Google Video.

Thoughts?</body>
      <body-html>&lt;div&gt;&lt;p&gt;I briefly spoke to Simone Manganelli about this feature request,
however I thought I should present my idea here so others can
comment on whether they would find it useful.&lt;/p&gt;
&lt;p&gt;In short, it would be great if playback of H.264 content worked
for sites other than YouTube.&lt;/p&gt;
&lt;p&gt;At the moment, YouTube support is working perfectly but the
codebase will require major changes to allow for other sites to be
added.&lt;/p&gt;
&lt;p&gt;VLC has come up with a novel solution to this problem with their
&quot;playlist scripts&quot;, which allows people to write Lua scripts that
do the work of resolving a URL into a downloadable media URL. Each
Lua script contains two methods, probe() and parse(). The probe()
method returns true or false depending on whether it is capable of
handling the given URL, and the parse() method returns a dictionary
containing a URL to the media file (among other things). You can
find out the full details of how this works by checking out the
&lt;a href=
&quot;http://wiki.videolan.org/Documentation:Play_HowTo/Building_Lua_Playlist_Scripts&quot;&gt;
VLC documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Regardless of whether Lua (using LuaCore?) is used or not, I
propose the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option &quot;Load H.264 videos from Youtube&quot; changes to &quot;Load H.264
videos if available&quot;&lt;/li&gt;
&lt;li&gt;New option called &quot;Use HD H.264 videos if available&quot;&lt;/li&gt;
&lt;li&gt;Define a protocol with a similar API to VLC's probe/parse API.
It would make the webview, container, host, baseURL, attributes and
src available.&lt;/li&gt;
&lt;li&gt;Rip out the Youtube functionality and rewrite it using the new
protocol.&lt;/li&gt;
&lt;li&gt;Add support for a couple of other sites, like Vimeo &amp;amp;
Google Video.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-07-14T07:14:26-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- {}

</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>new</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-07-14T07:14:33-05:00</updated-at>
      <user-id type="integer">35715</user-id>
      <user-name>Nathan de Vries</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>This is a wonderful idea and I hope it gets implemented.</body>
      <body-html>&lt;div&gt;&lt;p&gt;This is a wonderful idea and I hope it gets implemented.&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-07-15T05:59:17-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- {}

</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>new</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-07-15T05:59:21-05:00</updated-at>
      <user-id type="integer">25435</user-id>
      <user-name>halbtuerke</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body></body>
      <body-html></body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-07-16T11:57:31-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- 
:state: new
</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>open</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-07-16T11:57:32-05:00</updated-at>
      <user-id type="integer">45213</user-id>
      <user-name>rentzsch</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>This is a cool suggestion.  It would be *really* cool if we could simply use VLC's existing mechanism (so that we could support their existing scripts), but I'm really not qualified to answer whether that would be feasible or not, or whether it's a good idea.</body>
      <body-html>&lt;div&gt;&lt;p&gt;This is a cool suggestion. It would be &lt;em&gt;really&lt;/em&gt; cool if
we could simply use VLC's existing mechanism (so that we could
support their existing scripts), but I'm really not qualified to
answer whether that would be feasible or not, or whether it's a
good idea.&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-07-17T02:50:55-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- {}

</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>open</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-07-17T02:50:58-05:00</updated-at>
      <user-id type="integer">47272</user-id>
      <user-name>simX</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>I don't think it's possible to use the VLC scripts as anything more than inspiration, because VLC supports playing more than H.264 videos and they're fine with the Lua scripts resolving to a Sorenson Spark FLV file (for example). That being said, if VLC is installed it might be OK to use that for playback?</body>
      <body-html>&lt;div&gt;&lt;p&gt;I don't think it's possible to use the VLC scripts as anything
more than inspiration, because VLC supports playing more than H.264
videos and they're fine with the Lua scripts resolving to a
Sorenson Spark FLV file (for example). That being said, if VLC is
installed it might be OK to use that for playback?&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-07-17T03:02:43-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- {}

</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>open</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-07-17T03:02:46-05:00</updated-at>
      <user-id type="integer">35715</user-id>
      <user-name>Nathan de Vries</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>[state:&quot;accepted&quot; bulk edit command]</body>
      <body-html>&lt;div&gt;&lt;p&gt;[state:&quot;accepted&quot; bulk edit command]&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-07-18T18:46:21-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- 
:state: open
</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>accepted</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-07-18T18:46:21-05:00</updated-at>
      <user-id type="integer">45213</user-id>
      <user-name>rentzsch</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>Suggested implementation of this feature: http://homepage.mac.com/simx/technonova/software_development/clicktoflash_killers.html .  Please comment here in the ticket or in a comment on my weblog.</body>
      <body-html>&lt;div&gt;&lt;p&gt;Suggested implementation of this feature: &lt;a href=
&quot;http://homepage.mac.com/simx/technonova/software_development/clicktoflash_killers.html&quot;&gt;
http://homepage.mac.com/simx/technonova/software_development/clickt...&lt;/a&gt;
. Please comment here in the ticket or in a comment on my
weblog.&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-10-02T04:41:18-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- {}

</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>accepted</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-10-02T04:41:20-05:00</updated-at>
      <user-id type="integer">47272</user-id>
      <user-name>simX</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
    <version type="Ticket::Version">
      <assigned-user-id type="integer" nil="true"></assigned-user-id>
      <attachments-count type="integer">0</attachments-count>
      <body>As discussed chez simX I tried to clean up the code to support a more modular system with support for YouTube and Vimeo (and siFR) implemented at the moment.

The question is whether this hits the sweet spot between fleshed out enough and simple to implement already.

simX thinks that an interface based on property lists is preferable. So someone who's interested in that needs to implement it. Doing so should be much easier after the cleanup than it was before. 

A few tests suggest that with Perian installed even going the FLV route should be feasible. And it seems (also part of my current implementation) that a simple query to QTKit lets us figure out whether QT can play the format or not.</body>
      <body-html>&lt;div&gt;&lt;p&gt;As discussed chez simX I tried to clean up the code to support a
more modular system with support for YouTube and Vimeo (and siFR)
implemented at the moment.&lt;/p&gt;
&lt;p&gt;The question is whether this hits the sweet spot between fleshed
out enough and simple to implement already.&lt;/p&gt;
&lt;p&gt;simX thinks that an interface based on property lists is
preferable. So someone who's interested in that needs to implement
it. Doing so should be much easier after the cleanup than it was
before.&lt;/p&gt;
&lt;p&gt;A few tests suggest that with Perian installed even going the
FLV route should be feasible. And it seems (also part of my current
implementation) that a simple query to QTKit lets us figure out
whether QT can play the format or not.&lt;/p&gt;&lt;/div&gt;</body-html>
      <closed type="boolean">false</closed>
      <created-at type="datetime">2009-10-07T18:44:49-05:00</created-at>
      <creator-id type="integer">35715</creator-id>
      <diffable-attributes type="yaml">--- {}

</diffable-attributes>
      <milestone-id type="integer" nil="true"></milestone-id>
      <number type="integer">235</number>
      <permalink>modular-support-for-playing-back-h264-content-on-sites-other-than-youtube</permalink>
      <priority type="integer">0</priority>
      <project-id type="integer">24342</project-id>
      <state>accepted</state>
      <tag>feature featurerequest</tag>
      <title>Modular support for playing back H.264 content on sites other than YouTube</title>
      <updated-at type="datetime">2009-10-07T18:44:52-05:00</updated-at>
      <user-id type="integer">48093</user-id>
      <user-name>ssp</user-name>
      <creator-name>Nathan de Vries</creator-name>
      <url>http://rentzsch.lighthouseapp.com/projects/24342/tickets/235</url>
    </version>
  </versions>
</ticket>
