Skip to content

Instantly share code, notes, and snippets.

@ohac
Last active April 23, 2024 06:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ohac/321447ef2d4a134135a3a45773c70ae6 to your computer and use it in GitHub Desktop.
Save ohac/321447ef2d4a134135a3a45773c70ae6 to your computer and use it in GitHub Desktop.
MQA ilke encoder/decoder using steghide, ffmpeg and sox
#!/bin/bash
bfn=foo
codec=flac
hz=48000
#hz=44100
thz=24000
#thz=22050
workdir=work_dec
sfn=${bfn}_${thz}_steg.wav
ifn=$workdir/${bfn}_$hz.wav
tfn=${bfn}_$hz.$codec
loglevel="-loglevel quiet"
mkdir -p $workdir
# ステガノグラフィを解く
diffcodec=opus
rm -f $workdir/diff.$diffcodec
steghide extract -p '' -sf $sfn -xf $workdir/diff.$diffcodec
# サンプリング周波数を復元する
ffmpeg -hide_banner $loglevel -i $sfn -acodec pcm_s24le -ar $hz $ifn -y
# ミックスする
ffmpeg -hide_banner $loglevel -i $workdir/diff.$diffcodec $workdir/diff.flac -y
sox -m -v 1 $ifn -v 1 $workdir/diff.flac $tfn
#!/bin/bash
bfn=foo
codec=wav
fn=$bfn.flac
hz=48000
#hz=44100
thz=24000
#thz=22050
workdir=work_enc
tfn=$workdir/${bfn}_$thz.wav
sfn=${bfn}_${thz}_steg.wav
ifn=$workdir/${bfn}_$hz.$codec
loglevel="-loglevel quiet"
mkdir -p $workdir
# サンプリング周波数を半分にする
ffmpeg -hide_banner $loglevel -i $fn -acodec pcm_s16le -ar $thz $tfn -y
#ffprobe -hide_banner $tfn
# サンプリング周波数を復元する
ffmpeg -hide_banner $loglevel -i $tfn -acodec pcm_s24le -ar $hz $ifn -y
# 符号反転しミックスして差分を作成する
sox -v -1 $ifn $workdir/neg.$codec
sox -m -v 1 $fn -v 1 $workdir/neg.$codec $workdir/diff.$codec
# 差分を不可逆圧縮する
diffcodec=opus
ffmpeg -hide_banner $loglevel -i $workdir/diff.$codec -ab 16K \
$workdir/diff.$diffcodec -y
# ステガノグラフィにする
rm -f $sfn
steghide embed -p '' -Z -N -K -e none -ef $workdir/diff.$diffcodec -cf $tfn \
-sf $sfn
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment