anyone excited to team up to create an enhanced video plugin for elgg?

i am beginning the process of creating a new version of 'videolist' for elgg and would appreciate assistance from anyone who can assist me.

features i intend to include:

  • on-server videos - integrated in with external videos (using the file plugin).
  • integration of a media player - currently i am using projekktor - though may possibly switch for stability reasons.
  • support for different sizes of video thumbnails from external sites.
  • support for more external sites than the default videolist support scope.
  • support for playlists (projekktor supports its own approach to youtube style playlists and also supports youtube videos directly, so youtube videos can be played inside your own themed media player).
  • many configuration options for the admin.
  • option: video river entries load as images and are replaced by a media player when clicked.

other features can be added too, however, these are my current list.

  • having a conversion queue would be beneficial

    My plugin has a database queue.

    there are throttling packages available for gnu/linux that will restrict the amount of cpu that specific processes can use

    Yes, it would require something like this.

    video/audio has so many options that need to be configured and that different admins may want to configure differently that the admin panel will need to be quite detailed and contain many fields.

    It already allows admin to freely define any amount of different profiles for the conversion.

  • I've also made extensive additions to videolist I can't share yet. Chunked large file uploads via Plupload; local vid plays via MediaElement.js (great compat, stable); vid serving supports range requests; transcodes to 2 formats I think. The code is really entangled in other plugins so I think I can't do anything but post snippets and try to work them in over time.

    I have big fears serving video behind Elgg bootstrap. This basically "works" as long as few use it, which IMO means it's not a realistic solution at all. It's funny/sad how close Kaltura comes to being really useful but kinda isn't for several reasons.

  • @Juho  - ok great. :)

    @Steve - also great! i'm not clear on your concern about being 'behind elgg bootstrap' - are you referring to the video processes operating on the server alongside elgg? or something more specific?
    Kaltura was the first plugin for elgg that i ever used... i agree that it is not refined enough. the basics are not so friendly and the advanced features are not so useful! (as i recall, from several years 'ago').
    (i was also unable to locate assistance with it).

    i had not seen mediaelement.js before now. it looks nice. while it appears to be more stable than projekktor presently is, it is also missing some of the functionality that i like about projekktor - such as playlists & watermarking. i am not attached to projekktor, but these extra features do give the end result some extra glow.

  • i'm not clear on your concern about being 'behind elgg bootstrap'

    It means that Elgg engine has to be started in order to send video data. This is bad for performance.

  • oh ok - i don't know enough about that aspect of elgg architecture to comment much.. the elgg docs don't contain the details of the process flows, as far as i have noticed.

    except to say that if the videos are being presented on an elgg page anyway, then wouldn't the engine already be loaded?
    so wouldn't the performance issue only apply to videos that are served via an iframe embed or other method - such as a streaming channel/address?

    i imagine that in those cases we would only need to write a small amount of custom sql / php to replace elgg engine.. or is there more to the issue than i am aware of here?

  • @Juho You got it. This part of development was farmed out. I wanted to try Apache SendFile (I don't know if it does range requests) or at least checking access_id without full boot like we do done icons.

  • except to say that if the videos are being presented on an elgg page anyway, then wouldn't the engine already be loaded?

    Engine gets loaded for the page but the video comes through a separate request, which requires the engine to be loaded a second time. Possibly multiple different times, if seeking is used. Therefore ten simultaneous video watchers might result in hundreds of separate request each loading the engine!

    This is why the most efficient solution would be to avoid Elgg (and in fact PHP altogether) and serve the video directly. This however is difficult because Elgg dataroot is outside the wwwroot so there is no direct access to the videos.

    Bypassing Elgg would also mean that it wouldn't be possible to check access permissions for the videos.

    As you see, it isn't exactly a trivial task to create a robust video service. :)

  • i'm not clear on why elgg engine would be triggered multiple times for a video on a standard elgg page.

    are you saying that even if i just embed a media player (e.g. jwplayer / projekktor etc.) on an elgg page that was created using elgg engine, that there is a 2nd request for the video object?
    i thought that the video object (defined in the page source and handled via javascript) - is only part of the html page source and can be added during the php build process of the page itself (that is how i have coded the pages so far). where/how is the 2nd engine call being made?

    i recall that thumbnail pages often bypass the engine and just include a direct sql call to get the video and push the data/headers out to the browser directly, minus the elgg engine.. that is what i was referring to in my earlier comment on the topic.

  • are you saying that even if i just embed a media player (e.g. jwplayer / projekktor etc.) on an elgg page that was created using elgg engine, that there is a 2nd request for the video object?

    Yes, there is a separate request that gets the actual video. The same way as each javascript/css/image file is fetched from the server through its own request. (Unless they have been fetched earlier and are already in the browser cache.)

  • so the elgg engine is being called for each js and css file seperately to the main page load too!?