Phát triển bởi | Xiph.Org Foundation |
---|---|
Phiên bản ổn định | 1.3.3
/ 7 tháng 11 năm 2017 |
Thể loại | Reference implementation (multiplexer/demultiplexer) |
Giấy phép | BSD-style license[1] |
Website | downloads |
Ogg là định dạng chứa miễn phí, mở được duy trì bởi Xiph.Org Foundation. Những người tạo ra định dạng Ogg nói rằng nó không bị hạn chế bởi các bằng sáng chế phần mềm[2] và được thiết kế để cung cấp cho truyền phát và xử lý hiệu quả đa phương tiện kỹ thuật số chất lượng cao. Tên của nó bắt nguồn từ "ogging", biệt ngữ từ trò chơi máy tính Netrek.[3]
Định dạng Ogg có thể ghép một số luồng độc lập cho âm thanh, video, văn bản (như phụ đề) và siêu dữ liệu.
Trong framework đa phương tiện Ogg, Theora cung cấp lớp video bị mất. Lớp âm thanh được cung cấp phổ biến nhất bởi định dạng Vorbis định hướng âm nhạc hoặc người kế nhiệm Opus. Các định dạng nén âm thanh không mất dữ liệu bao gồm FLAC và OggPCM.
Trước năm 2007, phần mở rộng tên file.ogg đã được sử dụng cho tất cả các file có nội dung sử dụng định dạng bộ chứa Ogg. Từ năm 2007, Xiph.Org Foundation khuyên rằng.ogg chỉ được sử dụng cho các file âm thanh Ogg Vorbis. Xiph.Org Foundation đã quyết định tạo ra một bộ phần mở rộng file và loại phương tiện mới để mô tả các loại nội dung khác nhau, chẳng hạn như.oga cho các file chỉ âm thanh,.ogv cho video có hoặc không có âm thanh (bao gồm Theora) và.ogx cho Ogg đa kênh.[4]
Kể từ ngày 7 tháng 11 năm 2017, phiên bản hiện tại triển khai tham chiếu của Xiph.Org Foundation là libogg 1.3.3.[5] Một phiên bản khác, libogg2, đã được phát triển, nhưng đang chờ viết lại vào năm 2018.[6] Cả hai thư viện phần mềm đều là phần mềm tự do, được phát hành theo Giấy phép BSD mới. Việc thực hiện tham chiếu Ogg đã được tách ra khỏi Vorbis vào ngày 2 tháng 9 năm 2000.[7]
Do định dạng này là tự do và việc triển khai tham chiếu của nó không bị hạn chế liên quan đến bản quyền, các codec khác nhau của Ogg đã được tích hợp vào một số trình phát phương tiện miễn phí và độc quyền khác nhau, cả thương mại và phi thương mại, cũng như trình phát phương tiện di động và Máy thu GPS từ các nhà sản xuất khác nhau.
Đôi khi người ta cho rằng cái tên "Ogg" xuất phát từ nhân vật Nanny Ogg trong tiểu thuyết Discworld của Terry Pratchett, nhưng các nhà phát triển Ogg nói rằng điều đó không đúng. Ogg có nguồn gốc từ "ogging", biệt ngữ từ trò chơi máy tính Netrek, có nghĩa là làm một cái gì đó mạnh mẽ, có thể mà không xem xét đến việc tiêu tốn tài nguyên trong tương lai. Khi mới thành lập, dự án Ogg được cho là có phần tham vọng với sức mạnh của phần cứng PC thời đó.[8] Tuy nhiên, để trích dẫn cùng một tài liệu tham khảo: "Vorbis, mặt khác được đặt theo tên của nhân vật Terry Pratchett từ cuốn sách Các vị thần nhỏ ".
Dự án Ogg Vorbis bắt đầu vào năm 1993. Ban đầu nó được đặt tên là "Squish" nhưng tên đó đã được đăng ký nhãn hiệu, vì vậy dự án đã trải qua một sự thay đổi tên. Tên mới, "OggSquish", được sử dụng cho đến năm 2001 khi nó được đổi lại thành "Ogg". Ogg từ đó đã đề cập đến định dạng chứa, hiện là một phần của dự án đa phương tiện Xiph.org lớn hơn. Ngày nay, "Squish" (hiện được gọi là "Vorbis") đề cập đến một định dạng mã hóa âm thanh cụ thể thường được sử dụng với định dạng chứa Ogg.[9]
Định dạng dòng bit "Ogg", dẫn đầu bởi Xiph. Org Foundation, đã được tạo ra như là một khuôn khổ của một sáng kiến lớn hơn nhằm phát triển một bộ các thành phần để mã hóa và giải mã nội dung đa phương tiện, có sẵn miễn phí và có thể tự do triển khai lại trong phần mềm.
Định dạng bao gồm các khối dữ liệu được gọi là "trang Ogg". Mỗi trang bắt đầu bằng các ký tự, "OggS", để xác định file là định dạng Ogg.
Một "số sê-ri" và "số trang" trong tiêu đề trang xác định mỗi trang là một phần của một loạt các trang tạo thành một dòng bit. Nhiều luồng bit có thể được ghép trong file trong đó các trang từ mỗi luồng bit được sắp xếp theo thời gian tìm kiếm của dữ liệu được chứa. Dòng bit cũng có thể được thêm vào các file hiện có, một quá trình được gọi là "chaining", để làm cho dòng bit được giải mã theo trình tự.
Một thư viện được cấp phép BSD, được gọi là "libvorbis", có sẵn để mã hóa và giải mã dữ liệu từ các luồng "Vorbis". Việc triển khai Ogg độc lập được sử dụng trong một số dự án như RealPlayer và một bộ các bộ lọc DirectShow.[10]
Mogg, "Multi-Track-Single-Logical-Stream Ogg-Vorbis", là định dạng file Ogg đa kênh hoặc đa track.
Sau đây là cách bố trí trường của tiêu đề trang Ogg:
Bit | Giá trị | Cờ | Loại trang |
---|---|---|---|
0 | 0x01 | Tiếp tục | Gói đầu tiên trên trang này là sự tiếp nối của gói trước đó trong luồng bit logic. |
1 | 0x02 | BOS | Bắt đầu dòng. Trang này là trang đầu tiên trong dòng bit logic. Cờ BOS phải được đặt trên trang đầu tiên của mỗi dòng bit logic và không được đặt trên bất kỳ trang nào khác. |
2 | 0x04 | EOS | Kết thúc dòng. Trang này là trang cuối cùng trong dòng bit logic. Cờ EOS phải được đặt trên trang cuối cùng của mỗi dòng bit logic và không được đặt trên bất kỳ trang nào khác. |
Các phân đoạn cung cấp một cách để nhóm các phân đoạn thành các gói, là các đơn vị dữ liệu có ý nghĩa cho bộ giải mã. Khi độ dài của đoạn được chỉ định là 255, điều này cho biết rằng đoạn sau sẽ được nối với đoạn này và là một phần của cùng một gói. Khi độ dài của phân đoạn là 0-254, điều này cho thấy phân khúc này là phân khúc cuối cùng trong gói này. Trong đó độ dài của gói là bội số của 255, đoạn cuối cùng là độ dài 0.
Trường hợp gói cuối cùng tiếp tục ở trang tiếp theo, giá trị phân đoạn cuối cùng là 255 và cờ tiếp tục được đặt ở trang sau để chỉ ra rằng bắt đầu của trang mới là phần tiếp theo của trang cuối.
VorbisVer là định dạng Siêu dữ liệu cấp cơ sở ban đầu được tạo để sử dụng với Ogg Vorbis. Nó đã được áp dụng trong các thông số kỹ thuật của đóng gói Ogg cho Xiph khác. Codec Org bao gồm Theora, Speex và FLAC. VorbisVer là cơ chế đơn giản nhất và được hỗ trợ rộng rãi nhất để lưu trữ siêu dữ liệu với Xiph. Codec Org.[11]
Các cơ chế hiện có và đề xuất khác là:[12]
Dự án Ogg bắt đầu với gói nén âm thanh đơn giản như một phần của dự án lớn hơn vào năm 1993. Phần mềm ban đầu được đặt tên là Squish nhưng do nhãn hiệu thương mại hiện có, nó đã được đổi tên thành OggSquish. Tên này sau đó đã được sử dụng cho toàn bộ dự án Ogg. Vào năm 1997, Xiphophorus OggSquish được mô tả là "một nỗ lực vừa tạo ra định dạng âm thanh nén linh hoạt cho các ứng dụng âm thanh hiện đại cũng như cung cấp định dạng âm thanh đầu tiên phổ biến trên mọi nền tảng máy tính hiện đại".[13] OggSquish là vào năm 2000 được gọi là "một nhóm của một số dự án xử lý tín hiệu và đa phương tiện có liên quan". Năm 2000, hai dự án đã được phát triển tích cực để phát hành theo kế hoạch: định dạng Ogg Vorbis và libvorbis - triển khai tham chiếu của Vorbis. Nghiên cứu cũng bao gồm công việc về video trong tương lai và mã hóa âm thanh lossless.[14][15][16][17] Năm 2001, OggSquish được đổi tên thành Ogg và nó được mô tả là "chiếc ô cho một nhóm các dự án xử lý tín hiệu và đa phương tiện liên quan".[18] Ogg đã đại diện cho định dạng file, như là một phần của dự án đa phương tiện Xiph.org lớn hơn. Squish trở thành tên của một trong những codec Ogg. Năm 2009, Ogg được mô tả là "định dạng chứa đa phương tiện và định dạng luồng và file gốc cho các codec đa phương tiện Xiph.org".[19]
Việc thực hiện tham chiếu Ogg đã được tách ra khỏi Vorbis vào ngày 2 tháng 9 năm 2000.
Vào tháng 5 năm 2003, hai RFC Internet đã được xuất bản liên quan đến định dạng. Dòng bit Ogg được định nghĩa trong RFC 3533 (được phân loại là 'thông tin') và loại nội dung Internet của nó (application/ogg
) trong RFC 3534 (tức là vào năm 2006 tính đến năm 2006[cập nhật], một giao thức chuẩn được đề xuất). Vào tháng 9 năm 2008, RFC 3534 đã bị RFC 5334 thay thế, đã thêm các loại nội dung video/ogg
, audio/ogg
và tên file.ogx,.ogv,.oga,.spx.
Năm 2002, việc thiếu hỗ trợ video chính thức trong Ogg dẫn đến việc tạo định dạng file OGM, một hack trên Ogg cho phép nhúng video từ khung Microsoft DirectShow vào trình bao bọc dựa trên Ogg. OGM ban đầu chỉ được hỗ trợ bởi các công cụ chỉ dành cho Windows nguồn đóng, nhưng code-base sau đó đã được mở. Sau đó, hỗ trợ video (và phụ đề) đã chính thức được chỉ định cho Ogg nhưng theo cách không tương thích với OGM. Một cách độc lập, định dạng bộ chứa Matroska đạt đến độ chín và cung cấp một giải pháp thay thế cho những người quan tâm đến việc kết hợp âm thanh video Vorbis và codec video tùy ý. Do đó, OGM không còn được hỗ trợ hoặc phát triển và chính thức không được Xiph.org khuyến khích.[20] Ngày nay, video trong Ogg được tìm thấy với phần mở rộng file.ogv, được chỉ định chính thức và được hỗ trợ chính thức. Phần mềm và codec hỗ trợ các tệp.ogm có sẵn miễn phí.[21]
Mặc dù Ogg đã không đạt được sự phổ biến như của các tiêu chuẩn MPEG[22][23] (ví dụ: MP3/MP4), kể từ năm 2006tính đến năm 2006[cập nhật], nó thường được sử dụng để mã hóa nội dung miễn phí (như âm nhạc miễn phí, đa phương tiện trong các dự án Wikimedia Foundation và các file Creative Commons) và đã bắt đầu được hỗ trợ bởi một số ít người chơi âm thanh kỹ thuật số. Cũng hỗ trợ định dạng Ogg là nhiều công cụ trò chơi video phổ biến, bao gồm Doom 3, Unreal Tourathon 2004, Halo: Combat Evolve, Jets n Guns, Mafia: The City of Lost Heaven, Myst IV: Revelation, Stepmania, Serious Sam: The Second Encounter, Lineage 2, Vendetta Online, Battlefield 2 và Grand Theft Auto, cũng như các file âm thanh của trò chơi dựa trên Java, Minecraft. Bộ giải mã Vorbis phổ biến hơn có hỗ trợ tích hợp trên nhiều trình phát phần mềm và các tiện ích mở rộng có sẵn cho hầu hết các phần còn lại.
Ngày 16 tháng 5 năm 2007, Tổ chức Phần mềm Tự do đã bắt đầu chiến dịch tăng cường sử dụng Vorbis "như một sự thay thế âm thanh vượt trội về mặt đạo đức, pháp lý và kỹ thuật cho định dạng MP3 độc quyền."[24] Mọi người cũng được khuyến khích hỗ trợ chiến dịch bằng cách thêm nút web vào trang web hoặc blog của họ. Đối với những người không muốn tải xuống và sử dụng trình phát Ogg (VLC) được đề xuất của FSF, Xiph. Org Foundation đã có một codec chính thức[25] cho các ứng dụng dựa trên QuickTime trong Windows và Mac OS X, chẳng hạn như trình phát iTunes và ứng dụng iMovie; và người dùng Windows có thể cài đặt codec Ogg Windows Media Player.[26]
Đến ngày 30/6/2009, bộ chứa Ogg, thông qua việc sử dụng Theora và Vorbis, là định dạng bộ chứa duy nhất có trong trình duyệt web Firefox 3.5 của các phần tử HTML 5 < video>
và <audio>
.[27][28] Điều này phù hợp với đề xuất ban đầu được nêu, nhưng sau đó đã bị xóa khỏi đặc tả dự thảo HTML 5 (xem tranh cãi Ogg).
Ngày 3/3/2010, một phân tích kỹ thuật của nhà phát triển FFmpeg rất quan trọng về khả năng mục đích chung của Ogg là định dạng chứa đa phương tiện.[29] Trong một phản ứng dài, người tạo ra Ogg đã bác bỏ những tuyên bố này.[30]
Ogg chỉ là một định dạng container. Âm thanh hoặc video thực tế được mã hóa bởi codec được lưu trữ bên trong một kho chứa Ogg. Các kho chứa Ogg có thể chứa các luồng được mã hóa bằng nhiều codec, ví dụ: file video có âm thanh chứa dữ liệu được mã hóa bởi cả codec âm thanh và codec video.
Là định dạng chứa, Ogg có thể nhúng âm thanh và video ở các định dạng khác nhau [31][32] (như Dirac, MNG, CELT, MPEG-4, MP3 và các loại khác) nhưng Ogg thường được sử dụng các codec miễn phí Xiph.org sau đây:
3.3 Ogging: This is the art of killing a carrier, or potential carrier, by a suicide run.
|mailinglist=
(trợ giúp)
This library was never released and now looks like it needs to be redesigned.Đã bỏ qua tham số không rõ
|mailinglist=
(trợ giúp)
At the time Ogg was starting out, most personal computers were i386s and the i486 was new. I remember thinking about the algorithms I was considering, "Whoa, that's heavyweight. People are going to need a 486 to run that..." While the software ogged the music, there wasn't much processor left for anything else.
|author=
và |last=
(trợ giúp)Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp); Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp)
|author=
và |last=
(trợ giúp)Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp); Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp)
|author=
và |last=
(trợ giúp)Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp); Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp)
|author=
và |last=
(trợ giúp)Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp); Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp)
|author=
và |last=
(trợ giúp)Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp); Đã định rõ hơn một tham số trong |author=
và |last=
(trợ giúp)
at best incomplete and at worst completely broken. In any case, it is not an "official" Xiph spec/codec