SlideShare una empresa de Scribd logo
1 de 53
Nguy n Kim Tuy nễ ế
CTO – MC CORP
M: +84912610253|| E: tuyennk@mc-corp.vn
W: http://mc-corp.vn
Skype: nktuyen
HOW TO BUILD VIDEO
STREAMING SERVER IN 15
MINS
1ST
MINUTE
Audience & Goal
Audience & Goal
• Audience object:
– Student
– Mobile developer
– Network administrator
– Newbie
– ….
=> For everyone who care about Video Streaming
Server
GOAL
• Provide a free solution.
• Quick & easy – even for newbie
• Security & efficiency
=> You can build your-own video streaming server for
your business without pay money.
2ND
MINUTE
Mobile Video Formats
Mobile Video formats
• Mobile TV and mobile video come in only a few
formats, and all are compressed:
– 3GPP (3rd Generation Partnership Project)
– MPEG-4 (Motion Picture Experts Group)
– Flash Lite
– RTSP (Real Time Streaming Protocol)
Let’s pick up a video format
• 3GPP or MP4?
– Both MP4 and 3GP are lossy formats which sacrifices
quality for file size.
– MP4 was created by Apple as a container for QuickTime
while 3GP is for mobiles with less resources(light weight and
videos lower in quality).
– MP4 is the industry standard with better quality and has
more widespread support than 3GP
– MP4 stores everything at higher bit rate than that of 3gp
I choose MP4, why?
3RD
MINUTE
Technique selection
LAMP, why not?
• L (Linux)
– Security, uptimes, stability, total free , Worldwide
community …
• A (Apache)
– The most popular HTTP server , 63.7% of all active websites
in the world(12/2012 ).
• M (MySQL)
– Scalability, Flexibility, High Performance, Strong Data
Protection, free …
• P (Php)
– Easy to Learn, variety support …
4TH
MINUTE
H264 MODULE INTRODUCTION
H264 Streaming Module
• is a plugin for your existing Apache/Lighttpd/Nginx
webserver
• Main features:
– Time shifting seek
– Virtual video clips
– Network efficiency
– Encoding
H264 Streaming Module
• Time shifting seek
– Enable your viewers to immediately jump to any part of
the video regardless of the length of the video or whether
it has all been downloaded yet.
– http://www.example.com/video.mp4?start=8
H264 Streaming Module
• Virtual video clips
– So, let's replace the preview URL '​
http://www.example.com/video.mp4?start=15&end=45'
by 'http://www.example.com/video.mp4/preview' and​
move the URL rewriting to the server side configuration..
– Open .htaccess file:
RewriteEngine On
# From: http://www.example.com/video.mp4/preview?start=xyz&foo=bar
# To:http://www.example.com/video.mp4?start=xyz&foo=bar&vbegin=15&vend=45
RewriteRule ^(.*)/preview?(start=.*)$ $1?$2&vbegin=15&vend=45 [L]
H264 Streaming Module
• Network efficiency
– Tested on system:
• Nginx 0.7.64
• mod_h264_streaming 2.2.7
• Centos 5.3
• Quadcore Xeon X3220 @ 2.40GHz
• 8G RAM
• 2x 300G 15k SAS hardware Raid0
– => At 280 connections and pushing 180Mbit it takes on
average 17% CPU on just one of the four cores.
H264 Streaming Module
• Encoding: MPEG4/H264 industry standard
– There is no need to re-encode your MP4 videos, you can
use your existing video files
– Using some tool to convert such as:
• Ffmpeg
• Mencoder & mp4creator
• …
5TH
MINUTE
INSTALLATION
System Prerequisite
• Linux: Centos 5.x or above
• Apache: Version 2x
– Module: rewrite_url
• MySQL: Version 5.x
• Php: version > 5.0
Install module H264
• Download the source of the H264 Streaming Module for
Apache:
• Build
cd ~
wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz
cd ~/mod_h264_streaming-2.2.7
./configure
make
sudo make install
Install module H264
• Configuration:
• Add the lines
• Restart Apache
sudo vi /etc/httpd/conf/httpd.conf
LoadModule h264_streaming_module /usr/lib/httpd/modules/mod_h264_streaming.so
AddHandler h264-streaming.extensions .mp4
sudo /etc/init.d/httpd restart
Install module H264
• Some error may occurs:
– Missing gcc-c++, gcc …
– Missing httpd devel lib
yum groupinstall “Development tools”
yum install httpd-devel
6TH
MINUTE
CONFIGURATION
CONFIGURATION
• Configuration:
• Add the lines
• Restart Apache
sudo vi /etc/httpd/conf/httpd.conf
LoadModule h264_streaming_module /usr/lib/httpd/modules/mod_h264_streaming.so
AddHandler h264-streaming.extensions .mp4
sudo /etc/init.d/httpd restart
CONFIGURATION
• Check if module is loaded or not:
– The output will be something like
apachectl -t -D DUMP_MODULES
Loaded Modules:
dir_module (static)
actions_module (static)
userdir_module (static)
rewrite_module (static)
h264_streaming_module (shared)
…..
7TH
MINUTE
TESTING
Test new module
• Using mobile browser to check seek function:
– http://www.example.com/video.mp4?start=8
Test new module
• Using flash player: jwplayer:
jwplayer('myElement').seek(8);
<div id="myElement">Loading the player ...</div>
<script type="text/javascript">
jwplayer("myElement").setup({
file: "http://www.example.com/video.mp4",
height: 360,
image: "/uploads/example.jpg",
width: 640
});
</script>
8TH
MINUTE
VIDEOS MANAGEMENT
VIDEOS MANAGEMENT
• FTP:
– Client tool:
• FileZilla
• SmartFTP
• …
– FTP Server:
• Use default SFTP
• Pure-FTP
• VSFTP
• ….
VIDEOS MANAGEMENT
• PHP Uploader:
– Ajaxuploader:
• http://www.albanx.com/ajaxuploader/
– Uploadify:
• http://www.uploadify.com/download/
– jQuery-File-Upload:
• https://github.com/blueimp/jQuery-File-Upload/wiki
– ….
9TH
MINUTE
VIDEO ENCODING
Encode video in MP4/H264
• Ffmpeg/x264
• Mencoder & mp4creator
• Telestream Episode Engine Pro 5 (Paid product)
• Encoding H264 on Tiger (Mac OS)
Encode video in MP4/H264
• Ffmpeg/x264
– Create bash file: vim convert.sh
infile = $1
tmpfile= $2
outfile= $3
options="-vcodec libx264 -b 512k -flags +loop+mv4 -cmp 256 
-partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 
-me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 
-flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 
-g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10
-qmax 51 -qdiff 4"
ffmpeg -y -i "$infile" -an -pass 1 -threads 2 $options "$tmpfile"
ffmpeg -y -i "$infile" -acodec libfaac -ar 44100 -ab 96k -pass 2 -threads 2 $options
"$tmpfile"
qt-faststart "$tmpfile" "$outfile"
Encode video in MP4/H264
• Ffmpeg/x264
– Chmod:
– Execute:
– For more detail, please refer below link for detail:
• http://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide
chmod +x convert.sh
./convert.sh "video_in.avi“ "video_tmp.mp4“ “video_out.mp4"
10TH
MINUTE
TEST NEW ENCODED VIDEO
TEST NEW ENCODED VIDEO
• Copy new encoded video to your web document
directory
• Test seek function:
cp newvideo.mp4 path_to_web_document_dir
http://www.example.com/newvideo.mp4?start=8
11 ST
MINUTE
PRIVATE/PAID VIDEOS
PRIVATE/PAID VIDEOS, HOW?
• Take a look at Video URL:
– http://www.example.com/private/video.mp4
• How can we hide it? => impossible
• How can we handle by using PHP? => impossible
• Bla bla ??? …
⇒We have to authenticate user first, but how?
⇒The answer is: Authenticate by using Apache
Authentication 
PRIVATE/PAID VIDEOS, HOW?
• There are three types of modules involved in the
authentication and authorization process:
– Authentication type
• mod_auth_basic
• mod_auth_digest 
– Authentication provider
• mod_authn_anon
• mod_authnz_ldap
• …
– Authorization
• mod_authnz_ldap
• …
12 ND
MINUTE
USERS AUTHENTICATION
USERS AUTHENTICATION
• Let’s choose the most basic Authentication type:
• Create new user “test” and store in file: /usr/local/htaccess_auth
– Enter password require for this user.
• Create .htaccess file
htpasswd -c /usr/local/htaccess_auth test
vim private/ .htaccess
AuthType Basic
AuthName "Restricted Files“
AuthBasicProvider file
AuthUserFile /usr/local/htaccess_auth
Require user test
13 RD
MINUTE
TESTING
AUTHENTICATION TESTING
• Test with safari in iPhone:
• Enter video URL
• Example :
– http://www.example.com/private/video.mp4
AUTHENTICATION TESTING
• Let’s check with Test with some others browser/OS
14 TH
MINUTE
MANAGE USERS
MANAGE USERS WITH PHP&MYSQL
• Suppose we have table :
• Users (userid, username, password)
MANAGE USERS WITH PHP&MYSQL
• On user insert event (e.g: on register )
• Get user info
• Generates a htpasswd compatible crypted password string
• then put to htaccess_auth
$user = new User($username, $pwd);
public function User($username, $pwd){
$this->username = $username;
$this->htpasswd = $this->rand_salt_crypt($pwd);
}
$user->put_htpasswd(‘/usr/local/htaccess_auth ‘);
MANAGE USERS WITH PHP&MYSQL
• Function rand_salt_crypt()
• For more detail about Htpasswd Formats, please refer to
http://www.askapache.com/online-tools/htpasswd-
generator/
MANAGE USERS WITH PHP&MYSQL
• Function put_htpasswd()
MANAGE USERS WITH PHP&MYSQL
• Update .htaccess file
15 TH
MINUTE
TIME FOR TEA & REVIEWING
System Summary
Admin
Upload/convert videos
Authentication certificate Movies
PHP
MySQL Server
Apache steaming server
THANK YOU
Nguy n Kim Tuy nễ ế
CTO – MC CORP
M: +84912610253|| E: tuyennk@mc-corp.vn
W: http://mc-corp.vn
Skype: nktuyen

Más contenido relacionado

La actualidad más candente

How To Set a Vagrant Development System
How To Set a Vagrant Development SystemHow To Set a Vagrant Development System
How To Set a Vagrant Development SystemPaul Bearne
 
Taking HTML5 video a step further
Taking HTML5 video a step furtherTaking HTML5 video a step further
Taking HTML5 video a step furtherSilvia Pfeiffer
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized DevelopmentAdam Culp
 
A crash course in scaling wordpress
A crash course inscaling wordpress A crash course inscaling wordpress
A crash course in scaling wordpress GovLoop
 
JavaFX vs AJAX vs Flex
JavaFX vs AJAX vs FlexJavaFX vs AJAX vs Flex
JavaFX vs AJAX vs FlexCraig Dickson
 
PageSpeed and SPDY
PageSpeed and SPDYPageSpeed and SPDY
PageSpeed and SPDYBlake Crosby
 
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...Daniel Fisher
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Gavin Pickin
 
Html5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile ApplicationsHtml5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile ApplicationsYoss Cohen
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video TutorialSilvia Pfeiffer
 
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...Andrea Cardinali
 
JavaScript development methodology
JavaScript development methodologyJavaScript development methodology
JavaScript development methodologyAleksander Fabijan
 
Performance Metrics in a Day with Selenium
Performance Metrics in a Day with SeleniumPerformance Metrics in a Day with Selenium
Performance Metrics in a Day with SeleniumMark Watson
 
HTML5 Multimedia Accessibility
HTML5 Multimedia AccessibilityHTML5 Multimedia Accessibility
HTML5 Multimedia Accessibilitybrucelawson
 
Creating a full stack web app with python, npm, webpack and react
Creating a full stack web app with python, npm, webpack and reactCreating a full stack web app with python, npm, webpack and react
Creating a full stack web app with python, npm, webpack and reactAngela Kristine Juvet Branaes
 
Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Tammy Everts
 
Nodejs getting started
Nodejs getting startedNodejs getting started
Nodejs getting startedTriet Ho
 
State of Media Accessibility in HTML5
State of Media Accessibility in HTML5State of Media Accessibility in HTML5
State of Media Accessibility in HTML5Silvia Pfeiffer
 
WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016Terell Moore
 
Advanced Caching Concepts @ Velocity NY 2015
Advanced Caching Concepts @ Velocity NY 2015Advanced Caching Concepts @ Velocity NY 2015
Advanced Caching Concepts @ Velocity NY 2015Rakesh Chaudhary
 

La actualidad más candente (20)

How To Set a Vagrant Development System
How To Set a Vagrant Development SystemHow To Set a Vagrant Development System
How To Set a Vagrant Development System
 
Taking HTML5 video a step further
Taking HTML5 video a step furtherTaking HTML5 video a step further
Taking HTML5 video a step further
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized Development
 
A crash course in scaling wordpress
A crash course inscaling wordpress A crash course inscaling wordpress
A crash course in scaling wordpress
 
JavaFX vs AJAX vs Flex
JavaFX vs AJAX vs FlexJavaFX vs AJAX vs Flex
JavaFX vs AJAX vs Flex
 
PageSpeed and SPDY
PageSpeed and SPDYPageSpeed and SPDY
PageSpeed and SPDY
 
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
2015 TechSummit Web & Cloud - Gem, NPM, Bower, Nuget, Paket - Päckchen hier, ...
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
 
Html5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile ApplicationsHtml5, Native and Platform based Mobile Applications
Html5, Native and Platform based Mobile Applications
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video Tutorial
 
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
 
JavaScript development methodology
JavaScript development methodologyJavaScript development methodology
JavaScript development methodology
 
Performance Metrics in a Day with Selenium
Performance Metrics in a Day with SeleniumPerformance Metrics in a Day with Selenium
Performance Metrics in a Day with Selenium
 
HTML5 Multimedia Accessibility
HTML5 Multimedia AccessibilityHTML5 Multimedia Accessibility
HTML5 Multimedia Accessibility
 
Creating a full stack web app with python, npm, webpack and react
Creating a full stack web app with python, npm, webpack and reactCreating a full stack web app with python, npm, webpack and react
Creating a full stack web app with python, npm, webpack and react
 
Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)
 
Nodejs getting started
Nodejs getting startedNodejs getting started
Nodejs getting started
 
State of Media Accessibility in HTML5
State of Media Accessibility in HTML5State of Media Accessibility in HTML5
State of Media Accessibility in HTML5
 
WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016
 
Advanced Caching Concepts @ Velocity NY 2015
Advanced Caching Concepts @ Velocity NY 2015Advanced Caching Concepts @ Velocity NY 2015
Advanced Caching Concepts @ Velocity NY 2015
 

Similar a [Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes

Altitude San Francisco 2018: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop DocsAltitude San Francisco 2018: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop DocsFastly
 
Modern Development Tools
Modern Development ToolsModern Development Tools
Modern Development ToolsYe Maw
 
Sa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administratorsSa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administratorsSharon James
 
FIWARE Cloud Exercises (Developer's week)
FIWARE Cloud Exercises (Developer's week)FIWARE Cloud Exercises (Developer's week)
FIWARE Cloud Exercises (Developer's week)Fernando Lopez Aguilar
 
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...Sharon James
 
Django rest framework
Django rest frameworkDjango rest framework
Django rest frameworkBlank Chen
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsAlessandro Pilotti
 
Automating Post Exploitation with PowerShell
Automating Post Exploitation with PowerShellAutomating Post Exploitation with PowerShell
Automating Post Exploitation with PowerShellEnclaveSecurity
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentationIan Renyard
 
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...Ondřej Machulda
 
StoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep DiveStoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep Divestorycode
 
Ahmadabad mule soft_meetup_6march2021_azure_CICD
Ahmadabad mule soft_meetup_6march2021_azure_CICDAhmadabad mule soft_meetup_6march2021_azure_CICD
Ahmadabad mule soft_meetup_6march2021_azure_CICDShekh Muenuddeen
 
Splunk: Forward me the REST of those shells
Splunk: Forward me the REST of those shellsSplunk: Forward me the REST of those shells
Splunk: Forward me the REST of those shellsAnthony D Hendricks
 
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
The 5 most common reasons for a slow WordPress site and how to fix them – ext...The 5 most common reasons for a slow WordPress site and how to fix them – ext...
The 5 most common reasons for a slow WordPress site and how to fix them – ext...Otto Kekäläinen
 
Crikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor WorkshopCrikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor WorkshopVelocidex Enterprises
 
ELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot TimesELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot Timesandrewmurraympc
 
Deploy django apps using docker
Deploy django apps using dockerDeploy django apps using docker
Deploy django apps using dockerThomas Kremmel
 
Introduction to PaaS and Heroku
Introduction to PaaS and HerokuIntroduction to PaaS and Heroku
Introduction to PaaS and HerokuTapio Rautonen
 

Similar a [Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes (20)

Altitude San Francisco 2018: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop DocsAltitude San Francisco 2018: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop Docs
 
HTML5 Multimedia Streaming
HTML5 Multimedia StreamingHTML5 Multimedia Streaming
HTML5 Multimedia Streaming
 
Modern Development Tools
Modern Development ToolsModern Development Tools
Modern Development Tools
 
Sa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administratorsSa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administrators
 
FIWARE Cloud Exercises (Developer's week)
FIWARE Cloud Exercises (Developer's week)FIWARE Cloud Exercises (Developer's week)
FIWARE Cloud Exercises (Developer's week)
 
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
Bp307 Practical Solutions for Connections Administrators, tips and scrips for...
 
Django rest framework
Django rest frameworkDjango rest framework
Django rest framework
 
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and WindowsOpenStack Summit 2013 Hong Kong - OpenStack and Windows
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
 
Automating Post Exploitation with PowerShell
Automating Post Exploitation with PowerShellAutomating Post Exploitation with PowerShell
Automating Post Exploitation with PowerShell
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentation
 
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
 
StoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep DiveStoryCode Immersion #5 - Popcorn.JS Deep Dive
StoryCode Immersion #5 - Popcorn.JS Deep Dive
 
Ahmadabad mule soft_meetup_6march2021_azure_CICD
Ahmadabad mule soft_meetup_6march2021_azure_CICDAhmadabad mule soft_meetup_6march2021_azure_CICD
Ahmadabad mule soft_meetup_6march2021_azure_CICD
 
Splunk: Forward me the REST of those shells
Splunk: Forward me the REST of those shellsSplunk: Forward me the REST of those shells
Splunk: Forward me the REST of those shells
 
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
The 5 most common reasons for a slow WordPress site and how to fix them – ext...The 5 most common reasons for a slow WordPress site and how to fix them – ext...
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
 
Crikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor WorkshopCrikeycon 2019 Velociraptor Workshop
Crikeycon 2019 Velociraptor Workshop
 
Optimizing Your CI Pipelines
Optimizing Your CI PipelinesOptimizing Your CI Pipelines
Optimizing Your CI Pipelines
 
ELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot TimesELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot Times
 
Deploy django apps using docker
Deploy django apps using dockerDeploy django apps using docker
Deploy django apps using docker
 
Introduction to PaaS and Heroku
Introduction to PaaS and HerokuIntroduction to PaaS and Heroku
Introduction to PaaS and Heroku
 

Más de AiTi Education

AiTi Education Profile
AiTi Education ProfileAiTi Education Profile
AiTi Education ProfileAiTi Education
 
AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03AiTi Education
 
AiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 bAiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 bAiTi Education
 
AiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 aAiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 aAiTi Education
 
AiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 bAiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 bAiTi Education
 
AiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 aAiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 aAiTi Education
 
Vietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_dayVietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_dayAiTi Education
 
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...AiTi Education
 
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...AiTi Education
 
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...AiTi Education
 
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...AiTi Education
 
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...AiTi Education
 
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...AiTi Education
 
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...AiTi Education
 
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...AiTi Education
 
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...AiTi Education
 
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...AiTi Education
 
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...AiTi Education
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....AiTi Education
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....AiTi Education
 

Más de AiTi Education (20)

AiTi Education Profile
AiTi Education ProfileAiTi Education Profile
AiTi Education Profile
 
AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03AiTi Education Software Testing Session 03
AiTi Education Software Testing Session 03
 
AiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 bAiTi Education Software Testing Session 02 b
AiTi Education Software Testing Session 02 b
 
AiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 aAiTi Education Software Testing Session 02 a
AiTi Education Software Testing Session 02 a
 
AiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 bAiTi Education Software Testing Session 01 b
AiTi Education Software Testing Session 01 b
 
AiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 aAiTi Education Software Testing Session 01 a
AiTi Education Software Testing Session 01 a
 
Vietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_dayVietnam mobile internet_2014_mwork_vietnam_mobile_day
Vietnam mobile internet_2014_mwork_vietnam_mobile_day
 
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
[Vietnam Mobile Day 2014] Tăng doanh thu quảng cáo cho mobile site và ứng dụn...
 
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
[Vietnam Mobile Day 2014] Mobile money - Xu hướng thanh toán nhỏ trên mobile ...
 
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
[Vietnam Mobile Day 2014] Mobile kết nối thế giới số và thế giới thực và vai ...
 
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
[Vietnam Mobile Day 2014] The new mobile marketing channel: Social Wifi Marke...
 
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
[Vietnam Mobile Day 2014] Cá nhân hóa và xác định Khách hàng mục tiêu trong q...
 
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
[Vietnam Mobile Day 2014] Chiến lược thu hút người dùng cho ứng dụng tại thị ...
 
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
[Vietnam Mobile Day 2014] Thanh toán mobile, hiện tại và xu hướng- Nguyễn Chi...
 
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
[Vietnam Mobile Day 2014] Thanh toán bằng thẻ ngân hàng trên mobile chưa bao ...
 
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - 	 Ng...
[Vietnam Mobile Day 2014] How to build a mobile store app in 5 minutes - Ng...
 
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
[Vietnam Mobile Day 2014] Touch the future of the web - Nguyễn Việt Anh - Cou...
 
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014  - Nguyễn Thàn...
[Vietnam Mobile Day 2014] Xu hướng trong Mobile Learning, 2014 - Nguyễn Thàn...
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
 
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
[Vietnam Mobile Day 2014] Toàn cảnh thị trường game smartphone Việt Nam 2013....
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 

Último (20)

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 

[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes

  • 1. Nguy n Kim Tuy nễ ế CTO – MC CORP M: +84912610253|| E: tuyennk@mc-corp.vn W: http://mc-corp.vn Skype: nktuyen HOW TO BUILD VIDEO STREAMING SERVER IN 15 MINS
  • 3. Audience & Goal • Audience object: – Student – Mobile developer – Network administrator – Newbie – …. => For everyone who care about Video Streaming Server
  • 4. GOAL • Provide a free solution. • Quick & easy – even for newbie • Security & efficiency => You can build your-own video streaming server for your business without pay money.
  • 6. Mobile Video formats • Mobile TV and mobile video come in only a few formats, and all are compressed: – 3GPP (3rd Generation Partnership Project) – MPEG-4 (Motion Picture Experts Group) – Flash Lite – RTSP (Real Time Streaming Protocol)
  • 7. Let’s pick up a video format • 3GPP or MP4? – Both MP4 and 3GP are lossy formats which sacrifices quality for file size. – MP4 was created by Apple as a container for QuickTime while 3GP is for mobiles with less resources(light weight and videos lower in quality). – MP4 is the industry standard with better quality and has more widespread support than 3GP – MP4 stores everything at higher bit rate than that of 3gp
  • 10. LAMP, why not? • L (Linux) – Security, uptimes, stability, total free , Worldwide community … • A (Apache) – The most popular HTTP server , 63.7% of all active websites in the world(12/2012 ). • M (MySQL) – Scalability, Flexibility, High Performance, Strong Data Protection, free … • P (Php) – Easy to Learn, variety support …
  • 12. H264 Streaming Module • is a plugin for your existing Apache/Lighttpd/Nginx webserver • Main features: – Time shifting seek – Virtual video clips – Network efficiency – Encoding
  • 13. H264 Streaming Module • Time shifting seek – Enable your viewers to immediately jump to any part of the video regardless of the length of the video or whether it has all been downloaded yet. – http://www.example.com/video.mp4?start=8
  • 14. H264 Streaming Module • Virtual video clips – So, let's replace the preview URL '​ http://www.example.com/video.mp4?start=15&end=45' by 'http://www.example.com/video.mp4/preview' and​ move the URL rewriting to the server side configuration.. – Open .htaccess file: RewriteEngine On # From: http://www.example.com/video.mp4/preview?start=xyz&foo=bar # To:http://www.example.com/video.mp4?start=xyz&foo=bar&vbegin=15&vend=45 RewriteRule ^(.*)/preview?(start=.*)$ $1?$2&vbegin=15&vend=45 [L]
  • 15. H264 Streaming Module • Network efficiency – Tested on system: • Nginx 0.7.64 • mod_h264_streaming 2.2.7 • Centos 5.3 • Quadcore Xeon X3220 @ 2.40GHz • 8G RAM • 2x 300G 15k SAS hardware Raid0 – => At 280 connections and pushing 180Mbit it takes on average 17% CPU on just one of the four cores.
  • 16. H264 Streaming Module • Encoding: MPEG4/H264 industry standard – There is no need to re-encode your MP4 videos, you can use your existing video files – Using some tool to convert such as: • Ffmpeg • Mencoder & mp4creator • …
  • 18. System Prerequisite • Linux: Centos 5.x or above • Apache: Version 2x – Module: rewrite_url • MySQL: Version 5.x • Php: version > 5.0
  • 19. Install module H264 • Download the source of the H264 Streaming Module for Apache: • Build cd ~ wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz cd ~/mod_h264_streaming-2.2.7 ./configure make sudo make install
  • 20. Install module H264 • Configuration: • Add the lines • Restart Apache sudo vi /etc/httpd/conf/httpd.conf LoadModule h264_streaming_module /usr/lib/httpd/modules/mod_h264_streaming.so AddHandler h264-streaming.extensions .mp4 sudo /etc/init.d/httpd restart
  • 21. Install module H264 • Some error may occurs: – Missing gcc-c++, gcc … – Missing httpd devel lib yum groupinstall “Development tools” yum install httpd-devel
  • 23. CONFIGURATION • Configuration: • Add the lines • Restart Apache sudo vi /etc/httpd/conf/httpd.conf LoadModule h264_streaming_module /usr/lib/httpd/modules/mod_h264_streaming.so AddHandler h264-streaming.extensions .mp4 sudo /etc/init.d/httpd restart
  • 24. CONFIGURATION • Check if module is loaded or not: – The output will be something like apachectl -t -D DUMP_MODULES Loaded Modules: dir_module (static) actions_module (static) userdir_module (static) rewrite_module (static) h264_streaming_module (shared) …..
  • 26. Test new module • Using mobile browser to check seek function: – http://www.example.com/video.mp4?start=8
  • 27. Test new module • Using flash player: jwplayer: jwplayer('myElement').seek(8); <div id="myElement">Loading the player ...</div> <script type="text/javascript"> jwplayer("myElement").setup({ file: "http://www.example.com/video.mp4", height: 360, image: "/uploads/example.jpg", width: 640 }); </script>
  • 29. VIDEOS MANAGEMENT • FTP: – Client tool: • FileZilla • SmartFTP • … – FTP Server: • Use default SFTP • Pure-FTP • VSFTP • ….
  • 30. VIDEOS MANAGEMENT • PHP Uploader: – Ajaxuploader: • http://www.albanx.com/ajaxuploader/ – Uploadify: • http://www.uploadify.com/download/ – jQuery-File-Upload: • https://github.com/blueimp/jQuery-File-Upload/wiki – ….
  • 32. Encode video in MP4/H264 • Ffmpeg/x264 • Mencoder & mp4creator • Telestream Episode Engine Pro 5 (Paid product) • Encoding H264 on Tiger (Mac OS)
  • 33. Encode video in MP4/H264 • Ffmpeg/x264 – Create bash file: vim convert.sh infile = $1 tmpfile= $2 outfile= $3 options="-vcodec libx264 -b 512k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4" ffmpeg -y -i "$infile" -an -pass 1 -threads 2 $options "$tmpfile" ffmpeg -y -i "$infile" -acodec libfaac -ar 44100 -ab 96k -pass 2 -threads 2 $options "$tmpfile" qt-faststart "$tmpfile" "$outfile"
  • 34. Encode video in MP4/H264 • Ffmpeg/x264 – Chmod: – Execute: – For more detail, please refer below link for detail: • http://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide chmod +x convert.sh ./convert.sh "video_in.avi“ "video_tmp.mp4“ “video_out.mp4"
  • 36. TEST NEW ENCODED VIDEO • Copy new encoded video to your web document directory • Test seek function: cp newvideo.mp4 path_to_web_document_dir http://www.example.com/newvideo.mp4?start=8
  • 38. PRIVATE/PAID VIDEOS, HOW? • Take a look at Video URL: – http://www.example.com/private/video.mp4 • How can we hide it? => impossible • How can we handle by using PHP? => impossible • Bla bla ??? … ⇒We have to authenticate user first, but how? ⇒The answer is: Authenticate by using Apache Authentication 
  • 39. PRIVATE/PAID VIDEOS, HOW? • There are three types of modules involved in the authentication and authorization process: – Authentication type • mod_auth_basic • mod_auth_digest  – Authentication provider • mod_authn_anon • mod_authnz_ldap • … – Authorization • mod_authnz_ldap • …
  • 41. USERS AUTHENTICATION • Let’s choose the most basic Authentication type: • Create new user “test” and store in file: /usr/local/htaccess_auth – Enter password require for this user. • Create .htaccess file htpasswd -c /usr/local/htaccess_auth test vim private/ .htaccess AuthType Basic AuthName "Restricted Files“ AuthBasicProvider file AuthUserFile /usr/local/htaccess_auth Require user test
  • 43. AUTHENTICATION TESTING • Test with safari in iPhone: • Enter video URL • Example : – http://www.example.com/private/video.mp4
  • 44. AUTHENTICATION TESTING • Let’s check with Test with some others browser/OS
  • 46. MANAGE USERS WITH PHP&MYSQL • Suppose we have table : • Users (userid, username, password)
  • 47. MANAGE USERS WITH PHP&MYSQL • On user insert event (e.g: on register ) • Get user info • Generates a htpasswd compatible crypted password string • then put to htaccess_auth $user = new User($username, $pwd); public function User($username, $pwd){ $this->username = $username; $this->htpasswd = $this->rand_salt_crypt($pwd); } $user->put_htpasswd(‘/usr/local/htaccess_auth ‘);
  • 48. MANAGE USERS WITH PHP&MYSQL • Function rand_salt_crypt() • For more detail about Htpasswd Formats, please refer to http://www.askapache.com/online-tools/htpasswd- generator/
  • 49. MANAGE USERS WITH PHP&MYSQL • Function put_htpasswd()
  • 50. MANAGE USERS WITH PHP&MYSQL • Update .htaccess file
  • 51. 15 TH MINUTE TIME FOR TEA & REVIEWING
  • 52. System Summary Admin Upload/convert videos Authentication certificate Movies PHP MySQL Server Apache steaming server
  • 53. THANK YOU Nguy n Kim Tuy nễ ế CTO – MC CORP M: +84912610253|| E: tuyennk@mc-corp.vn W: http://mc-corp.vn Skype: nktuyen