VLC media player for iOS, iPadOS and tvOS version 3.3

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.

VLC 3.3 on iPhone 4S

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.

Full black UI theme on iPhone 13

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.

VLC 3.3 on iPad Pro, iPhone 13 and iPhone 4S

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.

MobileVLCKit and VLCKit, part 3

This is part of an article series covering VLC’s Objective-C framework, which we provide to allow inclusion of all its features in third party applications as well as VLC for iOS and Apple TV.

Previously published:

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.

Thumbnailing

Let’s start with thumbnailing a non playing media source, which can be stored locally or remotely.

@implementation DummyObject <VLCMediaThumbnailerDelegate>

- (void)workerMethod
{
    // 1
    NSURL *url = [NSURL urlWithString:@""];
    VLCMedia *media = [VLCMedia mediaWithURL:url];

    // 2
    VLCMediaThumbnailer *thumbnailer = [VLCMediaThumbnailer thumbnailerWithMedia:media delegate:self];

    // 3
    CGSize thumbSize = CGSizeMake(800.,600.);
    thumbnailer.thumbnailWidth = thumbSize.width;
    thumbnailer.thumbnailHeight = thumbSize.height;

    // 4
    [thumbnailer fetchThumbnail];
}

- (void)mediaThumbnailer:(VLCMediaThumbnailer *)mediaThumbnailer didFinishThumbnail:(CGImageRef)thumbnail
{
    // 5
    if (thumbnail) {
        UIImage *thumbnailImage = [UIImage imageWithCGImage:thumbnail scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
        if (thumbnailImage) {
            // TODO: do something with the thumbnail!
        }
    }
}

- (void)mediaThumbnailerDidTimeOut:(VLCMediaThumbnailer *)mediaThumbnailer
{
     // TODO: Show a reaction
}

@end
  1. 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.
  2. We create the thumbnailer instance for our media and point to ourselves as a delegate to receive the thumbnail.
  3. 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.
  4. Finally, we call the thumbnailer’s worker function.
  5. 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).

Snapshots

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.

- (void)workerMethod
{
    // ...
    [_mediaplayer saveVideoSnapshotAt:(NSString *)path withWidth:(int)width andHeight:(int)height];
    // ...
}

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 snapshots properties, which provide a UIImage instance of the last shot as well as a list of files of the taken shots.

That’s all for today. Enjoy using VLCKit!

VLCKit 3.0

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).

So what did we change in VLCKit, API-wise? Continue reading VLCKit 3.0

Announcing VLC for Apple TV

Today, we are proud to announce VLC on the Apple TV. It’s a full port of VLC media player combined with platform specific features.

VLC for Apple TV integrates with a plethora of devices and services on your local network and includes a custom way of casting files directly to the TV from your other computers using a web browser!

Background
Immediately after Apple announced the future of television, we started to develop for the new box and now it is finally ready to be published. This is the first app we release with the increased limit of 2000 TestFlight beta testers, who had access to our app since mid November and greatly influenced the result. We were excited about the amazing amount of feedback we received.

Our mission for VLC for the Apple TV was to fulfill our claim “plays it all” and we got close:  it supports virtually all formats under the sun (like the iOS version of VLC). Before demonstrating VLC’s advanced playback experience on the Apple TV, let’s discuss about ways how to actually access content!

Content Discovery
VLC on the Apple TV automatically discovers storage and shares on your local network (using the SMB, UPnP media server, FTP and PLEX protocols). You can browse them with the clicker or the Remote, select the content you want and it will play.

During playback, you’ll be able to add subtitles from OpenSubtitles.org. Login credentials can be securely stored on your Apple TV and will be synchronized to your iPad or iPhone (and the other way around) to ease access.

Remote Playback
However, what about network streams and files you don’t have stored on your server? This is where Remote Playback steps in. On this view, VLC shows an address (and an IP) on your Apple TV. Open it using your web browser. Drop a file to play it on the big screen, drop multiple files to queue them. Until storage hits its limits on the Apple TV, the files will remain available locally on device.

For playback of a network stream URL on your TV, just paste it to the field and push return. Once playback concludes, you will find it in the Network Stream view for future use. Like for files, you can send multiple URLs rows in a row and they will be attached to the playback queue.

Finally, the web interface can be used for play/pause and seeking.

Speaking about network streams. URLs recently played on iPad or iPhone will appear along with the ones played on the big screen automatically.

Playback
VLC for the Apple TV supports the basic play, pause and seek. Additionally, you can navigate by chapter and titles or pick from multiple audio and subtitles tracks.
Watching a talk and you’d wish the speaker would be a bit quicker? Set your custom playback speed, a feature we missed from any other player on the Apple TV so far. As VLC is increasingly used to watch talks and documentation in education, it was naturally of high importance for us to include this feature from the start.
You enjoy listening to web radio or music? We believe that just showing album art is a bit boring so we integrated with the community service hatchet.is to show artist imagery and biographies – give it a go!

Let’s go back to subtitles for a second: VLC on the Apple TV supports any kind of text (srt, SSA, WebVTT, …) or bitmap subtitles including full support for Right-to-Left languages like Arabic and Hebrew, complex text layout for Malayalam as well as further Asian languages.
What to do when subtitles are not included with your media? Within the playback view, you can find VLC’s first integration on embedded platforms ever with OpenSubtitles.org!

Outlook
When looking closely, one content source known from VLC’s iOS port is missing so far: Cloud Services! Support for Dropbox, OneDrive and Box is currently in beta testing using the TestFlight platform. It will appear shortly after.

The day Apple announced the new device, we immediately started porting VLC to their new operating system and finally, our initial version was approved! We are excited about this first new port of VLC in 2016 after concluding 2015 with a port to Chrome OS and are really looking forward to your feedback!

I can’t thank Tobias enough for his dedication during the last quarter to make this possible.

VLC for iOS, version 2.7.0

Today, we will release a new major version of VLC for iOS. Note that due to adapted review guidelines, it is branded “VLC for Mobile” on the iOS App Store now.

We have been working on this update for the last few months, so it adds a lot of features:

  • full iOS 9 support incl. split screen and iPad Pro
  • re-written Apple Watch app for watchOS 2
  • system-wide search for content stored locally within the app using “CoreSpotlight”
  • Touch ID support to unlock the app
  • full support for Right-To-Left languages

On the playback and networking side, we added

  • support for SMB  file servers (Windows shares)
  • highly improved subtitles rendering with font fallback for non-western languages
  • desktop quality SSA subtitles rendering (initially introduced in 2.6.6)
  • list of recently played network streams is shared across devices using iCloud
  • stored login credentials for servers is shared across devices using iCloud Keychain
  • stored login credentials for cloud services are shared across devices using iCloud Keychain

This release includes a lot of UI improvements, bug fixes and last but not least a newly designed sidebar menu!

Finally, this release drops support for iOS 6.1. VLC now requires iOS 7.0 or later.

This major update is the result of 4 months of work and I would like to thank TobiasCarola and Pierre for their dedication to make this possible.

Stay tuned, we have more exciting things in the pipeline, which we will happily present very soon.

VLC for iOS 2.5.0

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.

VLC for iOS 2.4.0 & 2.4.1

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.

VLC media player for Mac OS X 2.2.0

Today, we will also a major new version of VLC for Mac OS X. For cross-platform changes, please have a look at the release notes and our press release.

What’s new in VLC for Mac?

  • Support for OS X Yosemite
  • Completely re-written web plugin for Chrome, Safari and Firefox is back!
    Improved fullscreen behavior
  • Continue playback where you left off
  • Improved playlist adding a file size column and an option to increase the font size
  • In addition to iTunes, Spotify can be paused on playback start
  • New encryption and decryption modules for SSL based on OS X’s SecureTransport library for FTP and HTTP connections. This greatly improves speed and security.
  • A lot of improvements in VLCKit for use in third party applications, notably
    • Switched the code base to ARC and added support for Swift projects
    • Support for HLS and HTTPS playback on iOS
    • Improved thumbnailing
    • Various new APIs for playlist handling, the equalizer, thumbnailing and meta data handling

We are excited about this major update of VLC for Mac and hope that you’ll like it as much as we do.

VLC media player for Mac OS X, versions 2.1.4 and 2.0.10


Today, we released 2 versions of VLC media player for Mac OS X targeting different client systems.

Version 2.1.4

This is a small bug fix release, which improves an important regression regarding DVD playback and improves compatibility with HUffYUV contents by upgrading the respective decoder library. Additionally, a rare issue with some specifically crafted wmv files was fixed and a misleading error message no longer appears during video playback on OS X Mavericks.
Grab a copy here or trigger the internal updater if it doesn’t prompt you right away.

Version 2.0.10

More than 3 months after the last update to VLC’s 2.0 release series, this minor update includes security updates for third party libraries, stability improvements and increased battery life when using a Mac with more than one graphics card.
While we generally recommend anyone using a Mac with OS X 10.6 or later on a 64bit-capable device to deploy version 2.1.4 linked above, VLC 2.0.10 is a great thing to enjoy your media if you decided to stay on OS X 10.5 or if you are using a PowerPC or 32bit Intel-based Mac.
Fetch the PowerPC binary here or grab the Intel variant there. The update is also appearing in VLC’s internal updater.

VLC for iOS, version 2.2.1

Today, we released a small update of VLC for iOS. It solves the most important regressions in last week’s 2.2 major release, but also includes a major improvement: full initial support of 64bit aka AArch64 aka arm64 on late 2013’s iPhone and iPad thanks to a close collaboration with the libav team.

Additionally, we added enhanced support for a broader set of UPnP servers, notably Twonky 7, Serviio 1.4 and XMBC 12, and resolved an inconvenient memory management issue in the underlying upnp library, which lead to the weird behavior that from a full folder only a single file would actually be played over and over again.

Regarding VLC for iOS’ networking capabilities, the option to manipulate the caching level was implemented in the same way as known from its desktop counterparts. Furthermore, ftp streams respect non-ASCII file encodings and URLs with spaces correctly now. Streaming from Dropbox is more reliable, too.

Finally, we increased the readability of metadata displayed on iPad (iOS 7), solved stability regressions on iOS 6 and implemented a more intelligent thumbnailing mechanism.

Oh, and your TV show episodes disappeared with the last update? That’s solved, too. Sorry for the confusion and the trouble this database edge-case caused.