Skip to content

Commit a91c387

Browse files
committed
general: linux audio extract now considers actual header len
The documentation on page /general/audio-file-format/ section 2. Audio file format reports, that the header is of variable length. Thus, for precise audio data extraction, the header's length must be parsed in order to discard the correct number of bytes. Previously, the code-snippet discarded always 4096 bytes, which would fail when the header length should be ever different. Also, i always like to have easy-to-copy&paste snippets in documentation.
1 parent cc17438 commit a91c387

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

content/docs/wiki/general/audio-file-format.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,21 @@ But the in experiments used encoder did not have an obvious feature to do this.
7676

7777
**We have developed a tool called [teddy](https://github.com/toniebox-reverse-engineering/teddy) to encode and decode these files.**
7878

79-
# Audio file extraction with Linux OS
80-
- Remove Header of the file with ´dd bs=4096 skip=1 if=500304E0 of=trim.ogg´
81-
- then just use ffmpeg to convert it into mp3 ´ffmpeg -i trim.ogg done.mp3´
79+
# Audio file extraction with Linux OS and bash shell
80+
81+
1. read the *header_len* (in hex): `dd status=none if=50012345 bs=1 count=4 | xxd -plain`
82+
2. convert to decimal and add 4 in order to get the length (in decimal) of the whole header
83+
3. read the audio_data into file: `dd if=50012345 bs=1 skip="${header_len}" of=50012345.audio_data.ogg`
84+
4. (optional) convert audio_data from ogg to mp3: `ffmpeg -i 50012345.audio_data.ogg 50012345.audio_data.mp3`
85+
86+
The same procedure as one block of spagetthi code for easier copy&paste:
87+
88+
```bash
89+
inputfile=50012345
90+
header_len="$((4+0x"$(dd status=none if="${inputfile}" bs=1 count=4 | xxd -plain)"))"
91+
dd if="${inputfile}" bs=1 skip="${header_len}" of=${inputfile}.audio_data.ogg
92+
ffmpeg -i "${inputfile}.audio_data.ogg" "${inputfile}.audio_data.mp3"
93+
```
8294

8395
# Audio file extraction with Windows
8496
- Remove Header of the file with: powershell -Command "$in = [System.IO.File]::OpenRead('00000000'); $out = [System.IO.File]::Create('trim.ogg'); $in.Seek(4096, 'Begin') | Out-Null; $in.CopyTo($out); $in.Close(); $out.Close()"

0 commit comments

Comments
 (0)