P2P FUSION DEV. CONFERENCE 2008
Ali Abbas 1
Video Processing Tools
Participants:Delft University of Technology
13th Nov 2008
P2P FUSION DEV. CONFERENCE 2008
Outline
• Video on Demand (VoD)
• Live streaming
• Conclusion
• Future Work
Ali Abbas 213th Nov 2008
P2P FUSION DEV. CONFERENCE 2008
13th Nov 2008 Ali Abbas 3
Video processing 1: multirate VoD (1)• Problem:
– Single bitrate – Lower than needed– Higher than the download engine
• Solution:– Download the video at multiple rates
– Always download the lowest quality
– Switch to a lower rate/quality when needed
– Switch to a higher rate/quality when possible
• Flicker-free switching presents technical video-encoding difficulty
• Solution to this: modify encoding such that it is based on time and not on Groups of Pictures (GOPs)
P2P FUSION DEV. CONFERENCE 2008
1st Sept 2008 Dick Epema (WP2) 4
Video processing 1: multirate VoD (2)
• A controller checks the sizes of the buffers of different video qualities and based on these, forwards the video of a certain quality to the video player
P2P FUSION DEV. CONFERENCE 2008
• Need all data in order
• Cannot distribute hashes beforehand
• .torrent/.tstream contains public key
• Verify data with signatures, instead of hashes.– Included in the pieces
13th Nov 2008 Ali Abbas 5
Live Streaming
P2P FUSION DEV. CONFERENCE 2008
13th Nov 2008 Ali Abbas 6
• Unlike BT based file download, order does matter for VoD/Live Streaming
• Real-Time based constraints: Pieces needed in a specific order and on time.
• Bandwidth constraints: Download speed >= Video speed.
BitTorrent Modification
P2P FUSION DEV. CONFERENCE 2008
Conclusion
13th Nov 2008 Ali Abbas 7
• Respects BT properties: – Easy to modify BT clients– Efficient data exchange– Encourages uploading
• Respects Streaming properties:– Download video in-order for playback– Codec-agnostic– Video-on-Demand and Live video
P2P FUSION DEV. CONFERENCE 2008
8
Research Work in Progress
Explore video clipping by means of partial downloading + local clipping of videos (integrated with multi-rate VoD)
13th Nov 2008 Ali Abbas
P2P FUSION DEV. CONFERENCE 2008
13th Nov 2008 Ali Abbas 9
s = Session()Tdef =TorrentDef.load('bla.torrent')d = s.start_download(tdef)
• Session = Tribler instance• TorrentDef = definition of a torrent• d = class Download = download in progress
APIExample: Download
P2P FUSION DEV. CONFERENCE 2008
13th Nov 2008 Ali Abbas 10
API: Download ConfigurationWhere is the content saved to?
• A DownloadStartupConfig instance defines how a torrent is downloaded:
– Normal/video-on-demand mode
– Up/download rate limits
– Where to save data
P2P FUSION DEV. CONFERENCE 2008
Video On Demand
13th Nov 2008 Ali Abbas 11
Simple: just a mode of downloaddscfg = DownloadStartupConfig()dscfg.set_video_start_callback( vod_ready_callback ) d = s.start_download(tdef,dscfg)
def vod_ready_callback(d,mimetype,stream,filename):
# Called by new threadIf filename: videoplayer.play_file(filename)else: videoplayer.play_stream(mimetype,stream)
P2P FUSION DEV. CONFERENCE 2008
13th Nov 2008 Ali Abbas 12