SlideShare a Scribd company logo
Master Degree Course in
Cinema and Media Engineering
SUPERVISOR
Giovanni Malnati
INTERNSHIP SUPERVISORS
Raphaël Troncy
José Luis Redondo Garcìa
CANDIDATE
Pasquale Lisena
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
PART I What is a «Media Fragment»?
PART II State of the art
PART III Implementation
2
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
PART I What is a «Media Fragment»?
PART II State of the art
PART III Implementation
3
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
4
• Share
• Bookmark
• Save band
• Annotate
• Save time
• Search
• …and more
ADVANTAGES
PARTI
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
5
TEMPORAL DIMENSION (T)
SPATIAL DIMENSION (XYWH)
MEDIA FRAGMENTS
URI 1.0
RECOMENDATION
PARTI
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
6
MEDIA FRAGMENTS
URI 1.0
RECOMENDATION
TRACK DIMENSION
NAMED DIMENSION (ID)
PARTI
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
Query format
7
Hash format
http://www.example.com/example.ogv#t=10,20
http://www.example.com/example.ogv?t=10,20
Server generates the fragment
resource
HTTP Range request (time)
User Agent is in charge of display it
correctly
PARTI
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
PART I What is a «Media Fragment»?
PART II State of the art
PART III Implementation
8
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
9
CLIENTS VIDEO PLATFORMS
TEMPORAL
NPT (hh:mm:ss)
SMPTE - Clock
SPATIAL
Only start
Not standard syntax
PARTII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
10
CLIENT
IMPLEMENTATIONS
• Synote Media Fragment Player
• NinSuna Media Fragment Player
SERVER
IMPLEMENTATIONS
• NinSuna Media Fragment Server
• Rafael
POLYFILL PARSER
LIBRARY
• MediaFragment.js
PARTII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
11
CLIENT IMPLEMENTATIONS
SYNOTE MEDIA FRAGMENT PLAYER
• Cross-browser (Flash fallback)
• HTML5, YouTube, Daylimotion,
Vimeo support
• HTML5-like interface
https://github.com/pasqLisena/Media-Fragment-Player
• JavaScript plugin
• Spatial and temporal support
• No Time range requests
• Highlight of fragment in timeline
• Dark mask for spatial fragment
OUR
CONTRIBUTION
PARTII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
12
SERVER IMPLEMENTATIONS
NINSUNA MEDIA FRAGMENT
SERVER RAFAEL
• Pre-processing
• Annotation-based
• Support for Time range
request
• Extraction on the fly
• Fragment stored on file
system
• Support only for query
fragments
http://ninsuna.elis.ugent.be/MediaFragmentsServer https://github.com/Noterik/Rafael
PARTII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
13
MEDIAFRAGMENT.JS
http://www.example.com/video.ogv
?t=1:00:00#t=npt:10,20
&xywh=percent:25,25,50,50
{
"query":{
"t":[
{
"value":"1:00:00",
"unit":"npt",
"start":"1:00:00",
"end":"",
"startNormalized":3600,
"endNormalized":""
}
]
},
"hash":{
"t":[
{
"value":"npt:10,20",
"unit":"npt",
https://github.com/tomayac/Media-Fragments-URI/
OUR
CONTRIBUTION
PARSING
+
UNIT NORMALIZATION
+
ERROR DETECTION
PARTII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
PART I What is a «Media Fragment»?
PART II State of the art
PART III Implementation
14
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
Query Fragment
• Time (npt)
• Track (video/audio)
• Xywh
15
Hash fragment
• Range request
(npt)
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
16
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
17
FRAGMENT QUERY FFMPEG OPTION NOTE
t=10 -ss 10
t=,20 -to 20
t=10,20 -ss 10 -to 20
track=video -an no audio
track=audio -vn no video
xywh=10,10,50,60 -filter:v "crop=50:60:10:10" require transcoding
xywh=percent:10,10,50,60
-filter:v "crop=in_w*50/100:
in_h*60/100:in_w*10/100:
in_h*10/100"
require transcoding
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
18
400px
220px
00:21:43
video.mp4
? t= 00:00:10, 00:00:20
& xywh=0,0,400,220
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
ALIAS
collection
19
t=10,20 and t=11,20 are byte identical
video_10.45-19.41
video_10-20
video_11-20
GridFS
Auto-deletion of older resources.
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
20
mediafragment.js
ffmpegmongoDB
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
21
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
22
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes, t, id
Content-Length: 3795
Content-Type: video/ogg
Content-Range-Mapping:
{ t:npt 9.85-21.16/0.0-653.79;include-setup } =
{ bytes 0-52,19147-22880/35614993 }
Content-type: multipart/byteranges; boundary=BOUNDARY
Etag: "b7a60-21f7111-46f3219476580"
--BOUNDARY
Content-type: video/ogg
Content-Range: bytes 0-52/35614993
{binary data}
--BOUNDARY
Content-type: video/ogg
Content-Range: bytes 19147-22880/35614993
{binary data}
---BOUNDARY--
METADATA
DATA
PARTIII
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
23
localhost:3000/video/video.mp4?t=10,20
localhost:3000/video/video.mp4#t=10,20
Pasquale Lisena
Developing a Media Fragment Server in Node.JS
24
• We contributed to the generic "media-fragment.js" polyfill and
prepare a Node.JS version (open source)
• We contributed to the Synote Media Player to build a more
generic media fragment player (open source)
• We discovered bugs in the W3C specification and proposed
amendments (revised text) to be endorsed by W3C
• We implemented a media fragment server in Node.JS (using
ffmeg) + a smart cache (based on MongoDB)
• Future work: finalize the Chrome extension so that the
browser understand the response from the server, extend
support to all media and test MaFFiN on a more large scale
environment.
Developing a Media Fragment Node.JS Server

More Related Content

Similar to Developing a Media Fragment Node.JS Server

The future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleThe future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's role
Luis Lopez
 
Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...
Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...
Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...
Alpen-Adria-Universität
 
Kurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTCKurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTC
Luis Lopez
 
[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js
[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js
[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js
Iñaki Baz Castillo
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
Lorenzo Miniero
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
Liz Warner
 
voip2day 2016: mediasoup, powerful WebRTC SFU for Node.js
voip2day 2016: mediasoup, powerful WebRTC SFU for Node.jsvoip2day 2016: mediasoup, powerful WebRTC SFU for Node.js
voip2day 2016: mediasoup, powerful WebRTC SFU for Node.js
Iñaki Baz Castillo
 
Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE Bootcamp
Ivan Gracia
 
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Luis Lopez
 
WebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperabilityWebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperability
Amir Zmora
 
Iñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media server
Iñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media serverIñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media server
Iñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media server
VOIP2DAY
 
DevOps Training - Ho Chi Minh City
DevOps Training - Ho Chi Minh CityDevOps Training - Ho Chi Minh City
DevOps Training - Ho Chi Minh City
Christian Trabold
 
Microservices Antipatterns
Microservices AntipatternsMicroservices Antipatterns
Microservices Antipatterns
C4Media
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
Lorenzo Miniero
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with Kurento
Luis Lopez
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
Amir Zmora
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
Lorenzo Miniero
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.
Luis Lopez
 
WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)
Chad Hart
 
Creativu Cebit Crs4
Creativu Cebit Crs4Creativu Cebit Crs4
Creativu Cebit Crs4
mauromereu
 

Similar to Developing a Media Fragment Node.JS Server (20)

The future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's roleThe future of multimedia communications and services: Kurento and it's role
The future of multimedia communications and services: Kurento and it's role
 
Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...
Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...
Quality of Experience of Web-based Adaptive HTTP Streaming Clients in Real-Wo...
 
Kurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTCKurento: a media server architecture and API for WebRTC
Kurento: a media server architecture and API for WebRTC
 
[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js
[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js
[ElastixWorld 2016] mediasoup: Powerful WebRTC SFU for Node.js
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 
voip2day 2016: mediasoup, powerful WebRTC SFU for Node.js
voip2day 2016: mediasoup, powerful WebRTC SFU for Node.jsvoip2day 2016: mediasoup, powerful WebRTC SFU for Node.js
voip2day 2016: mediasoup, powerful WebRTC SFU for Node.js
 
Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE Bootcamp
 
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
Developing rich multimedia applications with Kurento: a tutorial for JavaScri...
 
WebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperabilityWebRTC Standards & Implementation Q&A - All about browser interoperability
WebRTC Standards & Implementation Q&A - All about browser interoperability
 
Iñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media server
Iñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media serverIñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media server
Iñaki Baz - VoIP2DAY 2016 | mediasoup: The programmable media server
 
DevOps Training - Ho Chi Minh City
DevOps Training - Ho Chi Minh CityDevOps Training - Ho Chi Minh City
DevOps Training - Ho Chi Minh City
 
Microservices Antipatterns
Microservices AntipatternsMicroservices Antipatterns
Microservices Antipatterns
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
Developing applications with Kurento
Developing applications with KurentoDeveloping applications with Kurento
Developing applications with Kurento
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.
 
WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)WebRTC Check-in (from WebRTC Boston 6)
WebRTC Check-in (from WebRTC Boston 6)
 
Creativu Cebit Crs4
Creativu Cebit Crs4Creativu Cebit Crs4
Creativu Cebit Crs4
 

Recently uploaded

Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
SEO Article Boost
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
Trending Blogers
 
Design Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptxDesign Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptx
saathvikreddy2003
 
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
bseovas
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
Danica Gill
 
Azure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdfAzure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdf
AanSulistiyo
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
cuobya
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
hackersuli
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
wolfsoftcompanyco
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
uehowe
 
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
bseovas
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
uehowe
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
zyfovom
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 

Recently uploaded (20)

Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
 
Design Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptxDesign Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptx
 
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
 
Azure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdfAzure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdf
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
 
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 

Developing a Media Fragment Node.JS Server

  • 1. Master Degree Course in Cinema and Media Engineering SUPERVISOR Giovanni Malnati INTERNSHIP SUPERVISORS Raphaël Troncy José Luis Redondo Garcìa CANDIDATE Pasquale Lisena
  • 2. Pasquale Lisena Developing a Media Fragment Server in Node.JS PART I What is a «Media Fragment»? PART II State of the art PART III Implementation 2
  • 3. Pasquale Lisena Developing a Media Fragment Server in Node.JS PART I What is a «Media Fragment»? PART II State of the art PART III Implementation 3
  • 4. Pasquale Lisena Developing a Media Fragment Server in Node.JS 4 • Share • Bookmark • Save band • Annotate • Save time • Search • …and more ADVANTAGES PARTI
  • 5. Pasquale Lisena Developing a Media Fragment Server in Node.JS 5 TEMPORAL DIMENSION (T) SPATIAL DIMENSION (XYWH) MEDIA FRAGMENTS URI 1.0 RECOMENDATION PARTI
  • 6. Pasquale Lisena Developing a Media Fragment Server in Node.JS 6 MEDIA FRAGMENTS URI 1.0 RECOMENDATION TRACK DIMENSION NAMED DIMENSION (ID) PARTI
  • 7. Pasquale Lisena Developing a Media Fragment Server in Node.JS Query format 7 Hash format http://www.example.com/example.ogv#t=10,20 http://www.example.com/example.ogv?t=10,20 Server generates the fragment resource HTTP Range request (time) User Agent is in charge of display it correctly PARTI
  • 8. Pasquale Lisena Developing a Media Fragment Server in Node.JS PART I What is a «Media Fragment»? PART II State of the art PART III Implementation 8
  • 9. Pasquale Lisena Developing a Media Fragment Server in Node.JS 9 CLIENTS VIDEO PLATFORMS TEMPORAL NPT (hh:mm:ss) SMPTE - Clock SPATIAL Only start Not standard syntax PARTII
  • 10. Pasquale Lisena Developing a Media Fragment Server in Node.JS 10 CLIENT IMPLEMENTATIONS • Synote Media Fragment Player • NinSuna Media Fragment Player SERVER IMPLEMENTATIONS • NinSuna Media Fragment Server • Rafael POLYFILL PARSER LIBRARY • MediaFragment.js PARTII
  • 11. Pasquale Lisena Developing a Media Fragment Server in Node.JS 11 CLIENT IMPLEMENTATIONS SYNOTE MEDIA FRAGMENT PLAYER • Cross-browser (Flash fallback) • HTML5, YouTube, Daylimotion, Vimeo support • HTML5-like interface https://github.com/pasqLisena/Media-Fragment-Player • JavaScript plugin • Spatial and temporal support • No Time range requests • Highlight of fragment in timeline • Dark mask for spatial fragment OUR CONTRIBUTION PARTII
  • 12. Pasquale Lisena Developing a Media Fragment Server in Node.JS 12 SERVER IMPLEMENTATIONS NINSUNA MEDIA FRAGMENT SERVER RAFAEL • Pre-processing • Annotation-based • Support for Time range request • Extraction on the fly • Fragment stored on file system • Support only for query fragments http://ninsuna.elis.ugent.be/MediaFragmentsServer https://github.com/Noterik/Rafael PARTII
  • 13. Pasquale Lisena Developing a Media Fragment Server in Node.JS 13 MEDIAFRAGMENT.JS http://www.example.com/video.ogv ?t=1:00:00#t=npt:10,20 &xywh=percent:25,25,50,50 { "query":{ "t":[ { "value":"1:00:00", "unit":"npt", "start":"1:00:00", "end":"", "startNormalized":3600, "endNormalized":"" } ] }, "hash":{ "t":[ { "value":"npt:10,20", "unit":"npt", https://github.com/tomayac/Media-Fragments-URI/ OUR CONTRIBUTION PARSING + UNIT NORMALIZATION + ERROR DETECTION PARTII
  • 14. Pasquale Lisena Developing a Media Fragment Server in Node.JS PART I What is a «Media Fragment»? PART II State of the art PART III Implementation 14
  • 15. Pasquale Lisena Developing a Media Fragment Server in Node.JS Query Fragment • Time (npt) • Track (video/audio) • Xywh 15 Hash fragment • Range request (npt) PARTIII
  • 16. Pasquale Lisena Developing a Media Fragment Server in Node.JS 16 PARTIII
  • 17. Pasquale Lisena Developing a Media Fragment Server in Node.JS 17 FRAGMENT QUERY FFMPEG OPTION NOTE t=10 -ss 10 t=,20 -to 20 t=10,20 -ss 10 -to 20 track=video -an no audio track=audio -vn no video xywh=10,10,50,60 -filter:v "crop=50:60:10:10" require transcoding xywh=percent:10,10,50,60 -filter:v "crop=in_w*50/100: in_h*60/100:in_w*10/100: in_h*10/100" require transcoding PARTIII
  • 18. Pasquale Lisena Developing a Media Fragment Server in Node.JS 18 400px 220px 00:21:43 video.mp4 ? t= 00:00:10, 00:00:20 & xywh=0,0,400,220 PARTIII
  • 19. Pasquale Lisena Developing a Media Fragment Server in Node.JS ALIAS collection 19 t=10,20 and t=11,20 are byte identical video_10.45-19.41 video_10-20 video_11-20 GridFS Auto-deletion of older resources. PARTIII
  • 20. Pasquale Lisena Developing a Media Fragment Server in Node.JS 20 mediafragment.js ffmpegmongoDB PARTIII
  • 21. Pasquale Lisena Developing a Media Fragment Server in Node.JS 21 PARTIII
  • 22. Pasquale Lisena Developing a Media Fragment Server in Node.JS 22 HTTP/1.1 206 Partial Content Accept-Ranges: bytes, t, id Content-Length: 3795 Content-Type: video/ogg Content-Range-Mapping: { t:npt 9.85-21.16/0.0-653.79;include-setup } = { bytes 0-52,19147-22880/35614993 } Content-type: multipart/byteranges; boundary=BOUNDARY Etag: "b7a60-21f7111-46f3219476580" --BOUNDARY Content-type: video/ogg Content-Range: bytes 0-52/35614993 {binary data} --BOUNDARY Content-type: video/ogg Content-Range: bytes 19147-22880/35614993 {binary data} ---BOUNDARY-- METADATA DATA PARTIII
  • 23. Pasquale Lisena Developing a Media Fragment Server in Node.JS 23 localhost:3000/video/video.mp4?t=10,20 localhost:3000/video/video.mp4#t=10,20
  • 24. Pasquale Lisena Developing a Media Fragment Server in Node.JS 24 • We contributed to the generic "media-fragment.js" polyfill and prepare a Node.JS version (open source) • We contributed to the Synote Media Player to build a more generic media fragment player (open source) • We discovered bugs in the W3C specification and proposed amendments (revised text) to be endorsed by W3C • We implemented a media fragment server in Node.JS (using ffmeg) + a smart cache (based on MongoDB) • Future work: finalize the Chrome extension so that the browser understand the response from the server, extend support to all media and test MaFFiN on a more large scale environment.