mirror of
https://github.com/wader/fq.git
synced 2024-11-23 09:56:07 +03:00
051a70bd4b
All other ranges and slicing uses exclusive end so i think it make sense to make it consistent. Update docs and add additional example for non-byte-aligned field. Also fixes issue showing zero bit ranges as start-NA.
870 lines
24 KiB
Plaintext
870 lines
24 KiB
Plaintext
$ fq -i -d mp3 . test.mp3
|
|
mp3> .headers | ., tovalue, toactual, tosym, type, length?
|
|
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.headers[0:1]:
|
|
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
|
|
0x00|49 44 33 04 00 00 00 00 00 23 54 53 53 45 00 00|ID3......#TSSE..| [0]{}: header (id3v2)
|
|
* |until 0x2c.7 (45) | |
|
|
[
|
|
{
|
|
"frames": [
|
|
{
|
|
"flags": {
|
|
"compression": false,
|
|
"data_length_indicator": false,
|
|
"encryption": false,
|
|
"file_alter_preservation": false,
|
|
"grouping_identity": false,
|
|
"read_only": false,
|
|
"tag_alter_preservation": false,
|
|
"unsync": false,
|
|
"unused0": 0,
|
|
"unused1": 0,
|
|
"unused2": 0
|
|
},
|
|
"id": "TSSE",
|
|
"size": 15,
|
|
"text": "Lavf58.45.100",
|
|
"text_encoding": "utf8"
|
|
}
|
|
],
|
|
"header": {
|
|
"flags": {
|
|
"experimental_indicator": false,
|
|
"extended_header": false,
|
|
"unsynchronisation": false,
|
|
"unused": 0
|
|
},
|
|
"magic": "ID3",
|
|
"revision": 0,
|
|
"size": 35,
|
|
"version": 4
|
|
},
|
|
"padding": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
|
|
}
|
|
]
|
|
null
|
|
null
|
|
"array"
|
|
1
|
|
mp3> .headers[0] | ., type, length?
|
|
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.headers[0]{}: header (id3v2)
|
|
0x00|49 44 33 04 00 00 00 00 00 23 |ID3......# | header{}:
|
|
0x00| 54 53 53 45 00 00| TSSE..| frames[0:1]:
|
|
0x10|00 0f 00 00 03 4c 61 76 66 35 38 2e 34 35 2e 31|.....Lavf58.45.1|
|
|
0x20|30 30 00 |00. |
|
|
0x20| 00 00 00 00 00 00 00 00 00 00 | .......... | padding: raw bits (all zero)
|
|
"object"
|
|
3
|
|
mp3> .headers[-1000] | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> .headers[1000] | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> .headers[1:3] | ., type, length?
|
|
[]
|
|
"array"
|
|
0
|
|
mp3> .headers[0:-1] | ., type, length?
|
|
[]
|
|
"array"
|
|
0
|
|
mp3> .headers[-1000:2000] | ., type, length?
|
|
[
|
|
{
|
|
"frames": [
|
|
{
|
|
"flags": {
|
|
"compression": false,
|
|
"data_length_indicator": false,
|
|
"encryption": false,
|
|
"file_alter_preservation": false,
|
|
"grouping_identity": false,
|
|
"read_only": false,
|
|
"tag_alter_preservation": false,
|
|
"unsync": false,
|
|
"unused0": 0,
|
|
"unused1": 0,
|
|
"unused2": 0
|
|
},
|
|
"id": "TSSE",
|
|
"size": 15,
|
|
"text": "Lavf58.45.100",
|
|
"text_encoding": "utf8"
|
|
}
|
|
],
|
|
"header": {
|
|
"flags": {
|
|
"experimental_indicator": false,
|
|
"extended_header": false,
|
|
"unsynchronisation": false,
|
|
"unused": 0
|
|
},
|
|
"magic": "ID3",
|
|
"revision": 0,
|
|
"size": 35,
|
|
"version": 4
|
|
},
|
|
"padding": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"
|
|
}
|
|
]
|
|
"array"
|
|
1
|
|
mp3> .headers["test"] | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> [.headers[]] | type, length?
|
|
"array"
|
|
1
|
|
mp3> .headers | keys
|
|
[
|
|
0
|
|
]
|
|
mp3> .headers | has("a")
|
|
error: cannot check whether array has a key: a
|
|
mp3> .headers | has(0)
|
|
true
|
|
mp3> .headers | type
|
|
"array"
|
|
mp3> .headers | tonumber
|
|
error: tonumber cannot be applied to: array
|
|
mp3> .headers | tostring
|
|
"[{\"frames\":[{\"flags\":{\"compression\":false,\"data_length_indicator\":false,\"encryption\":false,\"file_alter_preservation\":false,\"grouping_identity\":false,\"read_only\":false,\"tag_alter_preservation\":false,\"unsync\":false,\"unused0\":0,\"unused1\":0,\"unused2\":0},\"id\":\"TSSE\",\"size\":15,\"text\":\"Lavf58.45.100\",\"text_encoding\":\"utf8\"}],\"header\":{\"flags\":{\"experimental_indicator\":false,\"extended_header\":false,\"unsynchronisation\":false,\"unused\":0},\"magic\":\"ID3\",\"revision\":0,\"size\":35,\"version\":4},\"padding\":\"\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\"}]"
|
|
mp3> .headers + ""
|
|
error: cannot add: array ([{"frames":[{"flags":{"co ...]) and string ("")
|
|
mp3> .headers + 1
|
|
error: cannot add: array ([{"frames":[{"flags":{"co ...]) and number (1)
|
|
mp3> .headers._start | ., type, length?
|
|
0
|
|
"number"
|
|
0
|
|
mp3> .headers._stop | ., type, length?
|
|
360
|
|
"number"
|
|
360
|
|
mp3> .headers._len | ., type, length?
|
|
360
|
|
"number"
|
|
360
|
|
mp3> .headers._name | ., type, length?
|
|
"headers"
|
|
"string"
|
|
7
|
|
mp3> .headers._actual | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> .headers._sym | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> .headers._description | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> .headers._path | ., type, length?
|
|
[
|
|
"headers"
|
|
]
|
|
"array"
|
|
1
|
|
mp3> .headers._bits | ., type, length?
|
|
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
|
|
0x00|49 44 33 04 00 00 00 00 00 23 54 53 53 45 00 00|ID3......#TSSE..|.: raw bits 0x0-0x2d (45)
|
|
* |until 0x2c.7 (45) | |
|
|
"string"
|
|
360
|
|
mp3> .headers._bytes | ., type, length?
|
|
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
|
|
0x00|49 44 33 04 00 00 00 00 00 23 54 53 53 45 00 00|ID3......#TSSE..|.: raw bits 0x0-0x2d (45)
|
|
* |until 0x2c.7 (45) | |
|
|
"string"
|
|
45
|
|
mp3> .headers._error | ., type, length?
|
|
null
|
|
"null"
|
|
0
|
|
mp3> .headers._gap | ., type, length?
|
|
false
|
|
"boolean"
|
|
mp3> .headers.a = 1
|
|
error: setpath(["headers","a"]; 1) cannot be applied to {"footers":[],"frames":[{" ...: expected an object but got: array ([{"frames":[{"flags":{"co ...])
|
|
mp3> .headers[0] = 1
|
|
{
|
|
"footers": [],
|
|
"frames": [
|
|
{
|
|
"audio_data": "\u0000\u0000\u0000\u0000\u0000",
|
|
"crc_calculated": "827a",
|
|
"header": {
|
|
"bitrate": 56000,
|
|
"channel_mode": "none",
|
|
"channels": "mono",
|
|
"copyright": 0,
|
|
"emphasis": "none",
|
|
"layer": 3,
|
|
"mpeg_version": "1",
|
|
"original": 0,
|
|
"padding": "not_padded",
|
|
"private": 0,
|
|
"protection_absent": true,
|
|
"sample_count": 1152,
|
|
"sample_rate": 44100,
|
|
"sync": 2047
|
|
},
|
|
"side_info": {
|
|
"granules": [
|
|
[
|
|
{
|
|
"big_values": 0,
|
|
"blocksplit_flag": 0,
|
|
"count1table_select": 0,
|
|
"global_gain": 0,
|
|
"part2_3_length": 0,
|
|
"preflag": 0,
|
|
"region_address1": 0,
|
|
"region_address2": 0,
|
|
"scalefac_compress": 0,
|
|
"scalefac_scale": 0,
|
|
"table_select0": 0,
|
|
"table_select1": 0,
|
|
"table_select2": 0
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"big_values": 0,
|
|
"blocksplit_flag": 0,
|
|
"count1table_select": 0,
|
|
"global_gain": 0,
|
|
"part2_3_length": 0,
|
|
"preflag": 0,
|
|
"region_address1": 0,
|
|
"region_address2": 0,
|
|
"scalefac_compress": 0,
|
|
"scalefac_scale": 0,
|
|
"table_select0": 0,
|
|
"table_select1": 0,
|
|
"table_select2": 0
|
|
}
|
|
]
|
|
],
|
|
"main_data_begin": 0,
|
|
"scfsi0": 0,
|
|
"share": 0
|
|
},
|
|
"tag": {
|
|
"abr_vbr": 0,
|
|
"audiophile_replay_gain": 0,
|
|
"bytes": 599,
|
|
"encoder": "Lavc58.91",
|
|
"encoder_delay": 576,
|
|
"encoder_padding": 1287,
|
|
"frames": 2,
|
|
"header": "Info",
|
|
"lame_ath_type": 0,
|
|
"lame_flags": 0,
|
|
"length": 599,
|
|
"lowpass_filter": 0,
|
|
"misc": 0,
|
|
"mp3_gain": 0,
|
|
"music_crc": 25328,
|
|
"present_flags": {
|
|
"bytes": true,
|
|
"frames": true,
|
|
"lame": false,
|
|
"quality": true,
|
|
"toc": true,
|
|
"unused": 0
|
|
},
|
|
"preset": 0,
|
|
"quality": 0,
|
|
"radio_replay_gain": 0,
|
|
"replay_gain_peak": 0,
|
|
"tag_crc": 23093,
|
|
"tag_revision": 0,
|
|
"toc": [
|
|
0,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255
|
|
],
|
|
"vbr_method": 0
|
|
}
|
|
},
|
|
{
|
|
"audio_data": "\u0007\ufffdÎ3\ufffd\ufffdd\ufffd\ufffd\ufffd\b\u001cX\u001f^\u001f\u0018\u001cF\u0004\u001e\ufffd\ufffd\ufffd.Z\u000f\ufffd;\u0013k\ufffd\ufffd`P\u0014\u0004\u0003\u0002\ufffdD\fNhѣl\u001fx\ufffd\u0010\u000418?\ufffd\u0007Nt\ufffd\ufffd_\ufffdr\ufffd\ufffd\ufffdw.\u000f\ufffd\ufffd\ufffd|\u0010\fJ\u0000\ufffd\ufffd \u0001\ufffd\ufffd\ufffdy\ufffd\ufffdxO\ufffd\u000f)\u0007\\\ufffd7Q`\ufffd\"\ufffdj\ufffd\u001a~\ufffdU3n/\ufffd&\ufffd\ufffd\n$&\u001b=\u0004pT{J\ufffd\u00196\u001e\ufffd&\ufffd\u007f\ufffd\u0014\ufffd\u000b\rb\u007f\ufffd\ufffd\ufffd!F9G\ufffd\t\ufffd*\u001a\n\u0005}\u001e\u0005\u0004H\ufffdg~\ufffd\ufffd\ufffd!\u0013BA/\ufffd\ufffd\ufffdI\ufffdֵ\t\u0004@\ufffd\ufffdJ\ufffd\ufffd\u0011",
|
|
"crc_calculated": "e5b0",
|
|
"header": {
|
|
"bitrate": 64000,
|
|
"channel_mode": "none",
|
|
"channels": "mono",
|
|
"copyright": 0,
|
|
"emphasis": "none",
|
|
"layer": 3,
|
|
"mpeg_version": "1",
|
|
"original": 1,
|
|
"padding": "not_padded",
|
|
"private": 0,
|
|
"protection_absent": true,
|
|
"sample_count": 1152,
|
|
"sample_rate": 44100,
|
|
"sync": 2047
|
|
},
|
|
"side_info": {
|
|
"granules": [
|
|
[
|
|
{
|
|
"big_values": 33,
|
|
"block_type": "start block",
|
|
"blocksplit_flag": 1,
|
|
"count1table_select": 0,
|
|
"global_gain": 151,
|
|
"part2_3_length": 651,
|
|
"preflag": 0,
|
|
"scalefac_compress": 2,
|
|
"scalefac_scale": 0,
|
|
"subblock_gain0": 0,
|
|
"subblock_gain1": 0,
|
|
"subblock_gain2": 0,
|
|
"switch_point": 0,
|
|
"table_select0": 25,
|
|
"table_select1": 9
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"big_values": 77,
|
|
"block_type": "3 short windows",
|
|
"blocksplit_flag": 1,
|
|
"count1table_select": 0,
|
|
"global_gain": 172,
|
|
"part2_3_length": 769,
|
|
"preflag": 0,
|
|
"scalefac_compress": 9,
|
|
"scalefac_scale": 0,
|
|
"subblock_gain0": 0,
|
|
"subblock_gain1": 0,
|
|
"subblock_gain2": 0,
|
|
"switch_point": 0,
|
|
"table_select0": 24,
|
|
"table_select1": 8
|
|
}
|
|
]
|
|
],
|
|
"main_data_begin": 0,
|
|
"scfsi0": 0,
|
|
"share": 0
|
|
}
|
|
},
|
|
{
|
|
"audio_data": "\u0011K6J\b\ufffdX\ufffd \ufffd)R\ufffd\ufffd\ufffd\ufffd\u0013\ufffd@$\ufffd\ufffd#BPV\r\u0018\u0011\u0003AްU`\ufffdDx\ufffdv\n\ufffd?\ufffdN\ufffdr\ufffd\ufffd5*ugb/\ufffdW\ufffd=Ŀ\ufffd\ufffd\u0012LAME3.100\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd",
|
|
"crc_calculated": "61fd",
|
|
"header": {
|
|
"bitrate": 64000,
|
|
"channel_mode": "none",
|
|
"channels": "mono",
|
|
"copyright": 0,
|
|
"emphasis": "none",
|
|
"layer": 3,
|
|
"mpeg_version": "1",
|
|
"original": 1,
|
|
"padding": "padded",
|
|
"private": 0,
|
|
"protection_absent": true,
|
|
"sample_count": 1152,
|
|
"sample_rate": 44100,
|
|
"sync": 2047
|
|
},
|
|
"side_info": {
|
|
"granules": [
|
|
[
|
|
{
|
|
"big_values": 28,
|
|
"block_type": "end",
|
|
"blocksplit_flag": 1,
|
|
"count1table_select": 0,
|
|
"global_gain": 148,
|
|
"part2_3_length": 581,
|
|
"preflag": 0,
|
|
"scalefac_compress": 9,
|
|
"scalefac_scale": 0,
|
|
"subblock_gain0": 0,
|
|
"subblock_gain1": 0,
|
|
"subblock_gain2": 0,
|
|
"switch_point": 0,
|
|
"table_select0": 12,
|
|
"table_select1": 6
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"big_values": 0,
|
|
"blocksplit_flag": 0,
|
|
"count1table_select": 0,
|
|
"global_gain": 210,
|
|
"part2_3_length": 0,
|
|
"preflag": 1,
|
|
"region_address1": 0,
|
|
"region_address2": 0,
|
|
"scalefac_compress": 0,
|
|
"scalefac_scale": 0,
|
|
"table_select0": 0,
|
|
"table_select1": 0,
|
|
"table_select2": 0
|
|
}
|
|
]
|
|
],
|
|
"main_data_begin": 9,
|
|
"scfsi0": 15,
|
|
"share": 0
|
|
}
|
|
}
|
|
],
|
|
"headers": [
|
|
1
|
|
]
|
|
}
|
|
mp3> .headers.a |= empty
|
|
error: delpaths([["headers","a"]]) cannot be applied to {"footers":[],"frames":[{" ...: expected an object but got: array ([{"frames":[{"flags":{"co ...])
|
|
mp3> .headers[0] |= empty
|
|
{
|
|
"footers": [],
|
|
"frames": [
|
|
{
|
|
"audio_data": "\u0000\u0000\u0000\u0000\u0000",
|
|
"crc_calculated": "827a",
|
|
"header": {
|
|
"bitrate": 56000,
|
|
"channel_mode": "none",
|
|
"channels": "mono",
|
|
"copyright": 0,
|
|
"emphasis": "none",
|
|
"layer": 3,
|
|
"mpeg_version": "1",
|
|
"original": 0,
|
|
"padding": "not_padded",
|
|
"private": 0,
|
|
"protection_absent": true,
|
|
"sample_count": 1152,
|
|
"sample_rate": 44100,
|
|
"sync": 2047
|
|
},
|
|
"side_info": {
|
|
"granules": [
|
|
[
|
|
{
|
|
"big_values": 0,
|
|
"blocksplit_flag": 0,
|
|
"count1table_select": 0,
|
|
"global_gain": 0,
|
|
"part2_3_length": 0,
|
|
"preflag": 0,
|
|
"region_address1": 0,
|
|
"region_address2": 0,
|
|
"scalefac_compress": 0,
|
|
"scalefac_scale": 0,
|
|
"table_select0": 0,
|
|
"table_select1": 0,
|
|
"table_select2": 0
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"big_values": 0,
|
|
"blocksplit_flag": 0,
|
|
"count1table_select": 0,
|
|
"global_gain": 0,
|
|
"part2_3_length": 0,
|
|
"preflag": 0,
|
|
"region_address1": 0,
|
|
"region_address2": 0,
|
|
"scalefac_compress": 0,
|
|
"scalefac_scale": 0,
|
|
"table_select0": 0,
|
|
"table_select1": 0,
|
|
"table_select2": 0
|
|
}
|
|
]
|
|
],
|
|
"main_data_begin": 0,
|
|
"scfsi0": 0,
|
|
"share": 0
|
|
},
|
|
"tag": {
|
|
"abr_vbr": 0,
|
|
"audiophile_replay_gain": 0,
|
|
"bytes": 599,
|
|
"encoder": "Lavc58.91",
|
|
"encoder_delay": 576,
|
|
"encoder_padding": 1287,
|
|
"frames": 2,
|
|
"header": "Info",
|
|
"lame_ath_type": 0,
|
|
"lame_flags": 0,
|
|
"length": 599,
|
|
"lowpass_filter": 0,
|
|
"misc": 0,
|
|
"mp3_gain": 0,
|
|
"music_crc": 25328,
|
|
"present_flags": {
|
|
"bytes": true,
|
|
"frames": true,
|
|
"lame": false,
|
|
"quality": true,
|
|
"toc": true,
|
|
"unused": 0
|
|
},
|
|
"preset": 0,
|
|
"quality": 0,
|
|
"radio_replay_gain": 0,
|
|
"replay_gain_peak": 0,
|
|
"tag_crc": 23093,
|
|
"tag_revision": 0,
|
|
"toc": [
|
|
0,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
166,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255,
|
|
255
|
|
],
|
|
"vbr_method": 0
|
|
}
|
|
},
|
|
{
|
|
"audio_data": "\u0007\ufffdÎ3\ufffd\ufffdd\ufffd\ufffd\ufffd\b\u001cX\u001f^\u001f\u0018\u001cF\u0004\u001e\ufffd\ufffd\ufffd.Z\u000f\ufffd;\u0013k\ufffd\ufffd`P\u0014\u0004\u0003\u0002\ufffdD\fNhѣl\u001fx\ufffd\u0010\u000418?\ufffd\u0007Nt\ufffd\ufffd_\ufffdr\ufffd\ufffd\ufffdw.\u000f\ufffd\ufffd\ufffd|\u0010\fJ\u0000\ufffd\ufffd \u0001\ufffd\ufffd\ufffdy\ufffd\ufffdxO\ufffd\u000f)\u0007\\\ufffd7Q`\ufffd\"\ufffdj\ufffd\u001a~\ufffdU3n/\ufffd&\ufffd\ufffd\n$&\u001b=\u0004pT{J\ufffd\u00196\u001e\ufffd&\ufffd\u007f\ufffd\u0014\ufffd\u000b\rb\u007f\ufffd\ufffd\ufffd!F9G\ufffd\t\ufffd*\u001a\n\u0005}\u001e\u0005\u0004H\ufffdg~\ufffd\ufffd\ufffd!\u0013BA/\ufffd\ufffd\ufffdI\ufffdֵ\t\u0004@\ufffd\ufffdJ\ufffd\ufffd\u0011",
|
|
"crc_calculated": "e5b0",
|
|
"header": {
|
|
"bitrate": 64000,
|
|
"channel_mode": "none",
|
|
"channels": "mono",
|
|
"copyright": 0,
|
|
"emphasis": "none",
|
|
"layer": 3,
|
|
"mpeg_version": "1",
|
|
"original": 1,
|
|
"padding": "not_padded",
|
|
"private": 0,
|
|
"protection_absent": true,
|
|
"sample_count": 1152,
|
|
"sample_rate": 44100,
|
|
"sync": 2047
|
|
},
|
|
"side_info": {
|
|
"granules": [
|
|
[
|
|
{
|
|
"big_values": 33,
|
|
"block_type": "start block",
|
|
"blocksplit_flag": 1,
|
|
"count1table_select": 0,
|
|
"global_gain": 151,
|
|
"part2_3_length": 651,
|
|
"preflag": 0,
|
|
"scalefac_compress": 2,
|
|
"scalefac_scale": 0,
|
|
"subblock_gain0": 0,
|
|
"subblock_gain1": 0,
|
|
"subblock_gain2": 0,
|
|
"switch_point": 0,
|
|
"table_select0": 25,
|
|
"table_select1": 9
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"big_values": 77,
|
|
"block_type": "3 short windows",
|
|
"blocksplit_flag": 1,
|
|
"count1table_select": 0,
|
|
"global_gain": 172,
|
|
"part2_3_length": 769,
|
|
"preflag": 0,
|
|
"scalefac_compress": 9,
|
|
"scalefac_scale": 0,
|
|
"subblock_gain0": 0,
|
|
"subblock_gain1": 0,
|
|
"subblock_gain2": 0,
|
|
"switch_point": 0,
|
|
"table_select0": 24,
|
|
"table_select1": 8
|
|
}
|
|
]
|
|
],
|
|
"main_data_begin": 0,
|
|
"scfsi0": 0,
|
|
"share": 0
|
|
}
|
|
},
|
|
{
|
|
"audio_data": "\u0011K6J\b\ufffdX\ufffd \ufffd)R\ufffd\ufffd\ufffd\ufffd\u0013\ufffd@$\ufffd\ufffd#BPV\r\u0018\u0011\u0003AްU`\ufffdDx\ufffdv\n\ufffd?\ufffdN\ufffdr\ufffd\ufffd5*ugb/\ufffdW\ufffd=Ŀ\ufffd\ufffd\u0012LAME3.100\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd",
|
|
"crc_calculated": "61fd",
|
|
"header": {
|
|
"bitrate": 64000,
|
|
"channel_mode": "none",
|
|
"channels": "mono",
|
|
"copyright": 0,
|
|
"emphasis": "none",
|
|
"layer": 3,
|
|
"mpeg_version": "1",
|
|
"original": 1,
|
|
"padding": "padded",
|
|
"private": 0,
|
|
"protection_absent": true,
|
|
"sample_count": 1152,
|
|
"sample_rate": 44100,
|
|
"sync": 2047
|
|
},
|
|
"side_info": {
|
|
"granules": [
|
|
[
|
|
{
|
|
"big_values": 28,
|
|
"block_type": "end",
|
|
"blocksplit_flag": 1,
|
|
"count1table_select": 0,
|
|
"global_gain": 148,
|
|
"part2_3_length": 581,
|
|
"preflag": 0,
|
|
"scalefac_compress": 9,
|
|
"scalefac_scale": 0,
|
|
"subblock_gain0": 0,
|
|
"subblock_gain1": 0,
|
|
"subblock_gain2": 0,
|
|
"switch_point": 0,
|
|
"table_select0": 12,
|
|
"table_select1": 6
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"big_values": 0,
|
|
"blocksplit_flag": 0,
|
|
"count1table_select": 0,
|
|
"global_gain": 210,
|
|
"part2_3_length": 0,
|
|
"preflag": 1,
|
|
"region_address1": 0,
|
|
"region_address2": 0,
|
|
"scalefac_compress": 0,
|
|
"scalefac_scale": 0,
|
|
"table_select0": 0,
|
|
"table_select1": 0,
|
|
"table_select2": 0
|
|
}
|
|
]
|
|
],
|
|
"main_data_begin": 9,
|
|
"scfsi0": 15,
|
|
"share": 0
|
|
}
|
|
}
|
|
],
|
|
"headers": []
|
|
}
|
|
mp3> .headers | setpath(["a"]; 1)
|
|
error: setpath(["a"]; 1) cannot be applied to [{"frames":[{"flags":{"com ...: expected an object but got: array ([{"frames":[{"flags":{"co ...])
|
|
mp3> .headers | setpath([0]; 1)
|
|
[
|
|
1
|
|
]
|
|
mp3> .headers | delpaths([["a"]])
|
|
error: delpaths([["a"]]) cannot be applied to [{"frames":[{"flags":{"com ...: expected an object but got: array ([{"frames":[{"flags":{"co ...])
|
|
mp3> .headers | delpaths([[0]])
|
|
[]
|
|
mp3> ^D
|