# ffmpeg -f lavfi -i sine -f lavfi -i testsrc=s=4x4:r=1:d=1 -t 10ms -disposition:v attached_pic -f flac test.flac # ffmpeg -f lavfi -i sine -t 10ms -f ogg test.ogg # vorbiscomment -a test.ogg -t METADATA_BLOCK_PICTURE=$(fq -r '.. | select(format=="flac_picture") | tobytes | frombase64' test.flac) # fq '.. | select(format=="vorbis_comment") | tobytes' test.ogg > vorbis-comment-picture $ fq -d vorbis_comment dv vorbis-comment-picture |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: vorbis-comment-picture (vorbis_comment) 0x0-0x11f.7 (288) 0x0000|0d 00 00 00 |.... | vendor_length: 13 0x0-0x3.7 (4) 0x0000| 4c 61 76 66 35 38 2e 37 36 2e 31 30| Lavf58.76.10| vendor: "Lavf58.76.100" 0x4-0x10.7 (13) 0x0010|30 |0 | 0x0010| 02 00 00 00 | .... | user_comment_list_length: 2 0x11-0x14.7 (4) | | | user_comments[0:2]: 0x15-0x11f.7 (267) | | | [0]{}: user_comment 0x15-0x38.7 (36) 0x0010| 20 00 00 00 | ... | length: 32 0x15-0x18.7 (4) 0x0010| 65 6e 63 6f 64 65 72| encoder| comment: "encoder=Lavc58.134.100 libvorbis" 0x19-0x38.7 (32) 0x0020|3d 4c 61 76 63 35 38 2e 31 33 34 2e 31 30 30 20|=Lavc58.134.100 | 0x0030|6c 69 62 76 6f 72 62 69 73 |libvorbis | | | | [1]{}: user_comment 0x39-0x11f.7 (231) 0x0030| e3 00 00 00 | .... | length: 227 0x39-0x3c.7 (4) 0x0030| 4d 45 54| MET| comment: "METADATA_BLOCK_PICTURE=AAAAAAAAAAlpbWFnZS9wbmcAAAA"... 0x3d-0x11f.7 (227) 0x0040|41 44 41 54 41 5f 42 4c 4f 43 4b 5f 50 49 43 54|ADATA_BLOCK_PICT| * |until 0x11f.7 (end) (227) | | |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| picture{}: (flac_picture) 0x0-0x98.7 (153) 0x00|00 00 00 00 |.... | picture_type: "Other" (0) 0x0-0x3.7 (4) 0x00| 00 00 00 09 | .... | mime_length: 9 0x4-0x7.7 (4) 0x00| 69 6d 61 67 65 2f 70 6e| image/pn| mime: "image/png" 0x8-0x10.7 (9) 0x01|67 |g | 0x01| 00 00 00 00 | .... | description_length: 0 0x11-0x14.7 (4) | | | description: "" 0x15-NA (0) 0x01| 00 00 00 04 | .... | width: 4 0x15-0x18.7 (4) 0x01| 00 00 00 04 | .... | height: 4 0x19-0x1c.7 (4) 0x01| 00 00 00| ...| color_depth: 24 0x1d-0x20.7 (4) 0x02|18 |. | 0x02| 00 00 00 00 | .... | number_of_index_colors: 0 0x21-0x24.7 (4) 0x02| 00 00 00 70 | ...p | picture_length: 112 0x25-0x28.7 (4) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| picture_data{}: (png) 0x29-0x98.7 (112) 0x02| 89 50 4e 47 0d 0a 1a| .PNG...| signature: raw bits (valid) 0x29-0x30.7 (8) 0x03|0a |. | | | | chunks[0:4]: 0x31-0x98.7 (104) | | | [0]{}: chunk 0x31-0x49.7 (25) 0x03| 00 00 00 0d | .... | length: 13 0x31-0x34.7 (4) 0x03| 49 48 44 52 | IHDR | type: "IHDR" 0x35-0x38.7 (4) 0x03| 49 | I | ancillary: false 0x35.3-0x35.3 (0.1) 0x03| 48 | H | private: false 0x36.3-0x36.3 (0.1) 0x03| 44 | D | reserved: false 0x37.3-0x37.3 (0.1) 0x03| 52 | R | safe_to_copy: true 0x38.3-0x38.3 (0.1) 0x03| 00 00 00 04 | .... | width: 4 0x39-0x3c.7 (4) 0x03| 00 00 00| ...| height: 4 0x3d-0x40.7 (4) 0x04|04 |. | 0x04| 08 | . | bit_depth: 8 0x41-0x41.7 (1) 0x04| 02 | . | color_type: "rgb" (2) 0x42-0x42.7 (1) 0x04| 00 | . | compression_method: "deflate" (0) 0x43-0x43.7 (1) 0x04| 00 | . | filter_method: "adaptive_filtering" (0) 0x44-0x44.7 (1) 0x04| 00 | . | interlace_method: "none" (0) 0x45-0x45.7 (1) 0x04| 26 93 09 29 | &..) | crc: 0x26930929 (valid) 0x46-0x49.7 (4) | | | [1]{}: chunk 0x4a-0x5e.7 (21) 0x04| 00 00 00 09 | .... | length: 9 0x4a-0x4d.7 (4) 0x04| 70 48| pH| type: "pHYs" 0x4e-0x51.7 (4) 0x05|59 73 |Ys | 0x04| 70 | p | ancillary: true 0x4e.3-0x4e.3 (0.1) 0x04| 48| H| private: false 0x4f.3-0x4f.3 (0.1) 0x05|59 |Y | reserved: true 0x50.3-0x50.3 (0.1) 0x05| 73 | s | safe_to_copy: true 0x51.3-0x51.3 (0.1) 0x05| 00 00 00 01 | .... | x_pixels_per_unit: 1 0x52-0x55.7 (4) 0x05| 00 00 00 01 | .... | y_pixels_per_unit: 1 0x56-0x59.7 (4) 0x05| 00 | . | unit: 0 0x5a-0x5a.7 (1) 0x05| 4f 25 c4 d6 | O%.. | crc: 0x4f25c4d6 (valid) 0x5b-0x5e.7 (4) | | | [2]{}: chunk 0x5f-0x8c.7 (46) 0x05| 00| .| length: 34 0x5f-0x62.7 (4) 0x06|00 00 22 |.." | 0x06| 49 44 41 54 | IDAT | type: "IDAT" 0x63-0x66.7 (4) 0x06| 49 | I | ancillary: false 0x63.3-0x63.3 (0.1) 0x06| 44 | D | private: false 0x64.3-0x64.3 (0.1) 0x06| 41 | A | reserved: false 0x65.3-0x65.3 (0.1) 0x06| 54 | T | safe_to_copy: true 0x66.3-0x66.3 (0.1) 0x06| 78 9c 63 60 60 60 f8 0f c6| x.c```...| data: raw bits 0x67-0x88.7 (34) 0x07|ff 41 14 88 05 64 fc 87 08 22 71 80 44 3d 88 f1|.A...d..."q.D=..| 0x08|bf 81 e1 3f 00 c8 76 13 ed |...?..v.. | 0x08| 2f 76 8a 2a | /v.* | crc: 0x2f768a2a (valid) 0x89-0x8c.7 (4) | | | [3]{}: chunk 0x8d-0x98.7 (12) 0x08| 00 00 00| ...| length: 0 0x8d-0x90.7 (4) 0x09|00 |. | 0x09| 49 45 4e 44 | IEND | type: "IEND" 0x91-0x94.7 (4) 0x09| 49 | I | ancillary: false 0x91.3-0x91.3 (0.1) 0x09| 45 | E | private: false 0x92.3-0x92.3 (0.1) 0x09| 4e | N | reserved: false 0x93.3-0x93.3 (0.1) 0x09| 44 | D | safe_to_copy: false 0x94.3-0x94.3 (0.1) 0x09| ae 42 60 82| | .B`.| | crc: 0xae426082 (valid) 0x95-0x98.7 (4)