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
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
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
at VideoLabs SAS, Paris, France
VideoLAN non-profit organization
Ecole Centrale Paris
VIA Centrale Réseaux
Network Upgrade
1998 Reboot
2001
GPLv2
Qt interface (1st gen), April 2001, GNOME Desktop
VLC 0.6.x, August 2003 (initial release: December 1999)
VLC 0.3.x / 0.4.x, February 2003 (Initial release: April 2001)
VLC 0.5.x, February 2003 (initial release: June 2001)
June 2003
total 180M on Windows, 17M on OS X
More than 2.2B over lifetime
libvlc VLC VLMC Your app VLC for … libvlccore Access Demuxer Video output Audio output Muxer Decoder Encoder Access output Interface Renderer
Protocol Format Video Codec Subtitles Codec Audio Codec Metadata Video Filters Renderers Audio Filters Video Output Audio Output
#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); }
#import <VLCKit/VLCKit.h> @interface ViewController () { VLCMediaPlayer *_player; } @end
@implementation ViewController
{ _player = [[VLCMediaPlayer alloc] init]; _player.drawable = self.videoOutputView; VLCMedia *media = [VLCMedia mediaWithURL:[NSURL URLWithString:@“http://…”]]; _player.media = media; [super viewDidLoad]; }
{ [super viewDidAppear:animated]; [_player play]; } @end
GNU General Public License version 2.1 or later
(Windows, Linux, BSD, OS X, OS/2, …)
(Android, iOS, WinRT, Windows Phone, Tizen, tvOS)
libvlc VLC VLMC Your app VLC for … libvlccore Access Demuxer Video output Audio output Muxer Decoder Encoder Access output Interface Renderer
–VLC devs, 1998
#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 ()
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; }
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; }
published by SES S.A.
via unicast and multicast
no adaptation needed
Trailers, ...
Felix Paul Kühne fkuehne@videolan.org IEEE Region 8 Student & Young Professional Congress 2016