I've been looking at MobileVLCKit for some time actually, including
submitting build script patches to make it easier to build as a framework
and getting help from the VLC devs to make a stripped-down build option
without the default proprietary codecs.

There are a few key things that have led me to prefer going a separate way:

* Build reproducibility is bad. I very frequently encounter breakage after
a fresh checkout, as the complex build system doesn't ensure that
consistent versions of all the dependencies are used -- for instance there
are a lot of patches which frequently fail to apply. If the code can't be
safely rebuilt and dropped in, upgrading and debugging are potential
nightmares.

* No Xcode-friendly packaging. The recursive autoconf-based build system
doesn't match up well with CocoaPods for packaging and building in Xcode
with desired options. I could make a podspec that uses a prebuilt binary
with specific options[1], but:

* MobileVLCKit is large, and includes lots of things we don't need. A
default framework build is literally hundreds of megabytes; the actual
linked executable size is smaller but it still adds like 40 megabytes to
the app bundle. Even with the no-scary-codecs option there's a lot of stuff
in there and you get a huge library. We could work further to strip it
down, but there may be diminishing returns.


OGVKit wraps mostly the same open-source codec libraries that MobileVLCKit
does, but the framework and playback logic is lighter-weight and the
packaging is friendlier to debugging and versioning.

Ultimately the API surface between the Wikipedia app and the player widget
will be quite small; it should be easy to swap player libraries should the
need arise. (Or replace it altogether with standard classes if we ever
allow MP4 output on the servers...!)


[1] Note I am using such a binary package for libvpx, the WebM VP8/VP9
video codec. I'm prebuilding that using libvpx's build scripts, which *are*
nice and clean and consistent, and the resulting multi-arch framework
binary is only a few megabytes.

-- brion


On Thu, Jun 25, 2015 at 3:46 PM, Corey Floyd <cfl...@wikimedia.org> wrote:

> Brion - have a question about existing OGG players: Currently there is an
> iOS framework called VLCKit (https://wiki.videolan.org/VLCKit/) by the
> VideoLan crew that appears to handle OGG/WebM and seems to be under
> active development. It is also being used in several shipping apps
> (including the VLC iOS app)
>
> I see you forked it at sometime in the past… was there a reason why you
> didn't pursue modifying it or using it as is within the iOS app to play
> media files?
>
> On Thu, Jun 25, 2015 at 1:05 PM, Monte Hurd <mh...@wikimedia.org> wrote:
>
>> Brion this is so exciting! :)
>>
>> On Wed, Jun 24, 2015 at 3:53 PM, Brion Vibber <bvib...@wikimedia.org>
>> wrote:
>>
>>> We've been stalled for years on adding media playback to the Wikipedia
>>> iOS app due to the impasse between Wikimedia's insistence on free formats
>>> and Apple's insistence on only supporting patented formats.
>>>
>>> I'm trying to route around that impasse by getting Ogg and WebM playback
>>> up and running on iOS through a native widget library, which I've been
>>> cleaning up to ready it for CocoaPods packaging.
>>>
>>> Here's the high-level library:
>>> https://github.com/brion/OGVKit
>>>
>>> and provisional CocoaPods specifications for the low-level open-source
>>> libraries it needs:
>>> https://github.com/brion/OGVKit-Specs
>>>
>>> Once I finish some further fixes and do an API cleanup (version 0.5 on
>>> my provisional milestones <https://github.com/brion/OGVKit/milestones>)
>>> I plan to publish my podspecs and write a patch to the Wikipedia app that
>>> uses OGVKit to handle media playback.
>>>
>>>
>>> Rough patch plan:
>>> * add OGVKit as dependency
>>> * enhance the photo carousel view to instantiate a player view for
>>> audio/video files, just like on Android
>>> * add content CSS to clean up those video thumbnail 'Play media' links
>>> * add a JS click handler for 'Play media' links to launch the carousel
>>> * add a JS click handler for <audio> and <video> elements in content
>>> * add a bunch of libraries to the list on the about page
>>>
>>> Ideally this should be a "surgical" patch and relatively minimal, though
>>> an update of the Pods dir will pull in a lot of files. :)
>>>
>>> -- brion
>>>
>>> _______________________________________________
>>> Mobile-l mailing list
>>> Mobile-l@lists.wikimedia.org
>>> https://lists.wikimedia.org/mailman/listinfo/mobile-l
>>>
>>>
>>
>
>
> --
> Corey Floyd
> Software Engineer
> Mobile Apps / iOS
> Wikimedia Foundation
>
_______________________________________________
Mobile-l mailing list
Mobile-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mobile-l

Reply via email to