SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
Streaming Media Server
Setup Manual
VideoLan / LIVE555 / DSS (Darwin)
FFServer (FFmpeg) / Flumotion
V.3
William.L
wiliwe@gmail.com
2009-09-25
Index
Revision History................................................................................................................................................. 4
Testing Environment.......................................................................................................................................... 5
How To Setup Streaming Media Testing/Verifying Environment Successfully?.......................................... 6
Streaming Servers .............................................................................................................................................. 7
1. VideoLan Client ..................................................................................................................................... 7
1.1. Supported Container Format for encoding.............................................................................. 7
1.2. Supported Network Protocol ..................................................................................................... 8
1.3. Setup VLC as Streaming Server................................................................................................ 8
1.4. Client Computer Setup............................................................................................................. 10
1.5. Android VLC Remote............................................................................................................... 12
2. LIVE555 Media Server........................................................................................................................ 18
2.1. Supported Container Format for Encoding........................................................................... 18
2.2. Supported Network Protocol ................................................................................................... 18
2.3. Setup........................................................................................................................................... 18
3. DSS - Darwin Streaming Server ......................................................................................................... 20
3.1. Supported Container Format for Encoding........................................................................... 20
3.2. Supported Network Protocol ................................................................................................... 20
3.3. Setup........................................................................................................................................... 20
3.4 Invoking DSS.............................................................................................................................. 29
3.5 Important files and directories of the DSS .............................................................................. 30
4. FFServer - FFmpeg Streaming server................................................................................................ 31
4.1 FFmpeg Configuration File....................................................................................................... 31
4.2. Supported Container Format for Encoding........................................................................... 31
4.3. Supported Network Protocol ................................................................................................... 31
4.4. Setup........................................................................................................................................... 32
5. Flumotion Streaming Server............................................................................................................... 36
5.1. Supported Container Format for Encoding........................................................................... 36
5.2. Supported Network Protocol ................................................................................................... 36
5.3. Setup........................................................................................................................................... 36
Real-Time Streaming Protocol (RTSP).......................................................................................................... 46
HTTP Streaming .............................................................................................................................................. 47
To Create HTTP Streaming Video.......................................................................................................... 47
Limitations of HTTP streaming.............................................................................................................. 47
Comparison between Streaming and Progressive Downloading Media ..................................................... 48
Streamable Media File..................................................................................................................................... 49
1. MP4 ....................................................................................................................................................... 49
1.1. What is MP4? ............................................................................................................................ 49
1.2. MP4 file extensions ................................................................................................................... 50
2. How To Add Hint Track into MP4 & 3GP Files?.............................................................................. 50
2.1 MP4 Files .................................................................................................................................... 50
2.2 3GP Files ..................................................................................................................................... 50
RTP Payload Type for Streaming Media ....................................................................................................... 52
SHOUTcast – A Streaming Audio Tech.......................................................................................................... 53
For Android .............................................................................................................................................. 53
References......................................................................................................................................................... 55
01. Video Lan............................................................................................................................................. 55
02. LIVE555 Media Server........................................................................................................................ 55
03. Darwin Streaming Server..................................................................................................................... 55
04. FFServer - FFMpeg Streaming Server................................................................................................. 55
05. Flumotion............................................................................................................................................. 55
06. To Add Ubuntu Universe and Multiverse Repository.......................................................................... 55
07. Stream Server Passing through NAT/Firewall..................................................................................... 55
08. Real-Time Streaming Protocol (RTSP)................................................................................................ 56
09. Session Description Protocol (SDP).................................................................................................... 56
10. Streamable Media Files........................................................................................................................ 56
11. MP4IP .................................................................................................................................................. 56
12. MP4Box............................................................................................................................................... 56
13. SHOUTcast .......................................................................................................................................... 56
Revision History
Version
Number
Revision Date Comments
v.1 2009-09-25 Initialize this document.
v.2 2009-10-12 Add topics :
1. Introduction to Real Time Stream Protocol
2. HTTP Streaming
v.3 2009-10-29 Add topics :
1. How To Setup Streaming Media Testing/Verifying Environment
Successfully?
2. Streamable Media Files.
3. RTP Payload Type for Streaming Media.
Testing Environment
Using「Ubuntu 8.04 Hardy Heron LTS」as our working operating system.
How To Setup Streaming Media Testing/Verifying
Environment Successfully?
1. Use MediaInfo (http://mediaarea.net/MediaInfo) to identify what audio/video codec used by (contained in)
the media file going to be streamed.
2. Choose the correct streaming server supporting the file format and audio/video codec of that media file.
3. Confirm that media file is streamable (e.g. if it has Hint Track information) if you want to use RTSP/RTP
way to transfer streaming media.
4. Use the right media player with the capability(Audio/Video codec) to play streaming media.
5. Consider that network environment that if there has one or more NATs/firewalls between streaming server
and media player. If it does, try to use HTTP streaming way using port 80.
Streaming Servers
The followings are found open streaming servers.
1. VideoLan Client
VLC media player which can be used as a server and as a client to stream and receive network streams. VLC
is able to stream all that it can read.
VLS (VideoLAN Server), which can stream MPEG-1, MPEG-2 and MPEG-4 files, DVDs, digital satellite
channels, digital terrestial television channels and live videos on the network in unicast or multicast.
Most of the VLS functionality can now be found VLC.
Usage of VLC instead of VLS is advised. Here, we use VLC with streaming functionality as streaming server.
1.1. Supported Container Format for encoding
Ogg with MPEG-1/ MPEG-2
ASF with MPGE-4 video
MOV with MPGE-4 video
MP4 with H.264/MPEG-4 AVC
1.2. Supported Network Protocol
HTTP
MMS
RTP/UDP
MMSH
1.3. Setup VLC as Streaming Server
Step-01 : Install the following packages through APT tool on server and client computer.
1. VLC
2. VLC-plugin-esd
3. VLC plugin for Mozilla
Open Synaptic (System -> Administration -> Synaptic Package Manager).
In 「Settings -> Repositories」, make sure you have a「multiverse」repository activated.
Command line :
#> sudo apt-get update
#> sudo apt-get install vlc vlc-plugin-esd mozilla-plugin-vlc
Step-02 : Click 「檔案檔案檔案檔案 -> 開啟檔案開啟檔案開啟檔案開啟檔案」
Show off the “開啟檔案開啟檔案開啟檔案開啟檔案…” dialog :
Step-03 : In「開啟開啟開啟開啟:」item, to select the video or audio files you wish to playback.
Step-4 : Check「快取快取快取快取」
Check「串流串流串流串流/儲存儲存儲存儲存」
Click 「設定設定設定設定」button.
Step-5 : Check「Play Locally」so that you can see and hear the output.
Check「RTP」to play over a LAN.
Fill in Host IP address in「位置位置位置位置」field of RTP item.
Step-06 : Click「確定確定確定確定」
1.4. Client Computer Setup
Step-01 : Invoke VLC.
Click「媒體媒體媒體媒體 -> 開啟網路串流開啟網路串流開啟網路串流開啟網路串流.」
Step-02 : Select「RTP」from the “Protocol” column.
You can leave the address section blank.
Step-03 : Click「Play」to start to play streaming video.
1.5. Android VLC Remote
This application works as a「Remote Control」to control VLC.
Step-01 : Download android-vlc-remote-0.2.2.apk from
http://android-vlc-remote.googlecode.com/files/android-vlc-remote-0.2.2.apk
Step-02 : Install android-vlc-remote-0.2.2.apk using ADB.
Step-03 : In the device installed Android, executing Android-VLC-Remote application.
It appears as the following :
To maximize the VLC
display window
To view played
media file list.
To browse the
filesystem on VLC
The list showing media files had been played.
It can browse server’s filesystem.
Click mouse left button to show “Setting” interface to set the VLC server’s IP address and port (The default
port number is 8080) :
Step-04 : In VLC player, click 「設定設定設定設定->偏好偏好偏好偏好設定設定設定設定」to open 「偏好偏好偏好偏好設定設定設定設定」dialog :
Click the「界面界面界面界面」item
Check the lower-right’s「進階選項進階選項進階選項進階選項」
Fill your「Host address」where the VLC server installed.
Step-05 : In VLC player, click「設定設定設定設定->新增界面新增界面新增界面新增界面->Web Interface」
Now, Android-VLC-Remote can connect to VLC player.
The following is the snapshot of packet capture of communication between Android-VLC-Remote and
VLC player.
The Host containg VLC player is “192.168.0.132” and the Android device is “192.168.0.175” :
Android-VLC-Control send HTTP-Requests for “playlist.xml” and “status.xml” per second.
[Tips]
1. You can stream using this method over the Internet relying on the HTTP protocol instead of RTP. Make sure
both the client and host have the appropriate ports open on their firewalls.
2. To stream effectively, the client must have all the audio and video codecs present on the host. If they do not,
VLC can use transcode to convert the file into something the client can play.
3. UDP streaming methods require MPEG TS encapsulation. The HTTP streaming method
can be used with the MPEG PS, MPEG TS, MPEG 1, OGG, RAW or ASF encapsulation.
2. LIVE555 Media Server
「LIVE555 Media Server」is a complete RTSP server application.
2.1. Supported Container Format for Encoding
AAC
AMR
MP3
MPG
WAV
2.2. Supported Network Protocol
RTSP ( default port : 8554 )
2.3. Setup
Step-01 : To install the following packages through the APT tool :
1. liblivemedia-dev
2. livemedia-utils
3. DSS - Darwin Streaming Server
Darwin Streaming Server is an open source project intended for developers who need to stream QuickTime
and MPEG-4 media on alternative platforms such as Windows, Linux, and Solaris
Darwin Streaming Server is only supported by the open source community and is not eligible for technical
support from Apple.
Darwin Streaming Server is available as a free download under the Apple Public Source License
(http://www.opensource.apple.com/apsl/).
3.1. Supported Container Format for Encoding
QuickTime
MPEG-1
MPEG-2
MP4
3.2. Supported Network Protocol
HTTP ( default port : 80 )
RTSP ( default port : 554 )
RTP
RTCP
3.3. Setup
Run below commands in your terminal:
Step-01 : sudo apt-get update && sudo apt-get upgrade
Step-02 : sudo apt-get install build-essential
Step-03 : sudo addgroup --system qtss
Step-04 : sudo adduser --system --no-create-home --ingroup qtss qtss
Step-05 : Download the latest version at
http://static.lstoll.net/dss/DarwinStreamingSrvr6.0.3-Linux.deb.gz
, and put the download DarwinStreamingSrvr6.0.3-Linux.deb.gz into a directory you like.
Step-06 : tar -zxvf DarwinStreamingSrvr6.0.3-Linux.deb.gz
Step-07 : sudo dpkg -i DarwinStreamingSrvr6.0.3-Linux.deb
The default login
account and password
The above two console snapshots show the prograss of Darwin installation.
Step-08 : If you see Setup Complete! message, you are good to go.
Logon to
http://ServerName:1220/
using your browser. Username and password is “admin” and “admin”, respectively as the
following figure.
Step-09 : First logging, the user will be requested to set some configuration as the following figures.
<I> Specify a MP3 Broadcast password..
<II> This will enable encryption between the administration server and the web client.
<III> Specify the location of your media folder. By default this is /usr/local/movies/”.
<IV> To allow streaming on port 80 (the same as Apache), then check the box.
Click on "Finish" to end the configuration.
Once you have finished configuring your streaming server, you will see the following page, which is a
snapshot of your streaming server, and the administrative control panel of your streaming server :
In main page, you could change configures.
(1). The「General Settings」page. It can let user to change “Media Directory” or change administrator’s
password.
(2). To enable the port for passing through firewall/NAT.
The following figure shows pre-installed testing video files under the Media Directory:
3.4 Invoking DSS
In console, to execute this command :
sudo /usr/local/sbin/DarwinStreamingServer
To check if DSS is invoked, executing following commands :
netstat -ntulp | grep 554
and
ps -aux | grep Darwin
3.5 Important files and directories of the DSS
/usr/local/sbin/Darwin Streaming Server Server Software
/usr/local/sbin/streamingadminserver.pl Web Frontend
/etc/streaming Configuration Dir
/etc/streaming/streamingserver.xml Configuration File Server
/var/streaming/logs Logs
/usr/local/movies Default directory for video files
Then, the file /etc/streaming/streamingserver.xml must be given write privledges, otherwise no
configuration can be saved :
#> sudo chmod 755 /etc/streaming/streamingserver.xml
4. FFServer - FFmpeg Streaming server
The FFmpeg project is made of several components:
ffmpeg A command line tool to convert one video file format to another. It also supports grabbing and
encoding in real time from a TV card.
ffserver An HTTP (RTSP is being developed) multimedia streaming server for live broadcasts. Time
shifting of live broadcast is also supported.
ffplay A simple media player based on SDL and on the FFmpeg libraries.
libavcodec A library containing all the FFmpeg audio/video encoders and decoders. Most codecs were
developed from scratch to ensure best performance and high code reusability.
libavformat A library containing demuxers and muxers for audio/video container formats.
libavutil A helper library containing routines common to different parts of FFmpeg.
libpostproc A library containing video postprocessing routines.
libswscale A library containing video image scaling routines.
FFserver receives prerecorded files or FFM streams from some ffmpeg instance as input, then streams them
over HTTP/RTSP/RTP.
An ffserver instance will listen on some port as specified in the configuration file. You can launch one or more
instances of ffmpeg (FFmpeg video converter) and send one or more FFM streams to the port where ffserver
is expecting to receive them. Alternately, you can make ffserver launch such ffmpeg instances at startup.
4.1 FFmpeg Configuration File
Input streams are called feeds, and each one is specified by a <Feed> section in the configuration file.
For each feed you can have different output streams in various formats, each one specified by a <Stream>
section in the configuration file.
4.2. Supported Container Format for Encoding
AVI
ASF
FLV
SWF(Macromedia Shockwave Flash)
Matroska
MPEG-TS
4.3. Supported Network Protocol
HTTP (default port : 8090)
RTSP (default port : 5454)
UDP
RTP
4.4. Setup
Step-01: Install “ffmpeg” package using APT.
After installing “ffmpeg” package, you can use “ffserver” and “ffmpeg” commands under console.
Step-02 : Furthermore, to finish streaming configuration.
<I> HTTP Streaming
The following is an example of setting HTTP streaming :
[Feed Section]
[Stream Section]
After writing Ffserver configuration file, execute the commands :
#> ffserver -f /DirectoryContainingConfigurationFile/ffserver.conf &
#> ffmpeg -i /home/william/QAD-media-files/test.mpg http://localhost:8090/feed1.ffm
<Feed feed1.ffm>
# You can specify the maximum size of the feed,
# where zero means unlimited. Default:
FileMaxSize 200K
# Only allow connections from localhost to the feed.
ACL allow 127.0.0.1
</Feed>
<Stream test1.mpg>
# coming from live feed 'feed1'
Feed feed1.ffm
# Format of the stream
Format mpeg
# Bitrate for the audio stream. Codecs usually support only a few
# different bitrates.
AudioBitRate 32
# Number of audio channels: 1 = mono, 2 = stereo
AudioChannels 1
# Sampling frequency for audio. When using low bitrates, you should
# lower this frequency to 22050 or 11025. The supported frequencies
# depend on the selected audio codec.
AudioSampleRate 44100
# Bitrate for the video stream
VideoBitRate 64
# Ratecontrol buffer size
VideoBufferSize 40
# Number of frames per second
VideoFrameRate 3
# Size of the video frame
VideoSize 160x128
</Stream>
<II> RTSP Streaming
The following is an example of setting RTSP streaming :
Step-03 : Client setup for
[HTTP]
http://FFserverIP:8090/test1.mpg
[RTSP]
rtsp:// FFserverIP:5454/test1-rtsp.mpg
The filename in URL is the one specified in <stream> tag.
Step-04 : FFserver supports an HTTP interface which exposes the current status of the server. Simply
point your browser to the address of the special status stream specified in the configuration file.
For example if you have :
then the server will post a page with the status information when the special stream status.html is requested
as the following figure :
# RTSP examples
# You can access this stream with the RTSP URL:
# rtsp://localhost:5454/test1-rtsp.mpg
# A non-standard RTSP redirector is also created. Its URL is:
# http://localhost:8090/test1-rtsp.rtsp
#RTSPPort 5454
<Stream test1-rtsp.mpg>
Format rtp
File "/home/william/QAD-media-files/test1.mpg"
</Stream>
<Stream status.html>
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
Tips
1. When you connect to a live stream, most players (WMP, RA, etc) want to buffer a certain number of
seconds of material so that they can display the signal continuously. However, ffserver (by default) starts
sending data in realtime.
This means that there is a pause of a few seconds while the buffering is being done by the player. The good
news is that this can be cured by adding a '?buffer=5' to the end of the URL. This means that the stream
should start 5 seconds in the past --and so the first 5 seconds of the stream are sent as fast as the network
will allow. It will then slow down to real time. This noticeably improves the startup experience.
You can also add a 'Preroll 15' statement into the ffserver.conf that will add the 15 second prebuffering
on all requests that do not otherwise specify a time. In addition, ffserver will skip frames until a key_frame
is found. This further reduces the startup delay by not transferring data that will be discarded.
2. You may want to adjust the MaxBandwidth in the ffserver.conf to limit the amount of bandwidth
consumed by live streams.
The streams specified in
configuration file using <>
5. Flumotion Streaming Server
Flumotion is a streaming server product developed by Fluendo, and is written in Python and based on the
multimedia framework Gstreamer and Twisted.
Flumotion hastwo forms of streaming content: Live streaming and On-Demand streaming. For instance, a
radio station might want to broadcast their audio live over the Internet, simultaneously as it is broadcast via
FM radio. However, that same radio station might like to provide ondemand access to the archive of their
recorded content.
It can from Ogg / Vorbis / Theora files.
5.1. Supported Container Format for Encoding
ASF
QuickTime
Ogg
OGM
Matroska
MP4
5.2. Supported Network Protocol
HTTP
5.3. Setup
When it is going to Flumotion as a multiformat streaming server, it will need at least「gst-plugins-base
0.10.25」,「gst-plugins-good 0.10.17」and「gst-plugins-bad 0.10.14」, some of which are yet due to be
released.
Step-01 : For Ubuntu Hardy, to add the following line into APT source list file,「/etc/apt/sources.list」:
deb http://www.flumotion.net/pkg/ubuntu hardy main
Step-02 : To install flumotion, type the following commands :
apt-get update && apt-get install flumotion
Step-03 : Install Flumotion using APT
Step-04 : Add yourself to the flumotion group:
sudo adduser <Username> flumotion
Step-05 : Make the /etc/flumotion directory readable:
sudo chmod a+x /etc/flumotion
Step-06 : In the configuration file, add the following tag for streaming files.
When it progress installation, it may show the window to ask the user input some data to create a
certificate for SSL.
<component name="loop-producer-high" type="loop-producer" worker="demo1-looper">
<property name="framerate">25/2</property>
<property name="height">284</property>
<property name="width">352</property>
<property name="location">/srv/flumotion/moto.ogg</property>
</component>
Step-06 : To start Flumotion, choose the
「Application -> Sound & Video -> Flumotion Streaming Server Administration」
menu item on your panel. :
Starting the Configuration Assistant
Start to connect to Flumotion Manager
Starting a new Manager and Worker
The Configuration Assistant's Production Page, Showing Test Inputs
We don't need to change anything on the remaining pages, so you can now continue to click
Forward until you reach the last page.
You will pass pages for Test Video Producer settings, Overlay settings, Test Audio Producer settings,
Encoding settings, Theora Encoder settings, Vorbis Encoder settings, Consumption settings (streaming
or saving to disk), HTTP Streaming settings, HTTP Streaming (Audio & Video) settings, Content
License settings, and then the Summary page.
The Administration Window
Connected Users Status
[Tips]
1. For streaming files, not all file formats can be streamed on demand, because they require client players to
download the entire file to obtain enough information for the client to start playing. For instance, files
using the AVI container (usually with an .avi extension) cannot be streamed on demand.
Real-Time Streaming Protocol (RTSP)
The Real-Time Streaming Protocol (RTSP) is an application-level protocol, and establishes and controls either
a single or several time-synchronized streams of continuous media such as audio and video.
RTSP does not typically deliver the continuous streams itself; the delivery mechanisms are based solely on
RTP.
No file will be saved in the disk of end user. The streamed media will be played back on the fly when it
reach the remote end through network.
The idea in RTSP is that it acts as a "network remote control" for multimedia servers.
RTSP URL is in form「rtsp://media.example.com:554/twister/audiotrack」, where
* rtsp:// is the identifier for TCP rtsp scheme (rtspu:// is used for UDP scheme)
* 554 is the assumed port(default port) for Real-Time Streaming Protocol
* twister is the name of the presentation
* audiotrack is the name of certain stream in the presentation (this is optional)
RTSP supports below features :
RTP packets can stream over UDP or over TCP. If the client can tolerate packet loss, streaming over UDP
can be more efficient than TCP because UDP does not incur the overhead of retransmitting lost packets.
The encapsulation of Advanced Streaming Format (ASF) packets in RTP is proprietary.
Streaming with RTSP fails if a firewall separates the client and server, and the firewall blocks the ports
and protocols that RTSP uses. This problem is especially common with home Internet gateways. Even if
the gateway has a built-in RTSP NAT, streaming might fail at times.
RTSP has the overhead of requiring multiple requests before playback can begin. However, the client
can pipeline many of these requests and send them over a single TCP connection, in which case WMP
does not need to block waiting for a response.
The biggest issue with RTSP is that the protocol or its necessary ports may be blocked by routers or firewall
settings, preventing a device from accessing the stream. As the standard protocol for the Web, though, HTTP
is generally accessible.
HTTP Streaming
This is the simplest and cheapest way to stream video from a website. This way is also called Serverless
Streaming or Pseudo Streaming.
When a media file is playing, it is progressively downloading media file via HTTP.
To Create HTTP Streaming Video
1. Create a video file in a common streaming media format.
2. Upload the file to your web server.
3. Make a simple hyperlink to the video file, or use special HTML tags to embed the video in a web page.
Limitations of HTTP streaming
1. HTTP streaming is a good option for websites with modest traffic, i.e. less than about a dozen people
viewing at the same time. For heavier traffic a more serious streaming solution should be considered.
2. You can't stream live video, since the HTTP method only works with complete files stored on the server.
3. You can't automatically detect the end user's connection speed using HTTP. If you want to create different
versions for different speeds, you need to create a separate file for each speed.
4. HTTP streaming is not as efficient as other methods and will incur a heavier server load.
Comparison between Streaming and Progressive
Downloading Media
Q : What is the difference between streaming video and making video available for progressive download?
Which is preferred?
A :
* The basic difference between streaming video and making it available for progressive downloads is the
server used to deliver the content, the time it takes to deliver the content and whether or not a copy of the
content stays on the user's machine.
* When video is streamed, it is delivered from a streaming media server and is played on the computer using a
particular piece of software, such as Windows Media, Real Player or Quicktime. This all occurs rapidly
(depending on the speed of the Internet connection and the user's processor). The file remains on the server
and is not transferred to the viewer's computer. Events can be streamed live and / or can be archived for
later viewing. The url for files hosted on media server may begin with rtsp:// or mms://.
* If a file is made available for progressive download, a copy of the file is transferred to the user's computer.
The viewer may in some cases begin to start viewing it when the download begins, but will not be able to
fast forward or see the whole video until the download is complete. Files for progressive downloads use a
regular Web server with a url beginning with http://. Because video files are generally large, this can take
a long time. The benefit of a progressive download for video is the quality can be higher; the benefit of
progressive downloads for audio is the content can be saved to an individuals iPod or other mp3 player and
listened to at their leisure.
* Vanderbilt University prefers streaming for video, particularly longer videos, as it is much faster than
progressive download and the concern about the alteration or misuse of Vanderbilt videos is greatly reduced
as the content remains on the Vanderbilt media server.
Streamable Media File
Every streamable media file must have the most important information – Hint Track.
Hint Track instructs the streaming server to pick media data, encapsulate into packet and then put it onto
network.
A streaming server just follows instructions provided by Hint Track without knowing the content of the
streamable media file.
The informations Hint Track provides are put into SDP(Session Description Protocol) in RTSP payload.
These informations include codec type, media file header, RTP payload type, the playbacking time, etc.
MP4 file without Hint Track
MP4 file with Hint Track
1. MP4
1.1. What is MP4?
MP4 is a container and streamable format. As any other container format like AVI (.avi), RealMedia
(.rm, .rmvb), QuickTime (.mov), MPEG (.mpg, .mpeg), Matroska (.mkv, .mka), OGM (.ogm) it allows you
to combine different multimedia streams (mostly audio and video) into one single file.
MP4 is a file extension for the container format defined in the Systems Part of the MPEG-4 standard (ISO
14496-1).
MP4 supports all kinds of multimedia content (multiple audio streams, video streams, subtitle streams,
pictures) and advanced content (called "Rich Media" or "BIFS") like 2D and 3D graphics, user
interactivity, DVD-like menus.
1.2. MP4 file extensions
MP4 files can have the following extensions:
* .mp4 - official extension
* .m4v - .mp4 files with the WRONG extension introduced by Apple for video+audio files, .m4v can be
safely renamed to .mp4 (.m4v is used in Apple iTunes and iPod)
* .m4a - .mp4 files with the WRONG extension introduced by Apple for audio-only files, .m4a can
safely be renamed to .mp4
* .m4p - used by Apple iTunes for DRM protected files
* .m4e - renamed .sdp files used by Envivio for streaming
* .m4v, .mp4v, .cmp, .divx, .xvid, .264 - normally raw mpeg-4 video streams (not inside MP4)
* .3gp, .3g2 - used by mobile phones, can also include content not defined for .mp4 (H.263, AMR)
2. How To Add Hint Track into MP4 & 3GP Files?
2.1 MP4 Files
2.1.1) Apple and MPEG4IP offer nice and free tools when it comes to streaming MP4: As a streaming
server you can use Apple's Darwin Streaming Server. For live streaming you can use mp4live from
MPEG4IP (only for Linux), on Windows you can use MPEGRecorder (which seems to be a port of
mp4live). Also have a look at the tools from ViTooKi (opensource Streaming Server, Player and other tools).
Another free and opensource MP4 streaming server is available from Catra. For MAC you may use Live
Channel.
2.1.2) MP4Box is a MP4 multiplexer and a command line tool. It can import MPEG-4 video, DivX, XviD,
3ivx, h264 etc, audio streams and subtitles into the .mp4 container. The end result is a compliant MP4
stream. It can also extract streams from a .mp4. MP4Box is a command line tool, but can be used with
graphical user interfaces such as YAMB.
With AAC audio, it should use LATM(Low-overhead MPEG-4 Audio Transport Multiplex) RTP payload
type :
MP4Box.exe -hint -latm XXX.mp4
Others :
MP4Box.exe -hint XXX.mp4
2.2 3GP Files
MP4Box commands for 3GP files with A/V codec :
<I> AMR+H263
MP4Box.exe –hint -3gp XXX.3gp
<II> AAC+MP4
MP4Box.exe -hint -latm XXX.3gp
RTP Payload Type for Streaming Media
Codec Type RFC
H.263 Video http://www.potaroo.net/ietf/rfc/PDF/rfc2429.pdf
H.264 Video http://www.potaroo.net/ietf/rfc/PDF/rfc3984.pdf
MPEG-4 Audio/Visual
bitstreams
Video http://www.potaroo.net/ietf/rfc/PDF/rfc3016.pdf
AAC, LC and LTP Audio http://www.potaroo.net/ietf/rfc/PDF/rfc3016.pdf
AMR-NB AMR-WB Audio http://www.potaroo.net/ietf/rfc/PDF/rfc3267.pdf
SHOUTcast – A Streaming Audio Tech
SHOUTcast is server software for streaming media developed by Nullsoft (whoes most famous product is
Winamp MP3 player). It allows digital audio content, primarily in MP3 or HE-AAC format, to be broadcast
to and from media player software, enabling hobbyists and professionals to create Internet radio networks. It
is cross-platform, and freeware.
It consists of a client-server model, with each component communicating via a network protocol that
intermingles audio data with metadata such as song titles and the station name. It uses HTTP as a transport
protocol, although multicast is another option.
Shoutcast servers are usually linked to by means of playlist files, which are small text files (usually with
extensions .pls or .m3u) that contain the URL of the ShoutCast server. An attempt to visit that URL in a
normal Web browser will usually result in a ShoutCast status page.
For Android
Quoted from a post on Internet:
-----------------------------------------------------------------------------------------------------------------------------------
Android (這裡使用的是 1.5)透過一個叫做 android.media.MediaPlayer 的類別來提供撥放串流影音或
本地端影音檔的功能。不過,眾所皆知的,它支援的串流協定以及 codec,相當的有限。我想,這一點
在現在及未來,肯定會受到相當多開發者的注目以及戮力加強。
本文提到的是解決一個特定問題的方式,想解決的是在 Android 上撥放 SHOUTCAST MP3 stream。許
多網路音樂串流都是採用 SHOUTCAST MP3 stream 的方式,但即使 Android 支援了 HTTP 以及 MP3,
而且 SHOUTCAST MP3 stream 的內容幾乎就是 MP3 stream,但透過內建的 MediaPlayer,你仍然無法
撥放。這原因當然是因為 MediaPlayer 沒有處理 SHOUTCAST,即使 SHOUTCAST 的協定和 HTTP 是
那麼的相像。
由於我才接觸 Android 數日,可以說是對 Android 還相當的陌生,不知道除了走原生程式碼這條路外,
還有沒有別的方法(之前有想過,直接處理 SHOUTCAST 協定再自行 decode MP3,但似乎沒有內建的
MP3 decode 介面,或許有 Android 高手可以指點一下),所以設計了一個機制,在不寫任何原生程式碼
的情況下,讓 MediaPlayer 能處理 SHOUTCAST MP3 stream。
這個機制的核心想法是這樣樣子的 - 放置一個 HTTP proxy 介於 MediaPlayer 與 SHOUTCAST server
之間(當然 HTTP proxy 也跑在你的 Android 應用程式之中),這個 HTTP proxy 一手接收 MediaPlayer
的單純 HTTP 請求,另一邊則扮演一個 SHOUTCAST client,接收 SHOUTCAST server 回傳的內容,並
且依據 SHOUTCAST 協定,將回傳內容中的 MP3 stream 剖析出來,回傳給另一邊的 MediaPlayer。
今天實驗了一下,這個機制的確能夠讓 MediaPlayer 撥放 SHOUTCAST 的網路音訊串流。大抵的精神
如上所描述,不過細節處還不少。最重要的大概就是怎麼處理 MediaPlayer 的 HTTP 請求。MediaPlayer
基本上是兩個請求就搞定,一個是 HEAD 一個是 GET。透過 HEAD 它可以判斷究竟是否支援,再透過
接下來的 GET 取得真正的內容。當然,針對這兩個請求,Content-Type 都會是 audio/mpeg,而且千萬
不要忘了(或故意不)提供 Content-Length(因為是串流,所以,請給個超大的值),否則 MediaPlayer
在 prepare 的時候就會失敗了。
References
01. Video Lan
Document : http://wiki.videolan.org/Documentation:Documentation
VLC Knowledge : http://wiki.videolan.org/Knowledge_Base
VLC Streaming HowTo :http://wiki.videolan.org/Documentation:Streaming_HowTo
VLC Capability : http://www.videolan.org/vlc/features.html
Streaming Capability : http://www.videolan.org/streaming-features.html
How to stream on a VLC : http://www.ehow.com/how_5143120_stream-vlc.html
Android VLC Remote : http://code.google.com/p/android-vlc-remote/
02. LIVE555 Media Server
http://www.live555.com/mediaServer/
03. Darwin Streaming Server
Main site : http://dss.macosforge.org/
Apple site introducing DSS : http://developer.apple.com/opensource/server/streaming/index.html
DSS-6.03 Install :
http://www.xtreamlab.net/howtos/broadcast/servers/darwin/howto_setup_darwin_streaming_server_on_lin
ux.html
DSS-6.03 Install in another way :
http://cwshep.blogspot.com/2008/08/darwin-streaming-server-603-on-linux.html
DSS Installation and Setup in regular Chinese : http://blog.xuite.net/hsunet0122/life/25320249
04. FFServer - FFMpeg Streaming Server
Ffmpeg Wiki : http://wiki.multimedia.cx/index.php?title=Libavcodec
05. Flumotion
Official Site : http://www.flumotion.net/
Source Code Download Site : http://www.flumotion.net/src/flumotion/
Introduction to Flumotion Commands :
http://blog.gingertech.net/2006/08/02/running-flumotion-on-ubuntu/
Q&A :
https://code.fluendo.com/flumotion/trac/wiki/FAQ#when-starting-flumotion-manager-i-get-error-pem-file-e
tc-flumotion-default-pem-does-not-exist
06. To Add Ubuntu Universe and Multiverse Repository
http://www.ubuntugeek.com/how-to-enable-the-universe-and-multiverse-repositories-in-ubuntu-804-hardy.
html
07. Stream Server Passing through NAT/Firewall
http://soundscreen.com/streaming/firewall.html
08. Real-Time Streaming Protocol (RTSP)
Specification : http://www.potaroo.net/ietf/rfc/PDF/rfc2326.pdf
http://www.tml.tkk.fi/Studies/Tik-110.300/1998/Essays/rtsp.html
http://www1.cs.columbia.edu/~hgs/rtsp/
http://www.javvin.com/protocolRTSP.html
09. Session Description Protocol (SDP)
Specification : http://www.potaroo.net/ietf/rfc/PDF/rfc2327.pdf
http://en.wikipedia.org/wiki/Session_Description_Protocol
10. Streamable Media Files
http://forum.doom9.org/archive/index.php/t-91113.html
http://all-streaming-media.com/streaming-media-faq/faq-mp4-streaming.htm
http://en.wikipedia.org/wiki/MPEG-4_Part_14
http://en.wikipedia.org/wiki/ISO_base_media_file_format
11. MP4IP
http://karmak.org/archive/2003/05/encoding.html
http://www.linuxlinks.com/article/20080713184940503/MPEG4IP.html
12. MP4Box
Official Site : http://gpac.sourceforge.net/doc_mp4box.php
Ubuntu Manual : http://manpages.ubuntu.com/manpages/intrepid/man1/mp4box.1.html
13. SHOUTcast
http://en.wikipedia.org/wiki/SHOUTcast

Contenu connexe

Tendances

オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]オラクルエンジニア通信
 
Oracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsOracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsAnil Nair
 
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...DataStax
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...Google Cloud Platform - Japan
 
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the CloudOracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the CloudMarkus Michalewicz
 
(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data Platform(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data PlatformAmazon Web Services
 
From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...
From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...
From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...Spark Summit
 
Understanding How CQL3 Maps to Cassandra's Internal Data Structure
Understanding How CQL3 Maps to Cassandra's Internal Data StructureUnderstanding How CQL3 Maps to Cassandra's Internal Data Structure
Understanding How CQL3 Maps to Cassandra's Internal Data StructureDataStax
 
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Timothy Spann
 
Oracle RAC on Extended Distance Clusters - Customer Examples
Oracle RAC on Extended Distance Clusters - Customer ExamplesOracle RAC on Extended Distance Clusters - Customer Examples
Oracle RAC on Extended Distance Clusters - Customer ExamplesMarkus Michalewicz
 
Rocks db state store in structured streaming
Rocks db state store in structured streamingRocks db state store in structured streaming
Rocks db state store in structured streamingBalaji Mohanam
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1Federico Campoli
 
Mapping Data Flows Training deck Q1 CY22
Mapping Data Flows Training deck Q1 CY22Mapping Data Flows Training deck Q1 CY22
Mapping Data Flows Training deck Q1 CY22Mark Kromer
 
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkArbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkDatabricks
 
Apache Arrow Flight Overview
Apache Arrow Flight OverviewApache Arrow Flight Overview
Apache Arrow Flight OverviewJacques Nadeau
 
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...Databricks
 
Oracle Advanced Security Transparent Data Encryptionのご紹介
Oracle Advanced Security Transparent Data Encryptionのご紹介Oracle Advanced Security Transparent Data Encryptionのご紹介
Oracle Advanced Security Transparent Data Encryptionのご紹介オラクルエンジニア通信
 

Tendances (20)

オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]オラクルのデータベースセキュリティへの取り組み [2021年2月版]
オラクルのデータベースセキュリティへの取り組み [2021年2月版]
 
Oracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret InternalsOracle RAC 19c: Best Practices and Secret Internals
Oracle RAC 19c: Best Practices and Secret Internals
 
Exadata Cloud Service Overview(v2)
Exadata Cloud Service Overview(v2) Exadata Cloud Service Overview(v2)
Exadata Cloud Service Overview(v2)
 
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the CloudOracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
 
(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data Platform(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data Platform
 
From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...
From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...
From DataFrames to Tungsten: A Peek into Spark's Future-(Reynold Xin, Databri...
 
Understanding How CQL3 Maps to Cassandra's Internal Data Structure
Understanding How CQL3 Maps to Cassandra's Internal Data StructureUnderstanding How CQL3 Maps to Cassandra's Internal Data Structure
Understanding How CQL3 Maps to Cassandra's Internal Data Structure
 
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
 
Oracle RAC on Extended Distance Clusters - Customer Examples
Oracle RAC on Extended Distance Clusters - Customer ExamplesOracle RAC on Extended Distance Clusters - Customer Examples
Oracle RAC on Extended Distance Clusters - Customer Examples
 
Rocks db state store in structured streaming
Rocks db state store in structured streamingRocks db state store in structured streaming
Rocks db state store in structured streaming
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1
 
Mapping Data Flows Training deck Q1 CY22
Mapping Data Flows Training deck Q1 CY22Mapping Data Flows Training deck Q1 CY22
Mapping Data Flows Training deck Q1 CY22
 
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkArbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
 
Training
TrainingTraining
Training
 
Apache Arrow Flight Overview
Apache Arrow Flight OverviewApache Arrow Flight Overview
Apache Arrow Flight Overview
 
RubiX
RubiXRubiX
RubiX
 
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
 
Oracle Advanced Security Transparent Data Encryptionのご紹介
Oracle Advanced Security Transparent Data Encryptionのご紹介Oracle Advanced Security Transparent Data Encryptionのご紹介
Oracle Advanced Security Transparent Data Encryptionのご紹介
 

En vedette

Internationalization(i18n) of Web Page
Internationalization(i18n) of Web PageInternationalization(i18n) of Web Page
Internationalization(i18n) of Web PageWilliam Lee
 
High Efficiency Video Coding
High Efficiency Video CodingHigh Efficiency Video Coding
High Efficiency Video CodingNayan Seth
 
Webinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalità
Webinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalitàWebinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalità
Webinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalitàNetgear Italia
 
Streming media server
Streming media serverStreming media server
Streming media servernadimsajib
 
History of Streaming Media at DU
History of Streaming Media at DUHistory of Streaming Media at DU
History of Streaming Media at DUJoseph Labrecque
 
Progressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIRProgressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIRJoseph Labrecque
 
Accelerate Service Function Chaining Vertical Solution with DPDK
Accelerate Service Function Chaining Vertical Solution with DPDKAccelerate Service Function Chaining Vertical Solution with DPDK
Accelerate Service Function Chaining Vertical Solution with DPDKOPNFV
 
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...シスコシステムズ合同会社
 
Introduction to H.264 Advanced Video Compression
Introduction to H.264 Advanced Video CompressionIntroduction to H.264 Advanced Video Compression
Introduction to H.264 Advanced Video CompressionIain Richardson
 
SIP Express Media Server SBC application as powerful SBC and SIP toolbox
SIP Express Media Server SBC application as powerful SBC and SIP toolboxSIP Express Media Server SBC application as powerful SBC and SIP toolbox
SIP Express Media Server SBC application as powerful SBC and SIP toolboxstefansayer
 
Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)William Lee
 
Re-identification of Anomized CDR datasets using Social networlk Data
Re-identification of Anomized CDR datasets using Social networlk DataRe-identification of Anomized CDR datasets using Social networlk Data
Re-identification of Anomized CDR datasets using Social networlk DataAlket Cecaj
 
Welcome to IP Surveillance 101
Welcome to IP Surveillance 101Welcome to IP Surveillance 101
Welcome to IP Surveillance 101grantsupplies
 
Timing over packet demarcation
Timing over packet demarcationTiming over packet demarcation
Timing over packet demarcationNir Cohen
 
2011_12_4K research in PSNC
2011_12_4K research in PSNC2011_12_4K research in PSNC
2011_12_4K research in PSNCmglowiak
 
Remote monitoring system
Remote monitoring systemRemote monitoring system
Remote monitoring systemPk Doctors
 
Nosql redis-mongo
Nosql redis-mongoNosql redis-mongo
Nosql redis-mongoibelmonte
 
RTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 Network
RTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 NetworkRTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 Network
RTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 NetworkFranZEast
 
RTSP Protocol Analysis Of A Streaming Thorugh IPv6 Network
RTSP Protocol Analysis Of A Streaming Thorugh IPv6 NetworkRTSP Protocol Analysis Of A Streaming Thorugh IPv6 Network
RTSP Protocol Analysis Of A Streaming Thorugh IPv6 NetworkFranZEast
 
Hello world在那邊?背景說明
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明Wen Liao
 

En vedette (20)

Internationalization(i18n) of Web Page
Internationalization(i18n) of Web PageInternationalization(i18n) of Web Page
Internationalization(i18n) of Web Page
 
High Efficiency Video Coding
High Efficiency Video CodingHigh Efficiency Video Coding
High Efficiency Video Coding
 
Webinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalità
Webinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalitàWebinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalità
Webinar NETGEAR - Prosafe Smart Switch, caratteristiche e funzionalità
 
Streming media server
Streming media serverStreming media server
Streming media server
 
History of Streaming Media at DU
History of Streaming Media at DUHistory of Streaming Media at DU
History of Streaming Media at DU
 
Progressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIRProgressing beyond the Desktop at Universities with Adobe AIR
Progressing beyond the Desktop at Universities with Adobe AIR
 
Accelerate Service Function Chaining Vertical Solution with DPDK
Accelerate Service Function Chaining Vertical Solution with DPDKAccelerate Service Function Chaining Vertical Solution with DPDK
Accelerate Service Function Chaining Vertical Solution with DPDK
 
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
【EPN Seminar Nov.10.2015】 Services Function Chaining Architecture, Standardiz...
 
Introduction to H.264 Advanced Video Compression
Introduction to H.264 Advanced Video CompressionIntroduction to H.264 Advanced Video Compression
Introduction to H.264 Advanced Video Compression
 
SIP Express Media Server SBC application as powerful SBC and SIP toolbox
SIP Express Media Server SBC application as powerful SBC and SIP toolboxSIP Express Media Server SBC application as powerful SBC and SIP toolbox
SIP Express Media Server SBC application as powerful SBC and SIP toolbox
 
Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)
 
Re-identification of Anomized CDR datasets using Social networlk Data
Re-identification of Anomized CDR datasets using Social networlk DataRe-identification of Anomized CDR datasets using Social networlk Data
Re-identification of Anomized CDR datasets using Social networlk Data
 
Welcome to IP Surveillance 101
Welcome to IP Surveillance 101Welcome to IP Surveillance 101
Welcome to IP Surveillance 101
 
Timing over packet demarcation
Timing over packet demarcationTiming over packet demarcation
Timing over packet demarcation
 
2011_12_4K research in PSNC
2011_12_4K research in PSNC2011_12_4K research in PSNC
2011_12_4K research in PSNC
 
Remote monitoring system
Remote monitoring systemRemote monitoring system
Remote monitoring system
 
Nosql redis-mongo
Nosql redis-mongoNosql redis-mongo
Nosql redis-mongo
 
RTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 Network
RTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 NetworkRTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 Network
RTSP Streaming Server - Demo Streaming RTSP Protocol Over IPv6 Network
 
RTSP Protocol Analysis Of A Streaming Thorugh IPv6 Network
RTSP Protocol Analysis Of A Streaming Thorugh IPv6 NetworkRTSP Protocol Analysis Of A Streaming Thorugh IPv6 Network
RTSP Protocol Analysis Of A Streaming Thorugh IPv6 Network
 
Hello world在那邊?背景說明
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明
 

Similaire à Streaming Media Server Setup Manual

Similaire à Streaming Media Server Setup Manual (20)

Icp
IcpIcp
Icp
 
Billion BiPAC 7300NX Router Manual
Billion BiPAC 7300NX Router ManualBillion BiPAC 7300NX Router Manual
Billion BiPAC 7300NX Router Manual
 
Hibernate Reference
Hibernate ReferenceHibernate Reference
Hibernate Reference
 
Hypermedia Telular manual-ver5
Hypermedia Telular manual-ver5Hypermedia Telular manual-ver5
Hypermedia Telular manual-ver5
 
Lfa
LfaLfa
Lfa
 
Httpclient tutorial
Httpclient tutorialHttpclient tutorial
Httpclient tutorial
 
actix lte
actix lteactix lte
actix lte
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 
developersguide.pdf
developersguide.pdfdevelopersguide.pdf
developersguide.pdf
 

Plus de William Lee

Usage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP LanguagesUsage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP LanguagesWilliam Lee
 
Usage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxUsage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxWilliam Lee
 
Usage Note of SWIG for PHP
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHPWilliam Lee
 
Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5 Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5 William Lee
 
Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3William Lee
 
Viewing Android Source Files in Eclipse (Chinese)
Viewing Android Source Files in Eclipse  (Chinese)Viewing Android Source Files in Eclipse  (Chinese)
Viewing Android Source Files in Eclipse (Chinese)William Lee
 
Usage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency WalkerUsage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency WalkerWilliam Lee
 
Usage Note of PlayCap
Usage Note of PlayCapUsage Note of PlayCap
Usage Note of PlayCapWilliam Lee
 
Qt4 App - Sliding Window
Qt4 App - Sliding WindowQt4 App - Sliding Window
Qt4 App - Sliding WindowWilliam Lee
 
GTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App ChooserGTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App ChooserWilliam Lee
 
GTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon ChooserGTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon ChooserWilliam Lee
 
Note of CGI and ASP
Note of CGI and ASPNote of CGI and ASP
Note of CGI and ASPWilliam Lee
 
Moblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) PluginMoblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) PluginWilliam Lee
 
Asterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log RotationAsterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log RotationWilliam Lee
 
L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5William Lee
 
C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)William Lee
 
Notes for SQLite3 Usage
Notes for SQLite3 UsageNotes for SQLite3 Usage
Notes for SQLite3 UsageWilliam Lee
 
Android Storage - StorageManager & OBB
Android Storage - StorageManager & OBBAndroid Storage - StorageManager & OBB
Android Storage - StorageManager & OBBWilliam Lee
 
Study of Chromium OS
Study of Chromium OSStudy of Chromium OS
Study of Chromium OSWilliam Lee
 

Plus de William Lee (20)

Usage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP LanguagesUsage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP Languages
 
Usage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxUsage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on Linux
 
Usage Note of SWIG for PHP
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHP
 
Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5 Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5
 
Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3
 
Viewing Android Source Files in Eclipse (Chinese)
Viewing Android Source Files in Eclipse  (Chinese)Viewing Android Source Files in Eclipse  (Chinese)
Viewing Android Source Files in Eclipse (Chinese)
 
Usage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency WalkerUsage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency Walker
 
Usage Note of PlayCap
Usage Note of PlayCapUsage Note of PlayCap
Usage Note of PlayCap
 
Qt4 App - Sliding Window
Qt4 App - Sliding WindowQt4 App - Sliding Window
Qt4 App - Sliding Window
 
GTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App ChooserGTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App Chooser
 
GTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon ChooserGTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon Chooser
 
Note of CGI and ASP
Note of CGI and ASPNote of CGI and ASP
Note of CGI and ASP
 
Moblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) PluginMoblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) Plugin
 
MGCP Overview
MGCP OverviewMGCP Overview
MGCP Overview
 
Asterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log RotationAsterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log Rotation
 
L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5
 
C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)
 
Notes for SQLite3 Usage
Notes for SQLite3 UsageNotes for SQLite3 Usage
Notes for SQLite3 Usage
 
Android Storage - StorageManager & OBB
Android Storage - StorageManager & OBBAndroid Storage - StorageManager & OBB
Android Storage - StorageManager & OBB
 
Study of Chromium OS
Study of Chromium OSStudy of Chromium OS
Study of Chromium OS
 

Dernier

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Dernier (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Streaming Media Server Setup Manual

  • 1. Streaming Media Server Setup Manual VideoLan / LIVE555 / DSS (Darwin) FFServer (FFmpeg) / Flumotion V.3 William.L wiliwe@gmail.com 2009-09-25
  • 2. Index Revision History................................................................................................................................................. 4 Testing Environment.......................................................................................................................................... 5 How To Setup Streaming Media Testing/Verifying Environment Successfully?.......................................... 6 Streaming Servers .............................................................................................................................................. 7 1. VideoLan Client ..................................................................................................................................... 7 1.1. Supported Container Format for encoding.............................................................................. 7 1.2. Supported Network Protocol ..................................................................................................... 8 1.3. Setup VLC as Streaming Server................................................................................................ 8 1.4. Client Computer Setup............................................................................................................. 10 1.5. Android VLC Remote............................................................................................................... 12 2. LIVE555 Media Server........................................................................................................................ 18 2.1. Supported Container Format for Encoding........................................................................... 18 2.2. Supported Network Protocol ................................................................................................... 18 2.3. Setup........................................................................................................................................... 18 3. DSS - Darwin Streaming Server ......................................................................................................... 20 3.1. Supported Container Format for Encoding........................................................................... 20 3.2. Supported Network Protocol ................................................................................................... 20 3.3. Setup........................................................................................................................................... 20 3.4 Invoking DSS.............................................................................................................................. 29 3.5 Important files and directories of the DSS .............................................................................. 30 4. FFServer - FFmpeg Streaming server................................................................................................ 31 4.1 FFmpeg Configuration File....................................................................................................... 31 4.2. Supported Container Format for Encoding........................................................................... 31 4.3. Supported Network Protocol ................................................................................................... 31 4.4. Setup........................................................................................................................................... 32 5. Flumotion Streaming Server............................................................................................................... 36 5.1. Supported Container Format for Encoding........................................................................... 36 5.2. Supported Network Protocol ................................................................................................... 36 5.3. Setup........................................................................................................................................... 36 Real-Time Streaming Protocol (RTSP).......................................................................................................... 46 HTTP Streaming .............................................................................................................................................. 47 To Create HTTP Streaming Video.......................................................................................................... 47 Limitations of HTTP streaming.............................................................................................................. 47 Comparison between Streaming and Progressive Downloading Media ..................................................... 48 Streamable Media File..................................................................................................................................... 49 1. MP4 ....................................................................................................................................................... 49 1.1. What is MP4? ............................................................................................................................ 49 1.2. MP4 file extensions ................................................................................................................... 50 2. How To Add Hint Track into MP4 & 3GP Files?.............................................................................. 50 2.1 MP4 Files .................................................................................................................................... 50 2.2 3GP Files ..................................................................................................................................... 50
  • 3. RTP Payload Type for Streaming Media ....................................................................................................... 52 SHOUTcast – A Streaming Audio Tech.......................................................................................................... 53 For Android .............................................................................................................................................. 53 References......................................................................................................................................................... 55 01. Video Lan............................................................................................................................................. 55 02. LIVE555 Media Server........................................................................................................................ 55 03. Darwin Streaming Server..................................................................................................................... 55 04. FFServer - FFMpeg Streaming Server................................................................................................. 55 05. Flumotion............................................................................................................................................. 55 06. To Add Ubuntu Universe and Multiverse Repository.......................................................................... 55 07. Stream Server Passing through NAT/Firewall..................................................................................... 55 08. Real-Time Streaming Protocol (RTSP)................................................................................................ 56 09. Session Description Protocol (SDP).................................................................................................... 56 10. Streamable Media Files........................................................................................................................ 56 11. MP4IP .................................................................................................................................................. 56 12. MP4Box............................................................................................................................................... 56 13. SHOUTcast .......................................................................................................................................... 56
  • 4. Revision History Version Number Revision Date Comments v.1 2009-09-25 Initialize this document. v.2 2009-10-12 Add topics : 1. Introduction to Real Time Stream Protocol 2. HTTP Streaming v.3 2009-10-29 Add topics : 1. How To Setup Streaming Media Testing/Verifying Environment Successfully? 2. Streamable Media Files. 3. RTP Payload Type for Streaming Media.
  • 5. Testing Environment Using「Ubuntu 8.04 Hardy Heron LTS」as our working operating system.
  • 6. How To Setup Streaming Media Testing/Verifying Environment Successfully? 1. Use MediaInfo (http://mediaarea.net/MediaInfo) to identify what audio/video codec used by (contained in) the media file going to be streamed. 2. Choose the correct streaming server supporting the file format and audio/video codec of that media file. 3. Confirm that media file is streamable (e.g. if it has Hint Track information) if you want to use RTSP/RTP way to transfer streaming media. 4. Use the right media player with the capability(Audio/Video codec) to play streaming media. 5. Consider that network environment that if there has one or more NATs/firewalls between streaming server and media player. If it does, try to use HTTP streaming way using port 80.
  • 7. Streaming Servers The followings are found open streaming servers. 1. VideoLan Client VLC media player which can be used as a server and as a client to stream and receive network streams. VLC is able to stream all that it can read. VLS (VideoLAN Server), which can stream MPEG-1, MPEG-2 and MPEG-4 files, DVDs, digital satellite channels, digital terrestial television channels and live videos on the network in unicast or multicast. Most of the VLS functionality can now be found VLC. Usage of VLC instead of VLS is advised. Here, we use VLC with streaming functionality as streaming server. 1.1. Supported Container Format for encoding Ogg with MPEG-1/ MPEG-2 ASF with MPGE-4 video MOV with MPGE-4 video MP4 with H.264/MPEG-4 AVC
  • 8. 1.2. Supported Network Protocol HTTP MMS RTP/UDP MMSH 1.3. Setup VLC as Streaming Server Step-01 : Install the following packages through APT tool on server and client computer. 1. VLC 2. VLC-plugin-esd 3. VLC plugin for Mozilla Open Synaptic (System -> Administration -> Synaptic Package Manager). In 「Settings -> Repositories」, make sure you have a「multiverse」repository activated. Command line : #> sudo apt-get update #> sudo apt-get install vlc vlc-plugin-esd mozilla-plugin-vlc Step-02 : Click 「檔案檔案檔案檔案 -> 開啟檔案開啟檔案開啟檔案開啟檔案」 Show off the “開啟檔案開啟檔案開啟檔案開啟檔案…” dialog : Step-03 : In「開啟開啟開啟開啟:」item, to select the video or audio files you wish to playback.
  • 9. Step-4 : Check「快取快取快取快取」 Check「串流串流串流串流/儲存儲存儲存儲存」 Click 「設定設定設定設定」button. Step-5 : Check「Play Locally」so that you can see and hear the output. Check「RTP」to play over a LAN. Fill in Host IP address in「位置位置位置位置」field of RTP item.
  • 10. Step-06 : Click「確定確定確定確定」 1.4. Client Computer Setup Step-01 : Invoke VLC. Click「媒體媒體媒體媒體 -> 開啟網路串流開啟網路串流開啟網路串流開啟網路串流.」 Step-02 : Select「RTP」from the “Protocol” column. You can leave the address section blank.
  • 11. Step-03 : Click「Play」to start to play streaming video.
  • 12. 1.5. Android VLC Remote This application works as a「Remote Control」to control VLC. Step-01 : Download android-vlc-remote-0.2.2.apk from http://android-vlc-remote.googlecode.com/files/android-vlc-remote-0.2.2.apk Step-02 : Install android-vlc-remote-0.2.2.apk using ADB. Step-03 : In the device installed Android, executing Android-VLC-Remote application. It appears as the following : To maximize the VLC display window To view played media file list. To browse the filesystem on VLC
  • 13. The list showing media files had been played. It can browse server’s filesystem. Click mouse left button to show “Setting” interface to set the VLC server’s IP address and port (The default port number is 8080) :
  • 14.
  • 15. Step-04 : In VLC player, click 「設定設定設定設定->偏好偏好偏好偏好設定設定設定設定」to open 「偏好偏好偏好偏好設定設定設定設定」dialog : Click the「界面界面界面界面」item Check the lower-right’s「進階選項進階選項進階選項進階選項」
  • 16. Fill your「Host address」where the VLC server installed. Step-05 : In VLC player, click「設定設定設定設定->新增界面新增界面新增界面新增界面->Web Interface」 Now, Android-VLC-Remote can connect to VLC player. The following is the snapshot of packet capture of communication between Android-VLC-Remote and
  • 17. VLC player. The Host containg VLC player is “192.168.0.132” and the Android device is “192.168.0.175” : Android-VLC-Control send HTTP-Requests for “playlist.xml” and “status.xml” per second. [Tips] 1. You can stream using this method over the Internet relying on the HTTP protocol instead of RTP. Make sure both the client and host have the appropriate ports open on their firewalls. 2. To stream effectively, the client must have all the audio and video codecs present on the host. If they do not, VLC can use transcode to convert the file into something the client can play. 3. UDP streaming methods require MPEG TS encapsulation. The HTTP streaming method can be used with the MPEG PS, MPEG TS, MPEG 1, OGG, RAW or ASF encapsulation.
  • 18. 2. LIVE555 Media Server 「LIVE555 Media Server」is a complete RTSP server application. 2.1. Supported Container Format for Encoding AAC AMR MP3 MPG WAV 2.2. Supported Network Protocol RTSP ( default port : 8554 ) 2.3. Setup Step-01 : To install the following packages through the APT tool : 1. liblivemedia-dev 2. livemedia-utils
  • 19.
  • 20. 3. DSS - Darwin Streaming Server Darwin Streaming Server is an open source project intended for developers who need to stream QuickTime and MPEG-4 media on alternative platforms such as Windows, Linux, and Solaris Darwin Streaming Server is only supported by the open source community and is not eligible for technical support from Apple. Darwin Streaming Server is available as a free download under the Apple Public Source License (http://www.opensource.apple.com/apsl/). 3.1. Supported Container Format for Encoding QuickTime MPEG-1 MPEG-2 MP4 3.2. Supported Network Protocol HTTP ( default port : 80 ) RTSP ( default port : 554 ) RTP RTCP 3.3. Setup Run below commands in your terminal: Step-01 : sudo apt-get update && sudo apt-get upgrade Step-02 : sudo apt-get install build-essential Step-03 : sudo addgroup --system qtss Step-04 : sudo adduser --system --no-create-home --ingroup qtss qtss Step-05 : Download the latest version at http://static.lstoll.net/dss/DarwinStreamingSrvr6.0.3-Linux.deb.gz , and put the download DarwinStreamingSrvr6.0.3-Linux.deb.gz into a directory you like. Step-06 : tar -zxvf DarwinStreamingSrvr6.0.3-Linux.deb.gz Step-07 : sudo dpkg -i DarwinStreamingSrvr6.0.3-Linux.deb
  • 22. The above two console snapshots show the prograss of Darwin installation. Step-08 : If you see Setup Complete! message, you are good to go. Logon to http://ServerName:1220/ using your browser. Username and password is “admin” and “admin”, respectively as the following figure. Step-09 : First logging, the user will be requested to set some configuration as the following figures. <I> Specify a MP3 Broadcast password..
  • 23. <II> This will enable encryption between the administration server and the web client.
  • 24. <III> Specify the location of your media folder. By default this is /usr/local/movies/”.
  • 25. <IV> To allow streaming on port 80 (the same as Apache), then check the box. Click on "Finish" to end the configuration.
  • 26. Once you have finished configuring your streaming server, you will see the following page, which is a snapshot of your streaming server, and the administrative control panel of your streaming server :
  • 27. In main page, you could change configures. (1). The「General Settings」page. It can let user to change “Media Directory” or change administrator’s password.
  • 28. (2). To enable the port for passing through firewall/NAT.
  • 29. The following figure shows pre-installed testing video files under the Media Directory: 3.4 Invoking DSS In console, to execute this command : sudo /usr/local/sbin/DarwinStreamingServer
  • 30. To check if DSS is invoked, executing following commands : netstat -ntulp | grep 554 and ps -aux | grep Darwin 3.5 Important files and directories of the DSS /usr/local/sbin/Darwin Streaming Server Server Software /usr/local/sbin/streamingadminserver.pl Web Frontend /etc/streaming Configuration Dir /etc/streaming/streamingserver.xml Configuration File Server /var/streaming/logs Logs /usr/local/movies Default directory for video files Then, the file /etc/streaming/streamingserver.xml must be given write privledges, otherwise no configuration can be saved : #> sudo chmod 755 /etc/streaming/streamingserver.xml
  • 31. 4. FFServer - FFmpeg Streaming server The FFmpeg project is made of several components: ffmpeg A command line tool to convert one video file format to another. It also supports grabbing and encoding in real time from a TV card. ffserver An HTTP (RTSP is being developed) multimedia streaming server for live broadcasts. Time shifting of live broadcast is also supported. ffplay A simple media player based on SDL and on the FFmpeg libraries. libavcodec A library containing all the FFmpeg audio/video encoders and decoders. Most codecs were developed from scratch to ensure best performance and high code reusability. libavformat A library containing demuxers and muxers for audio/video container formats. libavutil A helper library containing routines common to different parts of FFmpeg. libpostproc A library containing video postprocessing routines. libswscale A library containing video image scaling routines. FFserver receives prerecorded files or FFM streams from some ffmpeg instance as input, then streams them over HTTP/RTSP/RTP. An ffserver instance will listen on some port as specified in the configuration file. You can launch one or more instances of ffmpeg (FFmpeg video converter) and send one or more FFM streams to the port where ffserver is expecting to receive them. Alternately, you can make ffserver launch such ffmpeg instances at startup. 4.1 FFmpeg Configuration File Input streams are called feeds, and each one is specified by a <Feed> section in the configuration file. For each feed you can have different output streams in various formats, each one specified by a <Stream> section in the configuration file. 4.2. Supported Container Format for Encoding AVI ASF FLV SWF(Macromedia Shockwave Flash) Matroska MPEG-TS 4.3. Supported Network Protocol HTTP (default port : 8090) RTSP (default port : 5454)
  • 32. UDP RTP 4.4. Setup Step-01: Install “ffmpeg” package using APT. After installing “ffmpeg” package, you can use “ffserver” and “ffmpeg” commands under console. Step-02 : Furthermore, to finish streaming configuration. <I> HTTP Streaming The following is an example of setting HTTP streaming :
  • 33. [Feed Section] [Stream Section] After writing Ffserver configuration file, execute the commands : #> ffserver -f /DirectoryContainingConfigurationFile/ffserver.conf & #> ffmpeg -i /home/william/QAD-media-files/test.mpg http://localhost:8090/feed1.ffm <Feed feed1.ffm> # You can specify the maximum size of the feed, # where zero means unlimited. Default: FileMaxSize 200K # Only allow connections from localhost to the feed. ACL allow 127.0.0.1 </Feed> <Stream test1.mpg> # coming from live feed 'feed1' Feed feed1.ffm # Format of the stream Format mpeg # Bitrate for the audio stream. Codecs usually support only a few # different bitrates. AudioBitRate 32 # Number of audio channels: 1 = mono, 2 = stereo AudioChannels 1 # Sampling frequency for audio. When using low bitrates, you should # lower this frequency to 22050 or 11025. The supported frequencies # depend on the selected audio codec. AudioSampleRate 44100 # Bitrate for the video stream VideoBitRate 64 # Ratecontrol buffer size VideoBufferSize 40 # Number of frames per second VideoFrameRate 3 # Size of the video frame VideoSize 160x128 </Stream>
  • 34. <II> RTSP Streaming The following is an example of setting RTSP streaming : Step-03 : Client setup for [HTTP] http://FFserverIP:8090/test1.mpg [RTSP] rtsp:// FFserverIP:5454/test1-rtsp.mpg The filename in URL is the one specified in <stream> tag. Step-04 : FFserver supports an HTTP interface which exposes the current status of the server. Simply point your browser to the address of the special status stream specified in the configuration file. For example if you have : then the server will post a page with the status information when the special stream status.html is requested as the following figure : # RTSP examples # You can access this stream with the RTSP URL: # rtsp://localhost:5454/test1-rtsp.mpg # A non-standard RTSP redirector is also created. Its URL is: # http://localhost:8090/test1-rtsp.rtsp #RTSPPort 5454 <Stream test1-rtsp.mpg> Format rtp File "/home/william/QAD-media-files/test1.mpg" </Stream> <Stream status.html> Format status # Only allow local people to get the status ACL allow localhost ACL allow 192.168.0.0 192.168.255.255 </Stream>
  • 35. Tips 1. When you connect to a live stream, most players (WMP, RA, etc) want to buffer a certain number of seconds of material so that they can display the signal continuously. However, ffserver (by default) starts sending data in realtime. This means that there is a pause of a few seconds while the buffering is being done by the player. The good news is that this can be cured by adding a '?buffer=5' to the end of the URL. This means that the stream should start 5 seconds in the past --and so the first 5 seconds of the stream are sent as fast as the network will allow. It will then slow down to real time. This noticeably improves the startup experience. You can also add a 'Preroll 15' statement into the ffserver.conf that will add the 15 second prebuffering on all requests that do not otherwise specify a time. In addition, ffserver will skip frames until a key_frame is found. This further reduces the startup delay by not transferring data that will be discarded. 2. You may want to adjust the MaxBandwidth in the ffserver.conf to limit the amount of bandwidth consumed by live streams. The streams specified in configuration file using <>
  • 36. 5. Flumotion Streaming Server Flumotion is a streaming server product developed by Fluendo, and is written in Python and based on the multimedia framework Gstreamer and Twisted. Flumotion hastwo forms of streaming content: Live streaming and On-Demand streaming. For instance, a radio station might want to broadcast their audio live over the Internet, simultaneously as it is broadcast via FM radio. However, that same radio station might like to provide ondemand access to the archive of their recorded content. It can from Ogg / Vorbis / Theora files. 5.1. Supported Container Format for Encoding ASF QuickTime Ogg OGM Matroska MP4 5.2. Supported Network Protocol HTTP 5.3. Setup When it is going to Flumotion as a multiformat streaming server, it will need at least「gst-plugins-base 0.10.25」,「gst-plugins-good 0.10.17」and「gst-plugins-bad 0.10.14」, some of which are yet due to be released. Step-01 : For Ubuntu Hardy, to add the following line into APT source list file,「/etc/apt/sources.list」: deb http://www.flumotion.net/pkg/ubuntu hardy main Step-02 : To install flumotion, type the following commands : apt-get update && apt-get install flumotion Step-03 : Install Flumotion using APT
  • 37. Step-04 : Add yourself to the flumotion group: sudo adduser <Username> flumotion Step-05 : Make the /etc/flumotion directory readable: sudo chmod a+x /etc/flumotion Step-06 : In the configuration file, add the following tag for streaming files. When it progress installation, it may show the window to ask the user input some data to create a certificate for SSL. <component name="loop-producer-high" type="loop-producer" worker="demo1-looper"> <property name="framerate">25/2</property> <property name="height">284</property> <property name="width">352</property> <property name="location">/srv/flumotion/moto.ogg</property> </component>
  • 38.
  • 39.
  • 40.
  • 41. Step-06 : To start Flumotion, choose the 「Application -> Sound & Video -> Flumotion Streaming Server Administration」 menu item on your panel. : Starting the Configuration Assistant
  • 42. Start to connect to Flumotion Manager Starting a new Manager and Worker
  • 43. The Configuration Assistant's Production Page, Showing Test Inputs We don't need to change anything on the remaining pages, so you can now continue to click Forward until you reach the last page. You will pass pages for Test Video Producer settings, Overlay settings, Test Audio Producer settings, Encoding settings, Theora Encoder settings, Vorbis Encoder settings, Consumption settings (streaming or saving to disk), HTTP Streaming settings, HTTP Streaming (Audio & Video) settings, Content License settings, and then the Summary page.
  • 45. Connected Users Status [Tips] 1. For streaming files, not all file formats can be streamed on demand, because they require client players to download the entire file to obtain enough information for the client to start playing. For instance, files using the AVI container (usually with an .avi extension) cannot be streamed on demand.
  • 46. Real-Time Streaming Protocol (RTSP) The Real-Time Streaming Protocol (RTSP) is an application-level protocol, and establishes and controls either a single or several time-synchronized streams of continuous media such as audio and video. RTSP does not typically deliver the continuous streams itself; the delivery mechanisms are based solely on RTP. No file will be saved in the disk of end user. The streamed media will be played back on the fly when it reach the remote end through network. The idea in RTSP is that it acts as a "network remote control" for multimedia servers. RTSP URL is in form「rtsp://media.example.com:554/twister/audiotrack」, where * rtsp:// is the identifier for TCP rtsp scheme (rtspu:// is used for UDP scheme) * 554 is the assumed port(default port) for Real-Time Streaming Protocol * twister is the name of the presentation * audiotrack is the name of certain stream in the presentation (this is optional) RTSP supports below features : RTP packets can stream over UDP or over TCP. If the client can tolerate packet loss, streaming over UDP can be more efficient than TCP because UDP does not incur the overhead of retransmitting lost packets. The encapsulation of Advanced Streaming Format (ASF) packets in RTP is proprietary. Streaming with RTSP fails if a firewall separates the client and server, and the firewall blocks the ports and protocols that RTSP uses. This problem is especially common with home Internet gateways. Even if the gateway has a built-in RTSP NAT, streaming might fail at times. RTSP has the overhead of requiring multiple requests before playback can begin. However, the client can pipeline many of these requests and send them over a single TCP connection, in which case WMP does not need to block waiting for a response. The biggest issue with RTSP is that the protocol or its necessary ports may be blocked by routers or firewall settings, preventing a device from accessing the stream. As the standard protocol for the Web, though, HTTP is generally accessible.
  • 47. HTTP Streaming This is the simplest and cheapest way to stream video from a website. This way is also called Serverless Streaming or Pseudo Streaming. When a media file is playing, it is progressively downloading media file via HTTP. To Create HTTP Streaming Video 1. Create a video file in a common streaming media format. 2. Upload the file to your web server. 3. Make a simple hyperlink to the video file, or use special HTML tags to embed the video in a web page. Limitations of HTTP streaming 1. HTTP streaming is a good option for websites with modest traffic, i.e. less than about a dozen people viewing at the same time. For heavier traffic a more serious streaming solution should be considered. 2. You can't stream live video, since the HTTP method only works with complete files stored on the server. 3. You can't automatically detect the end user's connection speed using HTTP. If you want to create different versions for different speeds, you need to create a separate file for each speed. 4. HTTP streaming is not as efficient as other methods and will incur a heavier server load.
  • 48. Comparison between Streaming and Progressive Downloading Media Q : What is the difference between streaming video and making video available for progressive download? Which is preferred? A : * The basic difference between streaming video and making it available for progressive downloads is the server used to deliver the content, the time it takes to deliver the content and whether or not a copy of the content stays on the user's machine. * When video is streamed, it is delivered from a streaming media server and is played on the computer using a particular piece of software, such as Windows Media, Real Player or Quicktime. This all occurs rapidly (depending on the speed of the Internet connection and the user's processor). The file remains on the server and is not transferred to the viewer's computer. Events can be streamed live and / or can be archived for later viewing. The url for files hosted on media server may begin with rtsp:// or mms://. * If a file is made available for progressive download, a copy of the file is transferred to the user's computer. The viewer may in some cases begin to start viewing it when the download begins, but will not be able to fast forward or see the whole video until the download is complete. Files for progressive downloads use a regular Web server with a url beginning with http://. Because video files are generally large, this can take a long time. The benefit of a progressive download for video is the quality can be higher; the benefit of progressive downloads for audio is the content can be saved to an individuals iPod or other mp3 player and listened to at their leisure. * Vanderbilt University prefers streaming for video, particularly longer videos, as it is much faster than progressive download and the concern about the alteration or misuse of Vanderbilt videos is greatly reduced as the content remains on the Vanderbilt media server.
  • 49. Streamable Media File Every streamable media file must have the most important information – Hint Track. Hint Track instructs the streaming server to pick media data, encapsulate into packet and then put it onto network. A streaming server just follows instructions provided by Hint Track without knowing the content of the streamable media file. The informations Hint Track provides are put into SDP(Session Description Protocol) in RTSP payload. These informations include codec type, media file header, RTP payload type, the playbacking time, etc. MP4 file without Hint Track MP4 file with Hint Track 1. MP4 1.1. What is MP4? MP4 is a container and streamable format. As any other container format like AVI (.avi), RealMedia (.rm, .rmvb), QuickTime (.mov), MPEG (.mpg, .mpeg), Matroska (.mkv, .mka), OGM (.ogm) it allows you to combine different multimedia streams (mostly audio and video) into one single file. MP4 is a file extension for the container format defined in the Systems Part of the MPEG-4 standard (ISO 14496-1).
  • 50. MP4 supports all kinds of multimedia content (multiple audio streams, video streams, subtitle streams, pictures) and advanced content (called "Rich Media" or "BIFS") like 2D and 3D graphics, user interactivity, DVD-like menus. 1.2. MP4 file extensions MP4 files can have the following extensions: * .mp4 - official extension * .m4v - .mp4 files with the WRONG extension introduced by Apple for video+audio files, .m4v can be safely renamed to .mp4 (.m4v is used in Apple iTunes and iPod) * .m4a - .mp4 files with the WRONG extension introduced by Apple for audio-only files, .m4a can safely be renamed to .mp4 * .m4p - used by Apple iTunes for DRM protected files * .m4e - renamed .sdp files used by Envivio for streaming * .m4v, .mp4v, .cmp, .divx, .xvid, .264 - normally raw mpeg-4 video streams (not inside MP4) * .3gp, .3g2 - used by mobile phones, can also include content not defined for .mp4 (H.263, AMR) 2. How To Add Hint Track into MP4 & 3GP Files? 2.1 MP4 Files 2.1.1) Apple and MPEG4IP offer nice and free tools when it comes to streaming MP4: As a streaming server you can use Apple's Darwin Streaming Server. For live streaming you can use mp4live from MPEG4IP (only for Linux), on Windows you can use MPEGRecorder (which seems to be a port of mp4live). Also have a look at the tools from ViTooKi (opensource Streaming Server, Player and other tools). Another free and opensource MP4 streaming server is available from Catra. For MAC you may use Live Channel. 2.1.2) MP4Box is a MP4 multiplexer and a command line tool. It can import MPEG-4 video, DivX, XviD, 3ivx, h264 etc, audio streams and subtitles into the .mp4 container. The end result is a compliant MP4 stream. It can also extract streams from a .mp4. MP4Box is a command line tool, but can be used with graphical user interfaces such as YAMB. With AAC audio, it should use LATM(Low-overhead MPEG-4 Audio Transport Multiplex) RTP payload type : MP4Box.exe -hint -latm XXX.mp4 Others : MP4Box.exe -hint XXX.mp4 2.2 3GP Files MP4Box commands for 3GP files with A/V codec : <I> AMR+H263 MP4Box.exe –hint -3gp XXX.3gp
  • 52. RTP Payload Type for Streaming Media Codec Type RFC H.263 Video http://www.potaroo.net/ietf/rfc/PDF/rfc2429.pdf H.264 Video http://www.potaroo.net/ietf/rfc/PDF/rfc3984.pdf MPEG-4 Audio/Visual bitstreams Video http://www.potaroo.net/ietf/rfc/PDF/rfc3016.pdf AAC, LC and LTP Audio http://www.potaroo.net/ietf/rfc/PDF/rfc3016.pdf AMR-NB AMR-WB Audio http://www.potaroo.net/ietf/rfc/PDF/rfc3267.pdf
  • 53. SHOUTcast – A Streaming Audio Tech SHOUTcast is server software for streaming media developed by Nullsoft (whoes most famous product is Winamp MP3 player). It allows digital audio content, primarily in MP3 or HE-AAC format, to be broadcast to and from media player software, enabling hobbyists and professionals to create Internet radio networks. It is cross-platform, and freeware. It consists of a client-server model, with each component communicating via a network protocol that intermingles audio data with metadata such as song titles and the station name. It uses HTTP as a transport protocol, although multicast is another option. Shoutcast servers are usually linked to by means of playlist files, which are small text files (usually with extensions .pls or .m3u) that contain the URL of the ShoutCast server. An attempt to visit that URL in a normal Web browser will usually result in a ShoutCast status page. For Android Quoted from a post on Internet: ----------------------------------------------------------------------------------------------------------------------------------- Android (這裡使用的是 1.5)透過一個叫做 android.media.MediaPlayer 的類別來提供撥放串流影音或 本地端影音檔的功能。不過,眾所皆知的,它支援的串流協定以及 codec,相當的有限。我想,這一點 在現在及未來,肯定會受到相當多開發者的注目以及戮力加強。 本文提到的是解決一個特定問題的方式,想解決的是在 Android 上撥放 SHOUTCAST MP3 stream。許 多網路音樂串流都是採用 SHOUTCAST MP3 stream 的方式,但即使 Android 支援了 HTTP 以及 MP3, 而且 SHOUTCAST MP3 stream 的內容幾乎就是 MP3 stream,但透過內建的 MediaPlayer,你仍然無法 撥放。這原因當然是因為 MediaPlayer 沒有處理 SHOUTCAST,即使 SHOUTCAST 的協定和 HTTP 是 那麼的相像。 由於我才接觸 Android 數日,可以說是對 Android 還相當的陌生,不知道除了走原生程式碼這條路外, 還有沒有別的方法(之前有想過,直接處理 SHOUTCAST 協定再自行 decode MP3,但似乎沒有內建的 MP3 decode 介面,或許有 Android 高手可以指點一下),所以設計了一個機制,在不寫任何原生程式碼 的情況下,讓 MediaPlayer 能處理 SHOUTCAST MP3 stream。 這個機制的核心想法是這樣樣子的 - 放置一個 HTTP proxy 介於 MediaPlayer 與 SHOUTCAST server 之間(當然 HTTP proxy 也跑在你的 Android 應用程式之中),這個 HTTP proxy 一手接收 MediaPlayer 的單純 HTTP 請求,另一邊則扮演一個 SHOUTCAST client,接收 SHOUTCAST server 回傳的內容,並 且依據 SHOUTCAST 協定,將回傳內容中的 MP3 stream 剖析出來,回傳給另一邊的 MediaPlayer。 今天實驗了一下,這個機制的確能夠讓 MediaPlayer 撥放 SHOUTCAST 的網路音訊串流。大抵的精神 如上所描述,不過細節處還不少。最重要的大概就是怎麼處理 MediaPlayer 的 HTTP 請求。MediaPlayer 基本上是兩個請求就搞定,一個是 HEAD 一個是 GET。透過 HEAD 它可以判斷究竟是否支援,再透過 接下來的 GET 取得真正的內容。當然,針對這兩個請求,Content-Type 都會是 audio/mpeg,而且千萬
  • 55. References 01. Video Lan Document : http://wiki.videolan.org/Documentation:Documentation VLC Knowledge : http://wiki.videolan.org/Knowledge_Base VLC Streaming HowTo :http://wiki.videolan.org/Documentation:Streaming_HowTo VLC Capability : http://www.videolan.org/vlc/features.html Streaming Capability : http://www.videolan.org/streaming-features.html How to stream on a VLC : http://www.ehow.com/how_5143120_stream-vlc.html Android VLC Remote : http://code.google.com/p/android-vlc-remote/ 02. LIVE555 Media Server http://www.live555.com/mediaServer/ 03. Darwin Streaming Server Main site : http://dss.macosforge.org/ Apple site introducing DSS : http://developer.apple.com/opensource/server/streaming/index.html DSS-6.03 Install : http://www.xtreamlab.net/howtos/broadcast/servers/darwin/howto_setup_darwin_streaming_server_on_lin ux.html DSS-6.03 Install in another way : http://cwshep.blogspot.com/2008/08/darwin-streaming-server-603-on-linux.html DSS Installation and Setup in regular Chinese : http://blog.xuite.net/hsunet0122/life/25320249 04. FFServer - FFMpeg Streaming Server Ffmpeg Wiki : http://wiki.multimedia.cx/index.php?title=Libavcodec 05. Flumotion Official Site : http://www.flumotion.net/ Source Code Download Site : http://www.flumotion.net/src/flumotion/ Introduction to Flumotion Commands : http://blog.gingertech.net/2006/08/02/running-flumotion-on-ubuntu/ Q&A : https://code.fluendo.com/flumotion/trac/wiki/FAQ#when-starting-flumotion-manager-i-get-error-pem-file-e tc-flumotion-default-pem-does-not-exist 06. To Add Ubuntu Universe and Multiverse Repository http://www.ubuntugeek.com/how-to-enable-the-universe-and-multiverse-repositories-in-ubuntu-804-hardy. html 07. Stream Server Passing through NAT/Firewall http://soundscreen.com/streaming/firewall.html
  • 56. 08. Real-Time Streaming Protocol (RTSP) Specification : http://www.potaroo.net/ietf/rfc/PDF/rfc2326.pdf http://www.tml.tkk.fi/Studies/Tik-110.300/1998/Essays/rtsp.html http://www1.cs.columbia.edu/~hgs/rtsp/ http://www.javvin.com/protocolRTSP.html 09. Session Description Protocol (SDP) Specification : http://www.potaroo.net/ietf/rfc/PDF/rfc2327.pdf http://en.wikipedia.org/wiki/Session_Description_Protocol 10. Streamable Media Files http://forum.doom9.org/archive/index.php/t-91113.html http://all-streaming-media.com/streaming-media-faq/faq-mp4-streaming.htm http://en.wikipedia.org/wiki/MPEG-4_Part_14 http://en.wikipedia.org/wiki/ISO_base_media_file_format 11. MP4IP http://karmak.org/archive/2003/05/encoding.html http://www.linuxlinks.com/article/20080713184940503/MPEG4IP.html 12. MP4Box Official Site : http://gpac.sourceforge.net/doc_mp4box.php Ubuntu Manual : http://manpages.ubuntu.com/manpages/intrepid/man1/mp4box.1.html 13. SHOUTcast http://en.wikipedia.org/wiki/SHOUTcast