After a long time, I have exciting things to share!
VLC media player for iPhone, iPod touch, iPad and Apple TV is receiving a major update on the App Store today. As always, it is completely free of charge in all countries and the source code is here.
We spent a bit of effort to bring the update to iOS 9 as there seem to be many people still using the 2nd generation iPad or the original iPad mini for video and also even iPhone 4S – so those are the oldest devices we still support – like in our last major release 2 years ago! It will even run faster than before now.
In this update, we added a completely rewritten video playback user interface that simplifies and modernizes the user experience. Additionally, we add support for the SFTP and NFS protocols for media shares and change the network stacks for UPnP, SMB and FTP shares – this improves reliability but also adds the often requested download feature from shares to the local storage.
Further, we added a full black UI theme for OLED devices and access to media stored locally on iOS / iPadOS devices outside the application scope. This includes external USB storage devices.
In our mission to support everything possible in multimedia, we also added very special interesty features to this release, such as SAT>IP support including custom channel lists, RTSP streaming with enforced TCP mode and modified the white point adaption mode on supported devices. You can also list more than 500 files in your folder on Dropbox and Google Drive now. The full change log is here.
Along side the major update for iOS and iPadOS, today we also updated our port to Apple TV. It includes all the lower level improvements as well as quite a few smaller improvements and refinements.
Today, we will discuss thumbnailing of video content. We need to differenciate two key aspects: saving still images of a currently playing video (snapshot) and previewing media stored somewhere without being played (thumbnail). While either way, VLCKit will open the resource, decode the bitstream and provide you with a image, performance and usability will differ.
Let’s start with thumbnailing a non playing media source, which can be stored locally or remotely.
We need to create a NSURL instance along with its VLCMedia representation. Note that the URL may point to both a local or a remote resource.
We create the thumbnailer instance for our media and point to ourselves as a delegate to receive the thumbnail.
We define the size of the resulting thumbnail. If width and height are set to zero, the video’s original size will be used. If you set either width or height to zero, the aspect-ratio is preserved.
Finally, we call the thumbnailer’s worker function.
Asynchronously, after about two to twenty seconds, we will receive a response from the thumbnailer to the delegate. It is important to check the thumbnail for NULL before trying to bridge it to a UIImage or NSImage as well as afterwards as the translation can fail. That’s all.
You might be wondering how the thumbnailer decides which frame to return. This is based on a more complex algorithm currently depending on the media’s duration and availability of key frames. Future versions may also analyze the image content.
You can overwrite this algorithm with the thumbnailer’s snapshotPosition property (with a 0.0 to 1.0 range).
The VLCMediaPlayer class includes a very basic API, which allows the creation of an infinite number of snapshots during playback, which will be asynchronously stored as local files. The size parameters follow the same pattern as for the thumbnailer.
As soon as the snapshot was stored, a VLCMediaPlayerSnapshotTaken notification is emitted and mediaPlayerSnapshot: is called on the media player’s delegate. Note that the delegate call is available on iOS and tvOS only.
As a convenience starting in VLCKit 3.0 on iOS and tvOS, the media player class exposes the lastSnapshot and snapshotsproperties, which provide a UIImage instance of the last shot as well as a list of files of the taken shots.
10 days ago, we published VLC media player 3.0 for all platforms. It’s the first major release in three years and brings a huge number of features, improvements and fixes. Get an overview here and the full changelog there.
For VLCKit, we improved performance and memory management, added new APIs and you get all improvements from the underlying libvlc including full support for decoding H264 and H265 using VideoToolbox in hardware. Instead of using all cores of your iPhones CPU at 100%, decoding a 4K video uses less than 20%.
Further you can look at all aspects of a 360° video with touch gesture based controls, discover and browse shares on your network with UPnP, NFS, FTP, SFTP and SMB and more.
As you remember, we published VLC for Apple TV in January 2016, but so far, we never made VLCKit available on tvOS. In addition to MobileVLCKit for iOS, we now introduce TVVLCKit for tvOS!
For macOS, iOS and tvOS, VLCKit 3.0 is available through Cocoapods as a precompiled binary under the LGPLv2.1 license. You can find the source code on our website – contributions welcome!
We are looking forward to all your feedback and the apps deploying VLCKit to deliver multimedia to their users.
Do you want to learn more about integrating VLCKit? Have a look at the tutorials I wrote not too long ago (Part 1, Part 2).
Today, we released version 2.5.0 of VLC for iOS with a strong focus on cloud integration. We added support for iCloud Drive, box.com and OneDrive. As part of iCloud Drive, you can have access to any cloud storage enabled app on iOS 8 and later. For box.com and OneDrive, we added native support, which allows us direct streaming from the cloud without having the user download a media first.
Furthermore, we cleaned-up the playback experience matching recent changes in VLC for Android and added the full 10-band equalizer known from VLC’s desktop ports. While reworking playback, we also integrated support for titles and chapters included in a few Matroska / MKV and MP4 files. Due to popular request, you can also lock the UI and rotation during playback.
One last thing: you can share your media library between multiple devices on the same local network now! If you enable WiFi sharing and keep VLC active, it will appear in the “Local Network” tab of all iOS devices running VLC supporting both device to device streaming as well as downloads.
Finally, we added a couple of new translations to Portuguese (Portugal), Portuguese (Brazil), Khmer, Faroese, Belarusian, Serbian (Latin), Tamil and Afrikaans along with the usual set of bug fixes and minor improvements.
We hope you like this new version as much as we do.
After a 5 month hiatus and a couple of delays in between, we are very happy to release version 2.4.1 of VLC for iOS to the general public today. Please see our press release for cross-platform information.
As an introductory remark, make sure to get the legitimate version of VLC. There are a number of clones on the iOS App Store right now, which violate both our copyright and our trademarks, include advertisement and usually charge $1 to $5 per download. We sent 39 DMCA take down notices against 48 apps over the cause of the last 12 months and in the end, we always succeeded. However, this can take up to 3 months, even for seemingly obvious violations.
As a consequence to those continued violations, VLC for iOS’s source code repository will no longer be publicly accessible, but archives of the stable releases only.
So, what’s new in VLC for iOS?
Support for iPhone 6 and 6+
Native support for Plex using their custom protocol
File Sharing with third party apps
Media library search
Custom URL scheme based on x-callback-url
Greatly improved UPnP support
In addition to uploading media via WiFi, you can also download all the media stored within VLC using a simple web browser
Streaming and folder support for Google Drive
Flat folder synchronization via iTunes
Options for default playback speed and FTP text encoding
On-the-fly audio and subtitles track synchronization
And a large number of small features, improvements and bug fixes as well as a new translation to Traditional Chinese.
This release removes support for Dolby Digital (AC-3), Dolby Digital Plus (E-AC-3) and Dolby TrueHD (MLP) for the foreseeable future due to a content dispute with Dolby Laboratories, which could not be resolved in a different way.
We are very happy with this major version of VLC for iOS and hope that you’ll like it as much as we do. Further, we are excited about the things we have in our pipeline for the forthcoming releases. A first beta of version 2.5 will be released to our testers today.
When I started to work on VLC for iOS last summer, it quickly became apparent that it would need to support playback from local media servers announced over the UPnP protocol. I came across a Objective-C++ library named upnpx which suited my use case nicely and which included broad support for all the various UPnP dialects.
Regrettably, upnpx was not maintained anymore since a few months, so I started a private fork within VLC for iOS and eventually moved on to github. Nowadays, my fork is officially endorsed by the original developer Bruno Keymolen.
This week, I did a first release of upnpx since the fork. Version 1.3.0 includes full support for iOS 8 and the 64bit runtime as well as fixes to a lot of logical runtime bugs and crashes. Additionally, it adds new APIs for MediaServer1ItemObject, BasicUPnPDevice, as well as server notifications.
I’m particularly happy about the fact that 8 people contributed to this fork and several hundred people are deploying it in their apps.
So, please get the tarball or add it through CocoaPods, deploy it in your app and report any issues or feature requests you might have! Let’s see where this goes!