Top Banner
VLC and VideoLAN what you might know, what you should know and what you don’t know Felix Paul Kühne – [email protected] IEEE Region 8 Student & Young Professional Congress 2016
57

VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

May 03, 2018

Download

Documents

phamthuy
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

VLC and VideoLANwhat you might know, what you should know

and what you don’t know

Felix Paul Kühne – [email protected] IEEE Region 8 Student & Young Professional Congress 2016

Page 2: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Felix Paul Kühne• Contributor to VideoLAN since 2003

• Author of VLC-Mac 2.0

• Author of VLC-iOS 2.0 and VLC-tvOS

• Medic

• Software Developer and Project Leadat VideoLabs SAS, Paris, France

• Treasurer and former secretary of the VideoLAN non-profit organization

Page 3: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

History & Overview

Page 4: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Ecole Centrale Paris

Page 5: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

VIAVIA Centrale Réseaux

• Campus student association

• Internet access through RENATER

Network Upgrade

• How to pay for our network?

• Justify the needs of a bigger network?

Page 6: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source
Page 7: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Video Streaming!

Page 8: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

1998 Reboot

• Modularity

• Cross-Platform

• 2nd year project

2001

• Publication as open source

• Licensed under GPLv2

Page 9: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

VLC 0.2.70Qt interface (1st gen), April 2001, GNOME Desktop

Page 10: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Port to BeOSVLC 0.6.x, August 2003 (initial release: December 1999)

Page 11: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Port to Mac OS XVLC 0.3.x / 0.4.x, February 2003 (Initial release: April 2001)

Page 12: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Port to Microsoft WindowsVLC 0.5.x, February 2003 (initial release: June 2001)

Page 13: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Apple Design Award Runner-upJune 2003

Page 14: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Early industrial support

Page 15: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source
Page 16: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source
Page 17: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Input features• Support for DVDs

• region independent

• prevents forced chapters and subtitles (if desired)

• Blu Ray

• HD-DVD

• Network Streams

• Unicast, Multicast, all flavors of adaptive streaming

• External hardware

• Cameras, TV input, …

Page 18: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Download statistics and installed base

• 2.2.4 for desktop released June 5th

• 49.6M downloads on Windows, 4.4M on OS Xtotal 180M on Windows, 17M on OS X

• ~ 23M/month — 66% updates

• Windows Phone: 3M — Windows Store: 12M

• iOS: 11M

• Android: 65M

More than 2.2B over

lifetime

Page 19: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Who are those users?

Page 20: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Break-through?• 0.8.6 release series in 2006 - 2008

• more than 117M downloads

• 10x more than previous releases

• major press coverage

• last release of the wxWidgets interface

Page 21: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

VideoLAN association• Non-profit organization launched in 2009

• Members: VLC’s core developers — 0 employees!

• Supports

• Travel

• Sprints and VideoLAN Dev Days

• Legal

• Hardware and services

Page 22: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Contributors

• core team of 10 people

• 700 over lifetime

• 130 per year

• partially volunteers, partially consultants

Page 23: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Collaboration

• Quarterly team meetings throughout Europe

• Additional topic specific sprints

• IRC and mailing-lists

• git deployment since early 2007

Page 24: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source
Page 25: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

What is VLC?

Page 26: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

1 source file

Page 27: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Architecture

libvlc

VLC VLMC Your appVLC for …

libvlccore

Access Demuxer

Video output

Audio output

Muxer

Decoder

EncoderAccess output

Interface

Renderer

Page 28: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Architecture

Protocol Format

VideoCodec

SubtitlesCodec

AudioCodec

Metadata

VideoFilters

Renderers

AudioFilters

VideoOutput

AudioOutput

Page 29: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Our code in your app

Page 30: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

libvlc• Stable C API and ABI

• Bindings in C++, C#, Objective-C, Java, Python

• Steadily improved - 40 new API calls in v3.0

• Cross platform

• Proven and tested code used by millions

Page 31: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Playback with libvlc#include <vlc/vlc.h>

void play(const char *url, void *drawable){ libvlc_instance_t *vlcInstance = libvlc_new(0, “”); if (vlcInstance == NULL) return;

libvlc_media_player_t *player = libvlc_media_player_new(vlcInstance); libvlc_media_player_set_nsobject(player, drawable);

libvlc_media_t *media = libvlc_media_new_location(vlcInstance, url); libvlc_media_player_set_media(player, media);

libvlc_media_player_play(player); }

Page 32: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Playback with VLCKit

#import <VLCKit/VLCKit.h>

@interface ViewController () { VLCMediaPlayer *_player; } @end

Page 33: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Playback with VLCKit@implementation ViewController

- (void)viewDidLoad{ _player = [[VLCMediaPlayer alloc] init]; _player.drawable = self.videoOutputView; VLCMedia *media = [VLCMedia mediaWithURL:[NSURL URLWithString:@“http://…”]]; _player.media = media; [super viewDidLoad]; }

- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [_player play]; }

@end

Page 34: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

libvlc deployment• Windows

• precompiled binaries on videolan.org

• VLCKit / MobileVLCKit / TVVLCKit

• multiple precompiled Cocoapods available

• Android

• library needs to be compiled

Page 35: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Licensing

• Full playback stack distribution under Lesser GNU General Public License version 2.1 or later

• Compatible with any App Store terms of service

• Compatible with proprietary apps and plugins

• Notable exception: DVD playback, UIs

Page 36: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Do people really do that?

Page 37: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Your code in libvlc

Page 38: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

How to start• Pick your favorite platform

• desktop(Windows, Linux, BSD, OS X, OS/2, …)

• mobile(Android, iOS, WinRT, Windows Phone, Tizen, tvOS)

• Get our code and compile it.

• We are there for you.

Page 39: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Development• source code management using git

• git.videolan.org

• code.videolan.org

• sharing patches using mailing-lists

• pull requests will come!

• discussion on IRC

• bug and feature tracking on http://trac.videolan.org/vlc/timeline

Page 40: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Architecture

libvlc

VLC VLMC Your appVLC for …

libvlccore

Access Demuxer

Video output

Audio output

Muxer

Decoder

EncoderAccess output

Interface

Renderer

Page 41: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

–VLC devs, 1998

Every feature is a module!

Page 42: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Let’s write a module

Page 43: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Module definition#include <vlc_common.h> #include <vlc_aout.h> #include <vlc_filter.h> #include <vlc_plugin.h>

static int Open (vlc_object_t *); static block_t *Process (filter_t *, block_t *);

vlc_module_begin () set_shortname ("Karaoke") set_description ("Simple Karaoke filter") set_category (CAT_AUDIO) set_subcategory (SUBCAT_AUDIO_AFILTER)

set_capability ("audio filter", 0) set_callbacks (Open, NULL) vlc_module_end ()

Page 44: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Open functionstatic int Open (vlc_object_t *obj) { filter_t *filter = (filter_t *)obj;

if (filter->fmt_in.audio.i_channels != 2) { msg_Err (filter, "voice removal requires stereo"); return VLC_EGENERIC; }

filter->fmt_in.audio.i_format = VLC_CODEC_FL32; filter->fmt_out.audio = filter->fmt_in.audio; filter->pf_audio_filter = Process; return VLC_SUCCESS; }

Page 45: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Worker functionstatic block_t *Process (filter_t *filter, block_t *block) { const float factor = .70710678 /* 1. / sqrtf (2) */; float *spl = (float *)block->p_buffer;

for (unsigned i = block->i_nb_samples; i > 0; i--) { float s = (spl[0] - spl[1]) * factor;

*(spl++) = s; *(spl++) = s; }

return block; }

Page 46: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Production example: SAT>IP• Open standard based on RTSP, UPnP and HTTP

published by SES S.A.

• Stream satellite television (DVB-S2) on the home network via unicast and multicast

• One module of 800 LoC added

• runs on any supported platform,no adaptation needed

• One switch added to the existing UPnP discovery module

Page 47: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Additional open-source SDK

• runs on iOS, tvOS, Android, Android TV

• 1200 LoC for iOS and tvOS

• 1500 LoC for Android and Android TV

• identical libvlc code base

• Public this fall

Page 48: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Do people really do that?

Page 49: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Advanced or little known features

Page 50: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Extensions• written in lua

• highly customizable

• Use cases:

• automatic subtitle downloads

• Context information from imdb, wikipedia or Allociné

• Sharing on Twitter

• available for download on addons.videolan.org

Page 51: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Service discoveries &playlist parsers

• Detects media automatically:

• Local files • Network services • Internet services

• Resolves links to YouTube, Dailymotion, Vimeo, Apple Trailers, ...

• Highly customizable

• Written in lua • Publish and get them from addons.videolan.org

Page 52: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Screen Casting

Page 53: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Wall filter & netsync

Page 54: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Web Interface

Page 55: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

libcaca video output

Page 56: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

Questions

Page 57: VLC and VideoLAN - SYP 2016 Regensburg€¢ mobile (Android, iOS, WinRT, Windows Phone, Tizen, tvOS) • Get our code and compile it. • We are there for you. Development • source

www.videolan.orgFelix Paul Kühne

[email protected]

IEEE Region 8 Student & Young Professional Congress 2016