Skip to content
Snippets Groups Projects
README.md 7.95 KiB
Newer Older
Soomin Lee's avatar
Soomin Lee committed
<img src="https://www.videolan.org/images/vlckit/logo.svg" alt="VLCKit logo" height="140">

#

**VLCKit** is a generic multimedia library for any audio or video playback needs on macOS, iOS and tvOS.
|              | Platform                                                     | Cocoapods                                                    |
| ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| VLCKit       | ![Platform](https://img.shields.io/cocoapods/p/VLCKit.svg?style=flat) | [![VLCKit is CocoaPods Compatible](https://img.shields.io/cocoapods/v/VLCKit.svg)](https://cocoapods.org/pods/VLCKit) |
| MobileVLCKit | ![Platform](https://img.shields.io/cocoapods/p/MobileVLCKit.svg?style=flat) | [![MobileVLCKit is CocoaPods Compatible](https://img.shields.io/cocoapods/v/MobileVLCKit.svg)](https://cocoapods.org/pods/MobileVLCKit) |
| TVVLCKit     | ![Platform](https://img.shields.io/cocoapods/p/TVVLCKit.svg?style=flat) | [![TVVLCKit is CocoaPods Compatible](https://img.shields.io/cocoapods/v/TVVLCKit.svg)](https://cocoapods.org/pods/TVVLCKit) |
Soomin Lee's avatar
Soomin Lee committed
## Table of content

- [Features](#features)
- [Use-case](#use-case)
- [Requirements](#requirements)
- [Installation](#installation)
    - [Cocoapods](#cocoapods)
Carola's avatar
Carola committed
    - [Carthage](#carthage)
- [Documentation](#documentation)
- [Build](#build)
    - [Default](#default)
    - [Build with your own VLC repository](#build-with-your-own-vlc-repository)
- [Contribute](#contribute)
    - [Pull Request](#pull-request)
    - [GitLab Issues](#gitlab-issues)
    - [Patches](#patches)
- [FAQ](#faq)
- [Communication](#communication)
    - [Forum](#forum)
    - [Issues](#issues)
    - [IRC](#irc)
- [License](#license)
- [Further reading](#further-reading)
Felix Paul Kühne's avatar
Felix Paul Kühne committed

Soomin Lee's avatar
Soomin Lee committed
- Wrapper of **libVLC**, the engine of the popular media player *VLC*.
- Supports playback, active streaming, and media to file conversations on the Mac.
- Open-source software licensed under [LGPLv2.1](http://opensource.org/licenses/LGPL-2.1/) or later, available in source code and binary form from [VideoLAN's website](http://www.videolan.org/).
Soomin Lee's avatar
Soomin Lee committed
- Easily integratable via [CocoaPods](http://cocoapods.org/).
Soomin Lee's avatar
Soomin Lee committed
When will you need VLCKit?

Frankly, you will need it whenever you need to play media not supported by QuickTime / AVFoundation or if you require more flexibility.
Felix Paul Kühne's avatar
Felix Paul Kühne committed

Soomin Lee's avatar
Soomin Lee committed
Here are some other common use-cases:
Soomin Lee's avatar
Soomin Lee committed
- Playing something else besides H264/AAC files or HLS streams.
- Need subtitles beyond QuickTime’s basic support for Closed Captions.
- Your media source is neither your mobile device nor a basic HTTP server, but a live stream hailing from some weird media server or even a raw DVB signal broadcasted on a local network.
- and more!

## Requirements

- iOS 8.4 + / macOS 10.9+ / tvOS 10.2+
- Xcode 9.0+
- Cocoapods 1.4+
Soomin Lee's avatar
Soomin Lee committed
- Python 3.7 (compile time only)

## Installation

### Cocoapods

Soomin Lee's avatar
Soomin Lee committed
[CocoaPods](http://cocoapods.org/) is a dependency manager for Cocoa projects. You can install it with the following command:
Soomin Lee's avatar
Soomin Lee committed
gem install cocoapods
Soomin Lee's avatar
Soomin Lee committed
To integrate the latest VLCKit into your project, specify it in your `Podfile`:
Felix Paul Kühne's avatar
Felix Paul Kühne committed

```ruby
source 'https://github.com/CocoaPods/Specs.git'
Felix Paul Kühne's avatar
Felix Paul Kühne committed

target '<macOS Target>' do
    platform :macos, '10.9'
    pod 'VLCKit', '~>3.3.0'
Felix Paul Kühne's avatar
Felix Paul Kühne committed

target '<iOS Target>' do
    platform :ios, '8.4'
    pod 'MobileVLCKit', '~>3.3.0'
Felix Paul Kühne's avatar
Felix Paul Kühne committed

target '<tvOS Target>' do
Soomin Lee's avatar
Soomin Lee committed
    platform :tvos, '10.2'
    pod 'TVVLCKit', '~>3.3.0'
Felix Paul Kühne's avatar
Felix Paul Kühne committed

Soomin Lee's avatar
Soomin Lee committed
Then, run the following command:
Felix Paul Kühne's avatar
Felix Paul Kühne committed

Soomin Lee's avatar
Soomin Lee committed
pod install
Carola's avatar
Carola committed
### Carthage
Soomin Lee's avatar
Soomin Lee committed
[Carthage](https://github.com/Carthage/Carthage) is a way to add frameworks to your Cocoa application. You can install it with the following command:
Carola's avatar
Carola committed

```bash
brew install carthage
```

To integrate VLCKit into your project, specify it in your `Cartfile`. The URL depends on your target OS.
Soomin Lee's avatar
Soomin Lee committed
binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/MobileVLCKit.json" ~> 3.3.0
Soomin Lee's avatar
Soomin Lee committed
binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/VLCKit.json" ~> 3.3.0
Soomin Lee's avatar
Soomin Lee committed
binary "https://code.videolan.org/videolan/VLCKit/raw/master/Packaging/TVVLCKit.json" ~> 3.3.0
Soomin Lee's avatar
Soomin Lee committed
Then, run the following command:
Carola's avatar
Carola committed

```bash
carthage update
```
Jonas Vautherin's avatar
Jonas Vautherin committed

Note that the following system dependencies are required and need to be linked into the project:

* AudioToolbox.framework
* AVFoundation.framework
* CFNetwork.framework
* CoreFoundation.framework
* CoreGraphics.framework
Jonas Vautherin's avatar
Jonas Vautherin committed
* CoreMedia.framework
* CoreText.framework
* CoreVideo.framework
* Foundation.framework
Jonas Vautherin's avatar
Jonas Vautherin committed
* libbz2.tbd
* OpenGLES.framework
* QuartzCore.framework
* Security.framework
* VideoToolbox.framework
On iOS and tvOS, you also need to link:

* UIKit.framework

## Documentation
API documentation of VLCKit is available [online](https://videolan.videolan.me/VLCKit) and within both the source code as well as binary downloads. Except as indicated, all the APIs are the same on macOS, iOS and tvOS.

Soomin Lee's avatar
Soomin Lee committed
Make sure that Python 3.7 is installed. Get the package from https://www.python.org - do NOT use homebrew for installation as it will be ignored by VLC's build process.
Run `compileAndBuildVLCKit.sh` with the `-a ${ARCH}` option to specify the target architecture.

Soomin Lee's avatar
Soomin Lee committed
More information can be found under `./compileAndBuildVLCKit.sh -h`.

### Build with your own VLC repository
Soomin Lee's avatar
Soomin Lee committed
1. Put a VLC repository inside `libvlc/vlc`.
Soomin Lee's avatar
Soomin Lee committed
    `mkdir libvlc && cd libvlc && ln -s "PATH_TO_VLC"`
Soomin Lee's avatar
Soomin Lee committed
2. Apply VLC patches needed for VLCKit.
    `git am ../libvlc/patches/*`
Soomin Lee's avatar
Soomin Lee committed
3. run `compileAndBuildVLCKit.sh` with the `-n` option.
Felix Paul Kühne's avatar
Felix Paul Kühne committed

Felix Paul Kühne's avatar
Felix Paul Kühne committed

As VLCKit is an open-source project hosted by VideoLAN, we happily welcome all kinds of contributions.
### Pull Request
Felix Paul Kühne's avatar
Felix Paul Kühne committed

Pull requests are more than welcome! If you do submit one, please make sure to use a descriptive title and description.

### GitLab Issues

You can look through the currently open [issues on GitLab](https://code.videolan.org/videolan/vlckit/issues/) and choose the one that interests you the most.

### Patches

If you like the more classic approach, you can submit patches!

For detailed explanation on how to do so, please read our wiki page on [how to send patches](https://wiki.videolan.org/Sending_Patches_VLC/).
Felix Paul Kühne's avatar
Felix Paul Kühne committed

## FAQ

> Q. Since this isn't under the MIT license, is there something special I should know?

The [LGPLv2.1](http://opensource.org/licenses/LGPL-2.1/) allows our software to be included in proprietary apps, *as long as you follow the license.* Here are some key points you should be aware of.

- Make sure to publish any potential changes you do to our software
- Make sure that the end-user is aware that VLCKit is embedded within your greater work
- Make sure that the end-user is aware of the gained rights and is granted access to our code as well as to your additions to our work

For further details, please read the license and consult your lawyer with any questions you might have.

## Communication

### Forum

Soomin Lee's avatar
Soomin Lee committed
If you ever need help, feel free to reach out. The [forum](http://forum.videolan.org/) is always there for you.

### Issues

Did you find a bug and want to report it to us? You can create an issue on [GitLab](https://code.videolan.org/videolan/vlckit/issues/) or on our [bug tracker](https://trac.videolan.org/vlc/).

### IRC

Do you have a pressing question or just want to talk? Reach out to us via our IRC channel on the [freenode](http://www.freenode.net/) network's **#videolan** channel.

If you don't have an IRC client at hand, use the [freenode webchat](http://webchat.freenode.net/).

Martin Finkel's avatar
Martin Finkel committed
### Discord

For matters related to the VLCKit and LibVLC APIs, join our LibVLC bindings Community Discord Server!

[![Join the chat at https://discord.gg/3h3K3JF](https://img.shields.io/discord/716939396464508958?label=discord)](https://discord.gg/3h3K3JF)

## License

VLCKit is under the [LGPLv2.1](http://opensource.org/licenses/LGPL-2.1/) license.

See [COPYING](./COPYING) for more license info.

## Further reading
Felix Paul Kühne's avatar
Felix Paul Kühne committed

You can find more documentation on the [VideoLAN wiki](https://wiki.videolan.org/VLCKit/).