efficient video on demand
TRANSCRIPT
-
8/7/2019 efficient video on demand
1/66
1
-
8/7/2019 efficient video on demand
2/66
CHAPTER 1
INTRODUCTION
T oday, fiber-to-the-X (FTTx) technologies such as 1 Gbps Ethernet passiveoptical networks (EPONs) and 2.488 Gbps gigabit Pans (GPONs) are being
increasingly deployed in broadband access networks. Thus, true triple-play service
with emphasis on video is becoming possible. Video-ondemand (VoD) service,
which is in the deployment stage, is a frontrunner in video services.
It is a very promising service as a revenue source, since VoD service has
great potential to capture a significant fraction of the traditional 25 billion annual
video rental market in the near future. To provide VoD service economically by
reducing the costs to the service provider and user, quite a lot of research attention
has been generated on efficient VoD network architectures and mechanisms, e.g.,
content allocation and content delivery.
Video streaming schemes, which include broadcasting, batching, patching,
stream merging, and a hybrid approach, are well-known examples of efficient
video-delivery mechanisms. Unlike unicast streaming, this provides a separate
unicast video stream to each VoD request, these streaming schemes use multicast
streaming and exploit user storage.
Thus, they can save on video delivery cost by reducing the required network bandwidth while providing the same service quality to users. However, most
previous research mainly focused on the improvement of the streaming scheme
itself to save on network bandwidth, without considering other important factors.
2
-
8/7/2019 efficient video on demand
3/66
3
-
8/7/2019 efficient video on demand
4/66
CHAPTER 2
LITERATURE REVIEW
2.1 A Hybrid Architecture for Cost-Effective On-Demand Media Streaming
Author : Mohamed M. Hefeeda, Bharat K. Bhargava, and David K. Y. Yau
We propose a new architecture for on-demand media streaming centered
around the peer-to-peer (P2P) paradigm. The key idea of the architecture is that
peers share some of their resources with the system. As peers contribute resources
to the system, the overall system capacity increases and more clients can be served.
The proposed architecture employs several novel techniques to: (1) use the often-underutilized peers resource, which makes the proposed architecture both
deployable and cost-effective,
(2) Aggregate contributions from multiple peers to serve a requesting peer so that
supplying peers are not overloaded,
(3) Make a good use of peer heterogeneity by assigning relatively more work to the
powerful peers, and
(4) Organize peers in a network-aware fashion, such that nearby peers are grouped
into a logical entity called a cluster. The network-aware peer organization is
validated by statistics collected and analyzed from real Internet data. The main
benefit of the network-aware peer organization
is that it allows to develop efficient searching (to locate nearby suppliers) and
dispersion (to disseminate new files into the system) algorithms.
We present network-aware searching and dispersion algorithms that result
in:
(i) fast dissemination of new media files,
(ii) reduction of the load on the underlying network,
4
-
8/7/2019 efficient video on demand
5/66
(iii) Better streaming service.
We demonstrate the potential of the proposed architecture for a large-scale
on-demand media streaming service through an extensive simulation study onlarge, Internet-like, topologies. Starting with a limited streaming capacity (hence,
low cost), the simulation shows that the capacity rapidly increases and many
clients can be served. This occurs for all studied arrival patterns, including constant
rate arrivals, flash crowd arrivals, and Poisson arrivals.
Furthermore, the simulation shows that a reasonable client-side initial
buffering of 10-20 seconds is sufficient to ensure full quality playback even in the
presence of peer failures.
2.2 Video-on-Demand Networks: Design Approaches and Future Challenges
IP network-based deployments of Interactive Video-on-Demand (VoD)
systems are today very limited in scope, but there is a strong belief among
telecommunication companies that this market will expand exponentially in the
next few years. In this paper, we outline the components of VoD architectures and
survey the current approaches to their design.
We strive to identify the research challenges that must be addressed in the
development of design tools that can determine how to expand upon an existing
network infrastructure in order to support Video-on-Demand.
The long-tail of content and extensive usage growth are expected to have a
major impact on the streaming and storage requirements of such systems. HybridVoD architectures that incorporate peer-to-peer exchange are an extremely
promising paradigm, but there are many challenges in developing operational and
economically-feasible peer-to peer systems.
5
-
8/7/2019 efficient video on demand
6/66
6
-
8/7/2019 efficient video on demand
7/66
CHAPTER 3
SYSTEM ANALYSIS
3.1EXISTING SYSTEM:
The algorithm used in the existing system is Video Playback Speed
Streaming (VPSS).
Unicast streaming is used.
The problem is bandwidth saving, optimal usage in storage network.
3.2 PROPOSED SYSTEM:
To provide more efficient VoD streaming, three important factors should be
considered:
(1) An efficient streaming scheme for bandwidth savings,
(2) Optimal use of deployed network bandwidth
(3) Proactive use of user storage.
Multicast streaming is used in proposed system. We exploit the patching
scheme as an efficient bandwidth-saving streaming scheme and propose several
novel approaches to include items. The prior patching scheme, where all thestreaming speed is playback speed, is called video playback speed streaming
(VPSS). We compare the performance of our proposed schemes.
7
-
8/7/2019 efficient video on demand
8/66
8
-
8/7/2019 efficient video on demand
9/66
CHAPTER 4
REQUIREMENT SPECIFICATION
4.1 Hardware Requirements:
Processor : Intel P3 and above
Processor Speed : 1 GHz
RAM : 512 MB and above
Hard Disk Capacity : 40 GB and above
4.2 Software Requirements:
Front-End : JSP
Back-End : SQL Server
Web Server : TomcatOperating System : Windows XP
9
-
8/7/2019 efficient video on demand
10/66
10
-
8/7/2019 efficient video on demand
11/66
CHAPTER 5
Software Description
5.1 Front End
Java Server Pages (JSP)
Java Server Pages (JSP) technology enables Web developers and designers
to rapidly develop and easily maintain, information-rich, dynamic Web pages that
leverage existing business systems. As part of the Java technology family, JSP
technology enables rapid development of Web-based applications that are platform
independent. JSP technology separates the user interface from content generation,
enabling designers to change the overall page layout without altering the
underlying dynamic content.
Benefits for Developers
If you are a Web page developer or designer who is familiar with HTML,
you can:
Use JSP technology without having to learn the Java language :
You can use JSP technology without learning how to write Java scrip lets.
Although script lets are no longer required to generate dynamic content, they are
still supported to provide backward compatibility.
Extend the JSP language : Java tag library developers and designers
can extend the JSP language with "simple tag handlers," which utilize a new, muchsimpler and cleaner, tag extension API. This spurs the growing number of
pluggable, reusable tag libraries available, which in turn reduces the amount of
code needed to write powerful Web applications.
11
-
8/7/2019 efficient video on demand
12/66
Easily write and maintain pages : The Java Server Pages Standard
Tag Library (JSTL) expression language is now integrated into JSP technology and
has been upgraded to support functions. The expression language can now be used
instead of script let expressions.
5.2 Back End
SQL (Structured Query Language)
This article is the first in an educational series offered by SQL AB aimed
towards providing the reader with valuable insight into the SQL database server.
Although future articles will delve into some of the more complicated topicssurrounding SQL, including replication, ODBC and optimization, it was thought to
be prudent if the first tutorial started, well, at the beginning. Therefore the goal of
this article is to thoroughly acquaint the reader with various topics surrounding the
basic functioning of SQL.
THE SQL SERVER
Microsoft SQL Server is a relational database management system produced
by Microsoft. It supports a superset of Structured Query Language SQL, the most
common database language. It is commonly used by businesses for small to
medium sized databases, but the past five years have seen greater adoption of the
product for larger enterprise databases.
Microsoft SQL Server uses a variant of SQL called T-SQL, or Transact-
SQL , an implementation of SQL-92 (the ISO standard for SQL, certified in 1992)
with some extensions. T-SQL mainly adds additional syntax for use in stored
procedures , and affects the syntax of transaction support. (Note that SQL standards
require Atomic, Consistent, Isolated, Durable or "ACID" transactions.) Microsoft
12
http://en.wikipedia.org/wiki/Transact-SQLhttp://en.wikipedia.org/wiki/Transact-SQLhttp://en.wikipedia.org/wiki/SQL-92http://en.wikipedia.org/wiki/International_Organization_for_Standardizationhttp://en.wikipedia.org/wiki/Standardizationhttp://en.wikipedia.org/wiki/Stored_procedurehttp://en.wikipedia.org/wiki/Stored_procedurehttp://en.wikipedia.org/wiki/Database_transactionhttp://en.wikipedia.org/wiki/ACIDhttp://en.wikipedia.org/wiki/Transact-SQLhttp://en.wikipedia.org/wiki/Transact-SQLhttp://en.wikipedia.org/wiki/SQL-92http://en.wikipedia.org/wiki/International_Organization_for_Standardizationhttp://en.wikipedia.org/wiki/Standardizationhttp://en.wikipedia.org/wiki/Stored_procedurehttp://en.wikipedia.org/wiki/Stored_procedurehttp://en.wikipedia.org/wiki/Database_transactionhttp://en.wikipedia.org/wiki/ACID -
8/7/2019 efficient video on demand
13/66
SQL Server and Sybase/ASE both communicate over networks using an
application-level protocol called Tabular Data Stream (TDS). The TDS protocol
has also been implemented by the Free TDS project in order to allow more kinds of
client applications to communicate with Microsoft SQL Server and Sybasedatabases. Microsoft SQL Server also supports Open Database Connectivity
(ODBC).
13
http://en.wikipedia.org/wiki/Tabular_Data_Streamhttp://en.wikipedia.org/wiki/FreeTDShttp://en.wikipedia.org/wiki/Open_Database_Connectivityhttp://en.wikipedia.org/wiki/Tabular_Data_Streamhttp://en.wikipedia.org/wiki/FreeTDShttp://en.wikipedia.org/wiki/Open_Database_Connectivity -
8/7/2019 efficient video on demand
14/66
14
-
8/7/2019 efficient video on demand
15/66
CHAPTER 6
SYSTEM DESIGN
6.1 System Architecture:
15
Start
Server Client
Upload DeleteAudio Video
Textfile
Audio
Video
Textfile
Audio
Video
Textfile
View
Download
View
Download
View
Download
-
8/7/2019 efficient video on demand
16/66
6.2.Usecase Diagram :
16
-
8/7/2019 efficient video on demand
17/66
6.3.Class Diagram:
17
-
8/7/2019 efficient video on demand
18/66
-
8/7/2019 efficient video on demand
19/66
-
8/7/2019 efficient video on demand
20/66
-
8/7/2019 efficient video on demand
21/66
7.1 PROBLEM STATEMENT:
Previous research on streaming schemes mainly focused on efficiencyenhancement (e.g., server bandwidth savings) of streaming technology. However,
even though a streaming scheme itself may be optimal in the aspect of server
bandwidth savings, it may not be an optimal solution in real VoD service
environments to satisfy other constraints and objectives. For example, we may
think that using the optimum patching window with playback-speed (i.e., lowest-
speed) streaming can minimize the required server bandwidth. However, since the
request rate or traffic is low during most of the day and very high during peak
periods, we ask (1) does the streaming speed need to be uniform (i.e., playback
speed) at all times, and (2) if the service provider designs the network to support
the peak request rate, isnt it better to use the idle bandwidth in less-busy periods
than to use constant-speed streaming? Suppose we use video playback-speed
streaming (VPSS), which is defined as a patching scheme where all the streams,
including multicast streams and patch streams, have the same playback speed. In
the absence of capacity constraints or congestion, VPSS is ideal and can serve
more users than other higher speed streaming, since it uses minimum total
bandwidth for a group of requests. However, VPSS can become problematic when
network bandwidth is congested, since each stream takes the bandwidth for a
longer time. Thus, if a new request comes when all the bandwidth is fully used, the
request will wait for a long time until the streaming for a previous request finishesand bandwidth for streaming the new video is available. Thus, the waiting time for
a new request may increase significantly beyond what a customer may accept. This
means customer dissatisfaction and revenue reduction for the service provider.
21
-
8/7/2019 efficient video on demand
22/66
7.2 ALGORITHM
1) VAST (video adaptive streaming)
2) VGAST (video greedy adaptive streaming)
These two algorithms are implemented coding level.
7.2.1 VAST Algorithm:
Our VAST algorithm is summarized below:
1) First request for each video title is served by a multicast stream, which has
minimum speed, i.e., playback speed, so later requests can join the stream as
quickly as possible.
2) Later requests, which are in the patching window, are served by patch streams,
the speed of which is inversely proportional to the current request rate and
popularity.
3) A later request, which is the first request outside the patching window, is served
by a new multicast stream.
22
-
8/7/2019 efficient video on demand
23/66
4) Patching window for each video is changed in each time period by video
popularity and current request rate.
5) If a patch stream crosses over to the next patching window, its streaming speed
is changed to that time periods streaming speed.
7.2.2 VGAST Algorithm:
The VAST algorithm uses the less-busy times bandwidth more and the
busier times bandwidth less by changing the streaming speed inverse
proportionately to the request rate. Thus, we can improve the efficiency of network
bandwidth usage and reduce the user waiting time.
In VGAST, the first request for each video is provided by a multicast stream
with minimum speed, and later requests are served by this ongoing multicast
stream and another patch stream. The difference between VAST and VGAST is
that the speed of the patch stream in VGAST depends on the available bandwidth
rather than the request rate. Therefore, each patch stream can use the available
bandwidth more efficiently without leaving any unused bandwidth.
23
-
8/7/2019 efficient video on demand
24/66
CHAPTER 8
MODULES
24
-
8/7/2019 efficient video on demand
25/66
8.1 Modules Description:
Two main modules
1. Server 2. Client
Server module:
1. Audio Upload
2. Video Upload
3. Document Upload4. Audio Delete
5. Video Delete
6. Document Delete
Client Module:
1. Audio Download
2. Video Download
3. Document Download
8.2 Server Module:
Audio Upload:
25
-
8/7/2019 efficient video on demand
26/66
In this module, we can upload any audio file using browse
option and then want to convert that file into zip file.
Video Upload:
In this module, we can upload any video file using browse
option and then want to convert that file into zip file.
Document Upload:
In this module, we can upload any text file using browse option
and then want to convert that file into zip file.
Audio Delete:
In this module, we can delete any audio files that are uploaded
already in the server.
Video Delete:In this module, we can delete any video files that are uploaded
already in the server.
Document Delete:
In this module, we can delete any text files that are uploaded
already in the server.
8.2.1 DATAFLOW DIAGRAM
26
-
8/7/2019 efficient video on demand
27/66
8.3 Client:
27
-
8/7/2019 efficient video on demand
28/66
Audio Download:
In this module, any number of clients can download and view
the audio files that are stored in the server.
Video Download:
In this module, any number of clients can download and view
the video files that are stored in the server.
Document Download:
In this module, any number of clients can download the text
files that are stored in the server.
8.3.1 DATAFLOW DIAGRAM
28
-
8/7/2019 efficient video on demand
29/66
29
-
8/7/2019 efficient video on demand
30/66
CHAPTER 9
30
-
8/7/2019 efficient video on demand
31/66
SYSTEM TESTING
The purpose of testing is to discover errors. Testing is the process of trying to
discover every conceivable fault or weakness in a work product. It provides a way
to check the functionality of components, sub assemblies, assemblies and/or a
finished product It is the process of exercising software with the intent of ensuring
that the Software system meets its requirements and user expectations and does not
fail in an unacceptable manner. There are various types of test. Each test type
addresses a specific testing requirement.
9.1 TYPES OF TESTS
9.1.1 Unit testing
Unit testing involves the design of test cases that validate that the internal
program logic is functioning properly, and that program inputs produce valid
outputs. All decision branches and internal code flow should be validated. It is the
testing of individual software units of the application .it is done after the
completion of an individual unit before integration. This is a structural testing, that
relies on knowledge of its construction and is invasive. Unit tests perform basic
tests at component level and test a specific business process, application, and/or
system configuration. Unit tests ensure that each unique path of a business process
performs accurately to the documented specifications and contains clearly defined
inputs and expected results.
9.1.2 Integration testing
31
-
8/7/2019 efficient video on demand
32/66
Integration tests are designed to test integrated software components to
determine if they actually run as one program. Testing is event driven and is more
concerned with the basic outcome of screens or fields. Integration tests
demonstrate that although the components were individually satisfaction, as shownby successfully unit testing, the combination of components is correct and
consistent. Integration testing is specifically aimed at exposing the problems that
arise from the combination of components.
9.1.3 Functional test
Functional tests provide systematic demonstrations that functions tested are
available as specified by the business and technical requirements, system
documentation, and user manuals.
Functional testing is centered on the following items:
Valid Input : identified classes of valid input must be accepted.
Invalid Input : identified classes of invalid input must be rejected.
Functions : identified functions must be exercised.
Output : identified classes of application outputs must be
exercised.
Systems/Procedures : interfacing systems or procedures must be
invoked.
Organization and preparation of functional tests is focused on requirements, key
functions, or special test cases. In addition, systematic coverage pertaining to
identify Business process flows; data fields, predefined processes, and successive
32
-
8/7/2019 efficient video on demand
33/66
processes must be considered for testing. Before functional testing is complete,
additional tests are identified and the effective value of current tests is determined.
9.1.4 System Test
System testing ensures that the entire integrated software system meets
requirements. It tests a configuration to ensure known and predictable results. An
example of system testing is the configuration oriented system integration test.
System testing is based on process descriptions and flows, emphasizing pre-driven
process links and integration points.
9.1.5 White Box Testing
White Box Testing is a testing in which in which the software tester has
knowledge of the inner workings, structure and language of the software, or at least
its purpose. It is purpose. It is used to test areas that cannot be reached from a black
box level.
9.1.6 Black Box Testing
Black Box Testing is testing the software without any knowledge of the inner
workings, structure or language of the module being tested. Black box tests, as
most other kinds of tests, must be written from a definitive source document, such
as specification or requirements document, such as specification or requirements
document. It is a testing in which the software under test is treated, as a black
box .you cannot see into it. The test provides inputs and responds to outputs
without considering how the software works.
33
-
8/7/2019 efficient video on demand
34/66
-
8/7/2019 efficient video on demand
35/66
35
-
8/7/2019 efficient video on demand
36/66
CHAPTER 10
SOURCE CODE
INDEX.JSP
Untitled Document
36
-
8/7/2019 efficient video on demand
37/66
&
nbsp;&nb
sp;
&
nbsp;&nb
sp;
Start V-O-D
&
nbsp;&nb
sp;
37
-
8/7/2019 efficient video on demand
38/66
SERVERSIGNUPDATA.JSP
New Page 1
-
8/7/2019 efficient video on demand
39/66
try
{
String s="insert into serverdata
values('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"')";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("Jdbc:Odbc:video");
Statement stmt=con.createStatement();
Boolean bo=stmt.execute(s);
if(!bo)
{
response.sendRedirect("http://192.168.1.20/video/serverlogin.jsp");
}
}
catch(Exception ex)
{
out.println(ex);
}
%>
39
-
8/7/2019 efficient video on demand
40/66
SERVERUPLOAD.JSP
New Page 1
-
8/7/2019 efficient video on demand
41/66
String s="insert into serverdata
values('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"')";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("Jdbc:Odbc:video");
Statement stmt=con.createStatement();
Boolean bo=stmt.execute(s);
if(!bo)
{
response.sendRedirect("http://192.168.1.20/video/serverlogin.jsp");
}
}
catch(Exception ex)
{
out.println(ex);
}
%>
41
-
8/7/2019 efficient video on demand
42/66
SERVERVALIDATE.JSP
New Page 1
-
8/7/2019 efficient video on demand
43/66
String s="insert into serverdata
values('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"')";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("Jdbc:Odbc:video");
Statement stmt=con.createStatement();
Boolean bo=stmt.execute(s);
if(!bo)
{
response.sendRedirect("http://192.168.1.20/video/serverlogin.jsp");
}
}
catch(Exception ex)
{
out.println(ex);
}
%>
43
-
8/7/2019 efficient video on demand
44/66
SUCCESSAUDIOUPLOAD.JSP
New Page 1
44
-
8/7/2019 efficient video on demand
45/66
Successfully Audio
Uploaded.......................
SUCCESSFILEUPLOAD.JSP
New Page 1
45
-
8/7/2019 efficient video on demand
46/66
Successfully Audio
Uploaded.......................
46
-
8/7/2019 efficient video on demand
47/66
-
8/7/2019 efficient video on demand
48/66
CHAPTER 11
SCREEN SHOTS
48
-
8/7/2019 efficient video on demand
49/66
49
-
8/7/2019 efficient video on demand
50/66
50
-
8/7/2019 efficient video on demand
51/66
51
-
8/7/2019 efficient video on demand
52/66
52
-
8/7/2019 efficient video on demand
53/66
53
-
8/7/2019 efficient video on demand
54/66
54
-
8/7/2019 efficient video on demand
55/66
55
-
8/7/2019 efficient video on demand
56/66
-
8/7/2019 efficient video on demand
57/66
57
-
8/7/2019 efficient video on demand
58/66
58
-
8/7/2019 efficient video on demand
59/66
59
-
8/7/2019 efficient video on demand
60/66
60
-
8/7/2019 efficient video on demand
61/66
CHAPTER 12
CONCLUSION
We have proposed efficient VoD streaming algorithms for a PON based onthree exploitable resources: an efficient streaming scheme for bandwidth savings,
optimal use of deployed network bandwidth, and proactive use of user storage.
These algorithms use a method that adaptively increases the streaming speed when
the request rate is low and decreases the speed when the request rate is high by
considering the patching scheme, video popularity, and VoD request model to
maximize the use of available network bandwidth. The most efficient algorithm,
VGAST-PB, exploits the user storage proactively in addition to the adaptive
streaming strategy. We showed the efficiency of these algorithms by analyzing the
user waiting time in broadband access networks. Numerical results show that,
when the available network bandwidth is reduced below the required level due to
background traffic, the algorithm can considerably reduce the average user waiting
time and the number of waiting requests. This also means that the proposed
schemes can dramatically reduce the required network bandwidth for the same
service.
61
-
8/7/2019 efficient video on demand
62/66
62
-
8/7/2019 efficient video on demand
63/66
CHAPTER 13
FUTURE ENHANCEMENT
To achieve more practical and user-centric algorithms, we need to consider user
interaction behavior such as VCR functions for VoD service. Some of the previous
research works such as analyzed the methods to support VCR function with
multicast streaming, even though they did not consider the optimum streaming
speed as we analyzed in this paper. Considering VCR functions increases the
complexity and decreases the efficiency of multicast streaming schemes. Reference
shows that multicast streaming schemes are not so efficient if they support
interactive VCR functions, because contingency channels are required to support
VCR functions. The number of contingency channels increases in proportion to the
frequency of VCR actions, which significantly increases the system bandwidth.
Therefore, one of the future research directions might be to find the optimum
streaming speed when the efficient multicast Streaming schemes are applied with
VCR functions.
63
-
8/7/2019 efficient video on demand
64/66
64
-
8/7/2019 efficient video on demand
65/66
CHAPTER 14
REFERENCES
1. F. Thouin and M. Coates, Video-on-demand networks: design approaches andfuture challenges, IEEE Network , vol. 21, no. 2, pp. 4248, Mar./Apr. 2007.
2. K. Couch, Raising the bar for triple play with VoD, Converge! Network
Digest , Jan. 2005.
3. B. Wang, S. Sen, M. Adler, and D. Towsley, Optimal proxy cache allocation
for efficient streaming media distribution, IEEE Trans. Multimedia , vol. 6, no. 2,
pp. 366374, Mar. 2004.
4. M. M. Hefeeda, B. K. Bhargava, and D. K. Y. Yau, A hybrid architecture for
cost-effective on-demand media streaming, Comput. Netw. , vol. 44, no. 3, pp.
353382, Feb. 2004.
5. K. A. Hua, M. A. Tantaoui, and W. Tavanapong, Video delivery technologies
for large-scale deployment of multimedia applications, Proc. IEEE , vol. 92, no. 9,
pp. 14391451, Sept. 2004.
REFERENCE WEBSITE:
http://ieeexplore.ieee.org
http://searchnetworking.techtarget.com/tip
65
http://ieeexplore.ieee.org/http://searchnetworking.techtarget.com/tiphttp://ieeexplore.ieee.org/http://searchnetworking.techtarget.com/tip -
8/7/2019 efficient video on demand
66/66