# ffmpeg -f lavfi -i sine -t 50ms -c:a libopus opus.ogg $ fq -d ogg verbose /opus.ogg |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: /opus.ogg (ogg) 0x0-0x3b0.7 (945) | | | pages[0:3]: 0x0-0x3b0.7 (945) | | | [0]{}: page (ogg_page) 0x0-0x2e.7 (47) 0x0000|4f 67 67 53 |OggS | capture_pattern: "OggS" (valid) 0x0-0x3.7 (4) 0x0000| 00 | . | version: 0 (valid) 0x4-0x4.7 (1) 0x0000| 02 | . | unused_flags: 0 0x5-0x5.4 (0.5) 0x0000| 02 | . | last_page: false 0x5.5-0x5.5 (0.1) 0x0000| 02 | . | first_page: true 0x5.6-0x5.6 (0.1) 0x0000| 02 | . | continued_packet: false 0x5.7-0x5.7 (0.1) 0x0000| 00 00 00 00 00 00 00 00 | ........ | granule_position: 0 0x6-0xd.7 (8) 0x0000| 47 20| G | bitstream_serial_number: 1949835335 0xe-0x11.7 (4) 0x0010|38 74 |8t | 0x0010| 00 00 00 00 | .... | page_sequence_no: 0 0x12-0x15.7 (4) 0x0010| f6 b1 cb 8b | .... | crc: 0x8bcbb1f6 (valid) 0x16-0x19.7 (4) 0x0010| 01 | . | page_segments: 1 0x1a-0x1a.7 (1) | | | segment_table[0:1]: 0x1b-0x1b.7 (1) 0x0010| 13 | . | [0]: 19 segment_size 0x1b-0x1b.7 (1) | | | segments[0:1]: 0x1c-0x2e.7 (19) 0x0010| 4f 70 75 73| Opus| [0]: raw bits segment 0x1c-0x2e.7 (19) 0x0020|48 65 61 64 01 01 38 01 80 bb 00 00 00 00 00 |Head..8........ | | | | [1]{}: page (ogg_page) 0x2f-0x89.7 (91) 0x0020| 4f| O| capture_pattern: "OggS" (valid) 0x2f-0x32.7 (4) 0x0030|67 67 53 |ggS | 0x0030| 00 | . | version: 0 (valid) 0x33-0x33.7 (1) 0x0030| 00 | . | unused_flags: 0 0x34-0x34.4 (0.5) 0x0030| 00 | . | last_page: false 0x34.5-0x34.5 (0.1) 0x0030| 00 | . | first_page: false 0x34.6-0x34.6 (0.1) 0x0030| 00 | . | continued_packet: false 0x34.7-0x34.7 (0.1) 0x0030| 00 00 00 00 00 00 00 00 | ........ | granule_position: 0 0x35-0x3c.7 (8) 0x0030| 47 20 38| G 8| bitstream_serial_number: 1949835335 0x3d-0x40.7 (4) 0x0040|74 |t | 0x0040| 01 00 00 00 | .... | page_sequence_no: 1 0x41-0x44.7 (4) 0x0040| 97 6c ad c0 | .l.. | crc: 0xc0ad6c97 (valid) 0x45-0x48.7 (4) 0x0040| 01 | . | page_segments: 1 0x49-0x49.7 (1) | | | segment_table[0:1]: 0x4a-0x4a.7 (1) 0x0040| 3f | ? | [0]: 63 segment_size 0x4a-0x4a.7 (1) | | | segments[0:1]: 0x4b-0x89.7 (63) 0x0040| 4f 70 75 73 54| OpusT| [0]: raw bits segment 0x4b-0x89.7 (63) 0x0050|61 67 73 0d 00 00 00 4c 61 76 66 35 38 2e 37 36|ags....Lavf58.76| * |until 0x89.7 (63) | | | | | [2]{}: page (ogg_page) 0x8a-0x3b0.7 (807) 0x0080| 4f 67 67 53 | OggS | capture_pattern: "OggS" (valid) 0x8a-0x8d.7 (4) 0x0080| 00 | . | version: 0 (valid) 0x8e-0x8e.7 (1) 0x0080| 04| .| unused_flags: 0 0x8f-0x8f.4 (0.5) 0x0080| 04| .| last_page: true 0x8f.5-0x8f.5 (0.1) 0x0080| 04| .| first_page: false 0x8f.6-0x8f.6 (0.1) 0x0080| 04| .| continued_packet: false 0x8f.7-0x8f.7 (0.1) 0x0090|98 0a 00 00 00 00 00 00 |........ | granule_position: 2712 0x90-0x97.7 (8) 0x0090| 47 20 38 74 | G 8t | bitstream_serial_number: 1949835335 0x98-0x9b.7 (4) 0x0090| 02 00 00 00| ....| page_sequence_no: 2 0x9c-0x9f.7 (4) 0x00a0|e9 35 fc 5b |.5.[ | crc: 0x5bfc35e9 (valid) 0xa0-0xa3.7 (4) 0x00a0| 05 | . | page_segments: 5 0xa4-0xa4.7 (1) | | | segment_table[0:5]: 0xa5-0xa9.7 (5) 0x00a0| ff | . | [0]: 255 segment_size 0xa5-0xa5.7 (1) 0x00a0| 2d | - | [1]: 45 segment_size 0xa6-0xa6.7 (1) 0x00a0| a0 | . | [2]: 160 segment_size 0xa7-0xa7.7 (1) 0x00a0| ff | . | [3]: 255 segment_size 0xa8-0xa8.7 (1) 0x00a0| 3c | < | [4]: 60 segment_size 0xa9-0xa9.7 (1) | | | segments[0:5]: 0xaa-0x3b0.7 (775) 0x00a0| f8 b4 af ca aa e5| ......| [0]: raw bits segment 0xaa-0x1a8.7 (255) 0x00b0|b5 b0 a6 1c b1 7a e9 fe 3a d0 06 85 51 4c e9 29|.....z..:...QL.)| * |until 0x1a8.7 (255) | | 0x01a0| 01 76 27 bd cd 58 7f| .v'..X.| [1]: raw bits segment 0x1a9-0x1d5.7 (45) 0x01b0|c4 99 43 d2 c5 0e 2e 7c 37 cd 37 e0 94 5b 20 5b|..C....|7.7..[ [| * |until 0x1d5.7 (45) | | 0x01d0| f8 b1 72 9a 6a 33 7d 6f 9d d8| ..r.j3}o..| [2]: raw bits segment 0x1d6-0x275.7 (160) 0x01e0|6d d7 fb c5 f3 d9 31 eb 29 39 95 09 9a de b2 79|m.....1.)9.....y| * |until 0x275.7 (160) | | 0x0270| f8 b4 ef 60 f5 8c 7a 50 f2 b5| ...`..zP..| [3]: raw bits segment 0x276-0x374.7 (255) 0x0280|91 66 50 88 48 f2 6c 1d f3 e0 c6 20 5d b4 bf b8|.fP.H.l.... ]...| * |until 0x374.7 (255) | | 0x0370| c3 f9 91 7c d6 41 c9 4d 38 47 db| ...|.A.M8G.| [4]: raw bits segment 0x375-0x3b0.7 (60) 0x0380|0b dc 29 f9 5a 19 ec a3 53 f2 fe 3c a2 75 a2 72|..).Z...S..<.u.r| * |until 0x3b0.7 (end) (60) | | | | | streams[0:1]: 0x2f-NA (0) | | | [0]{}: stream 0x2f-NA (0) | | | serial_number: 1949835335 0x2f-NA (0) | | | packets[0:5]: 0x2f-NA (0) | | | [0]{}: packet (opus_packet) 0x0-0x12.7 (19) | | | type: "head" 0x0-NA (0) 0x000|4f 70 75 73 48 65 61 64 |OpusHead | prefix: "OpusHead" 0x0-0x7.7 (8) 0x000| 01 | . | version: 1 0x8-0x8.7 (1) 0x000| 01 | . | channel_count: 1 0x9-0x9.7 (1) 0x000| 38 01 | 8. | pre_skip: 312 0xa-0xb.7 (2) 0x000| 80 bb 00 00| ....| sample_rate: 48000 0xc-0xf.7 (4) 0x010|00 00 |.. | output_gain: 0 0x10-0x11.7 (2) 0x010| 00| | .| | map_family: 0 0x12-0x12.7 (1) | | | [1]{}: packet (opus_packet) 0x0-0x3e.7 (63) | | | type: "tags" 0x0-NA (0) 0x000|4f 70 75 73 54 61 67 73 |OpusTags | prefix: "OpusTags" 0x0-0x7.7 (8) | | | comment{}: (vorbis_comment) 0x8-0x3e.7 (55) 0x000| 0d 00 00 00 | .... | vendor_length: 13 0x8-0xb.7 (4) 0x000| 4c 61 76 66| Lavf| vendor: "Lavf58.76.100" 0xc-0x18.7 (13) 0x010|35 38 2e 37 36 2e 31 30 30 |58.76.100 | 0x010| 01 00 00 00 | .... | user_comment_list_length: 1 0x19-0x1c.7 (4) | | | user_comments[0:1]: 0x1d-0x3e.7 (34) | | | [0]{}: user_comment 0x1d-0x3e.7 (34) 0x010| 1e 00 00| ...| length: 30 0x1d-0x20.7 (4) 0x020|00 |. | 0x020| 65 6e 63 6f 64 65 72 3d 4c 61 76 63 35 38 2e| encoder=Lavc58.| comment: "encoder=Lavc58.134.100 libopus" 0x21-0x3e.7 (30) 0x030|31 33 34 2e 31 30 30 20 6c 69 62 6f 70 75 73| |134.100 libopus|| | | | [2]{}: packet (opus_packet) 0x0-0x12b.7 (300) | | | type: "audio" 0x0-NA (0) | | | toc{}: 0x0-0x12b.7 (300) | | | config{}: 0x0-0x0.4 (0.5) 0x000|f8 |. | config: 31 0x0-0x0.4 (0.5) | | | mode: "CELT-only" 0x0.5-NA (0) | | | bandwidth: "FB" 0x0.5-NA (0) | | | frame_size: 20 0x0.5-NA (0) 0x000|f8 |. | stereo: false 0x0.5-0x0.5 (0.1) | | | frames_per_packet{}: 0x0.6-0x0.7 (0.2) 0x000|f8 |. | config: 0 0x0.6-0x0.7 (0.2) | | | frames: 1 0x1-NA (0) | | | mode: "1 frame" 0x1-NA (0) 0x000| b4 af ca aa e5 b5 b0 a6 1c b1 7a e9 fe 3a d0| ..........z..:.| data: raw bits 0x1-0x12b.7 (299) 0x010|06 85 51 4c e9 29 01 cf 97 74 f4 80 4d 5b 0b 4a|..QL.)...t..M[.J| * |until 0x12b.7 (end) (299) | | | | | [3]{}: packet (opus_packet) 0x0-0x9f.7 (160) | | | type: "audio" 0x0-NA (0) | | | toc{}: 0x0-0x9f.7 (160) | | | config{}: 0x0-0x0.4 (0.5) 0x000|f8 |. | config: 31 0x0-0x0.4 (0.5) | | | mode: "CELT-only" 0x0.5-NA (0) | | | bandwidth: "FB" 0x0.5-NA (0) | | | frame_size: 20 0x0.5-NA (0) 0x000|f8 |. | stereo: false 0x0.5-0x0.5 (0.1) | | | frames_per_packet{}: 0x0.6-0x0.7 (0.2) 0x000|f8 |. | config: 0 0x0.6-0x0.7 (0.2) | | | frames: 1 0x1-NA (0) | | | mode: "1 frame" 0x1-NA (0) 0x000| b1 72 9a 6a 33 7d 6f 9d d8 6d d7 fb c5 f3 d9| .r.j3}o..m.....| data: raw bits 0x1-0x9f.7 (159) 0x010|31 eb 29 39 95 09 9a de b2 79 ef 2b 26 f1 ed fa|1.)9.....y.+&...| * |until 0x9f.7 (end) (159) | | | | | [4]{}: packet (opus_packet) 0x0-0x13a.7 (315) | | | type: "audio" 0x0-NA (0) | | | toc{}: 0x0-0x13a.7 (315) | | | config{}: 0x0-0x0.4 (0.5) 0x000|f8 |. | config: 31 0x0-0x0.4 (0.5) | | | mode: "CELT-only" 0x0.5-NA (0) | | | bandwidth: "FB" 0x0.5-NA (0) | | | frame_size: 20 0x0.5-NA (0) 0x000|f8 |. | stereo: false 0x0.5-0x0.5 (0.1) | | | frames_per_packet{}: 0x0.6-0x0.7 (0.2) 0x000|f8 |. | config: 0 0x0.6-0x0.7 (0.2) | | | frames: 1 0x1-NA (0) | | | mode: "1 frame" 0x1-NA (0) 0x000| b4 ef 60 f5 8c 7a 50 f2 b5 91 66 50 88 48 f2| ..`..zP...fP.H.| data: raw bits 0x1-0x13a.7 (314) 0x010|6c 1d f3 e0 c6 20 5d b4 bf b8 28 54 9a c2 be 26|l.... ]...(T...&| * |until 0x13a.7 (end) (314) | |