VLC and VideoLAN what you might know, what you should know and what - - PowerPoint PPT Presentation

vlc and videolan
SMART_READER_LITE
LIVE PREVIEW

VLC and VideoLAN what you might know, what you should know and what - - PowerPoint PPT Presentation

VLC and VideoLAN what you might know, what you should know and what you dont know Felix Paul Khne fkuehne@videolan.org IEEE Region 8 Student & Young Professional Congress 2016 Felix Paul Khne Contributor to VideoLAN since


slide-1
SLIDE 1

VLC and VideoLAN

what you might know, what you should know
 and what you don’t know

Felix Paul Kühne – fkuehne@videolan.org IEEE Region 8 Student & Young Professional Congress 2016

slide-2
SLIDE 2

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 Lead


at VideoLabs SAS, Paris, France

  • Treasurer and former secretary of the 


VideoLAN non-profit organization

slide-3
SLIDE 3

History & Overview

slide-4
SLIDE 4

Ecole Centrale Paris

slide-5
SLIDE 5

VIA

VIA 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?
slide-6
SLIDE 6
slide-7
SLIDE 7

Video Streaming!

slide-8
SLIDE 8

1998 Reboot

  • Modularity
  • Cross-Platform
  • 2nd year project

2001

  • Publication as
  • pen source
  • Licensed under

GPLv2

slide-9
SLIDE 9

VLC 0.2.70

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

slide-10
SLIDE 10

Port to BeOS

VLC 0.6.x, August 2003 (initial release: December 1999)

slide-11
SLIDE 11

Port to Mac OS X

VLC 0.3.x / 0.4.x, February 2003 (Initial release: April 2001)

slide-12
SLIDE 12

Port to Microsoft Windows

VLC 0.5.x, February 2003 (initial release: June 2001)

slide-13
SLIDE 13

Apple Design Award Runner-up

June 2003

slide-14
SLIDE 14

Early industrial support

slide-15
SLIDE 15
slide-16
SLIDE 16
slide-17
SLIDE 17

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, …
slide-18
SLIDE 18

Download statistics and installed base

  • 2.2.4 for desktop released June 5th
  • 49.6M downloads on Windows, 4.4M on OS X


total 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

slide-19
SLIDE 19

Who are those users?

slide-20
SLIDE 20

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
slide-21
SLIDE 21

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
slide-22
SLIDE 22

Contributors

  • core team of 10 people
  • 700 over lifetime
  • 130 per year
  • partially volunteers, partially consultants
slide-23
SLIDE 23

Collaboration

  • Quarterly team meetings throughout Europe
  • Additional topic specific sprints
  • IRC and mailing-lists
  • git deployment since early 2007
slide-24
SLIDE 24
slide-25
SLIDE 25

What is VLC?

slide-26
SLIDE 26

1 source file

slide-27
SLIDE 27

Architecture

libvlc VLC VLMC Your app VLC for … libvlccore Access Demuxer Video output Audio output Muxer Decoder Encoder Access output Interface Renderer

slide-28
SLIDE 28

Architecture

Protocol Format Video
 Codec Subtitles
 Codec Audio
 Codec Metadata Video
 Filters Renderers Audio
 Filters Video
 Output Audio
 Output

slide-29
SLIDE 29

Our code in your app

slide-30
SLIDE 30

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
slide-31
SLIDE 31

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); }

slide-32
SLIDE 32

Playback with VLCKit

#import <VLCKit/VLCKit.h> @interface ViewController () { VLCMediaPlayer *_player; } @end

slide-33
SLIDE 33

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

slide-34
SLIDE 34

libvlc deployment

  • Windows
  • precompiled binaries on videolan.org
  • VLCKit / MobileVLCKit / TVVLCKit
  • multiple precompiled Cocoapods available
  • Android
  • library needs to be compiled
slide-35
SLIDE 35

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
slide-36
SLIDE 36

Do people really do that?

slide-37
SLIDE 37

Your code in libvlc

slide-38
SLIDE 38

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.
slide-39
SLIDE 39

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
slide-40
SLIDE 40

Architecture

libvlc VLC VLMC Your app VLC for … libvlccore Access Demuxer Video output Audio output Muxer Decoder Encoder Access output Interface Renderer

slide-41
SLIDE 41

–VLC devs, 1998

Every feature is a module!

slide-42
SLIDE 42

Let’s write a module

slide-43
SLIDE 43

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

slide-44
SLIDE 44

Open function

static 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; }

slide-45
SLIDE 45

Worker function

static 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; }

slide-46
SLIDE 46

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
slide-47
SLIDE 47

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
slide-48
SLIDE 48

Do people really do that?

slide-49
SLIDE 49

Advanced or little known features

slide-50
SLIDE 50

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
slide-51
SLIDE 51

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
slide-52
SLIDE 52

Screen Casting

slide-53
SLIDE 53

Wall filter & netsync

slide-54
SLIDE 54

Web Interface

slide-55
SLIDE 55

libcaca video output

slide-56
SLIDE 56

Questions

slide-57
SLIDE 57

www.videolan.org

Felix Paul Kühne fkuehne@videolan.org 
 IEEE Region 8 Student & Young Professional Congress 2016