From XiphWiki
Revision as of 00:39, 4 November 2004 by (talk)
Jump to: navigation, search

Vorbis over RTP

This page documents current consensus on the RTP payload format for Vorbis audio. This encapsulation is useful for interactive and multicast streaming.


draft-kerr-avt-vorbis-rtp-03 (now expired) was the last spec attempt and serves as the baseline for current work.

Version 04 of the draft is being written using the XML markup defined in RFC2629. Text and HTML versions of the current draft state are available here:


Basically, we pack Vorbis packets into RTP packets; that's been part of the draft for some time. The hard part is achieving reliable header transmission, since RTP is usually used in combination with a no-guaranteed-delivery networking mechanism. Equally important, in multicast the headers can't be prepended on connection the way icecast does with HTTP streams.

The current suggestion (due to Jack) is that we dispense with the chaining feature of Ogg streams, and only allow a single set of vorbis headers per RTP stream. Since RTP is most often used to stream live or at least individual events, this is not a serious limitation. Even in the "simulated live" case encoded files often have the same set of codebooks, and those that do not can be re-encoded on the fly.

The only real drawback is the loss of a metadata update mechanism. This can be resolved either by using a completely separate metadata stream (which we've always wanted to do anyway) or by altering the spec to allow comment header packets to occur outside the headers. In the later case a recording application would need to insert chaining boundaries and duplicate headers at each metadata change. The former offers the client more control over the metadata stream bandwidth.


  • Vorbis packets get packed into RTP packets
  • Header parameters are fixed per stream, so they can be passed in the SDP
 * inline in the SDP?
 * HTTP reference or other protocol?
 * some kind of hash so clients can cache codebooks/parameters
 * inline in the RTP stream should also be allowed
  • Granulepos becomes timestamp (still in samples)


Tor-Einar Jarnbjo has an example implementation that extends the ideas in the 03 draft a bit. Host English Website Navigate:

Beverages Bicycle Parts Bicycles Bidets Billiards Binoculars Bio-technology Products Biscuit Bitumen Blank Records Blanket Blender Blister Cards Boards Boats Body Building Bodyguard Boilers Books Bottles Bowling Boxing Brakes Bread Breast Bricks Ballast Bamboo Bare Wire Barrels Baseball Basketball Basketry Bath Bath Mirror Bath Racks Bathrobe Bathroom & Kitchen Fixture Bathroom Cabinets Bathtub Batteries and Chargers Battery Packs Battery Testers Bean Products Bearing Accessories Bearings Beauty Beauty Equipment Bedding Bedding Set Benzene Beverage Processing Machinery Assembly Athletic Wear ATV Audio Auto Accessories Auto Batteries Auto Bearing Auto Electrical System Auto Electronics Auto Filter Auto Ignition System Auto Lighting System Auto Maintenance Auto Meter Auto Parts Auto Production Line Equipment Auto Starter System Automobile Automobile Stocks Auxiliary Aviation Baby Food Badminton Bag Ball Ball Bearings Alarm Alcohol Aldehyde Alkali Alkene Alkyl Alkyne Alternator Aluminum Pipes Amine Amplifier Amusement Park Angular Contact Ball Bearing Animal Husbandry Antique Imitation Crafts Antiques Anti-static Packaging Apartment [http://www.9995558.com/19index.htm Apparel Apparel Stocks Aquatic Products Art Set Artificial Crafts Arts Asbestos Products Air Treatment Air-Compressing Air-conditioner Air-Separation Alarm Alcohol Aldehyde Alkali Alkene Alkyl Alkyne System Air Freshener Air Conditioning Product Stocks Agrochemicals Abrasives Adapter Accessories Acrylic Fabric Activated Carbon Adapter Adhesive Tape Adhesives Advertising Advertising Materials Aerosols Aggregate [http://www.9995559.com/shiyong.htm Agricultural Packaging Agriculture Agriculture website monitor website monitoring server monitor host monitor website performance Fireworks gemstone globe