How to transcode to HE-AAC in iSub
Posted: Fri May 25, 2012 12:17 pm
Hi guys,
I thought it would be time to do a tutorial for transcoding to HE-AAC with ffmpeg and iSub. This has been discussed over and over again so here we go:
First of all: this doesn't work in Subsonic 4.6 since a change in the transcoding engine. The streams start to play and then sometime just stop before they should. I hope this gets fixed in 4.7. So what we need is Subsonic 4.5
I did this on a rather clean Debian Squeeze (OpenMediaVault), building in Ubuntu should work the same way.
We'll need a lot of files to let's go to the tmp folder first:
prerequisites:
LibAACplus
FFMPEG
Move to subsonic transcode folder
Make wrapper script
insert:
make executable
So what does this script? Several things, according to the bitrate asked by iSub:
Bitrate 64 - 128 gets you HE-AAC files with half the bitrate set. So when you tell iSub to transcode to 128kbit you'll get 64kbit HE-AAC. For 64kbit you'll get 32kbit HE-AAC.
Bitrate 160 - 256 gets you MP3 with bitrates 160kbit - 256kbit.
Bitrate 320 gives you the original file without transcoding.
I set my iSub to Wifi: 320 and 3G: 128 and get the original files in Wifi and HE-AAC with 64kbit in 3G.
finally the subsonic transcoding:
m4a > aac | m4a | aac | wrapper.sh %b %s
mp3 > aac | mp3 | aac | wrapper.sh %b %s
flac > aac | flac | aac | wrapper.sh %b %s
Happy streaming!
kingmos
I thought it would be time to do a tutorial for transcoding to HE-AAC with ffmpeg and iSub. This has been discussed over and over again so here we go:
First of all: this doesn't work in Subsonic 4.6 since a change in the transcoding engine. The streams start to play and then sometime just stop before they should. I hope this gets fixed in 4.7. So what we need is Subsonic 4.5
I did this on a rather clean Debian Squeeze (OpenMediaVault), building in Ubuntu should work the same way.
We'll need a lot of files to let's go to the tmp folder first:
- Code: Select all
# cd /tmp
prerequisites:
- Code: Select all
# sudo apt-get install autoconf libtool make git yasm pkg-config automake libavcodec52
LibAACplus
- Code: Select all
# wget http://217.20.164.161/~tipok/aacplus/libaacplus-2.0.2.tar.gz
# tar -xvf libaacplus-2.0.2.tar.gz
# cd libaacplus-2.0.2
# ./autogen.sh --enable-shared
# make
# sudo make install
# cd ..
FFMPEG
- Code: Select all
# git clone git://source.ffmpeg.org/ffmpeg.git
# cd ffmpeg
# ./configure --enable-gpl --enable-pthreads --enable-libaacplus --enable-nonfree
# make
Move to subsonic transcode folder
- Code: Select all
# mv ffmpeg /var/subsonic/transcode/ffmpeg_heaac
Make wrapper script
- Code: Select all
# cd /var/subsonic/transcode/
# nano wrapper.sh
insert:
- Code: Select all
#!/bin/sh
NAME=wrapper.sh
IFS=$''
S=$2
BITRATE=$1k
BITRATEAAC=`expr $1 / 2`k
if [ $1 -eq 320 ]
#pipe
then cat "$2"
elif [ $1 -le 128 ]
#he-aac
then /var/subsonic/transcode/ffmpeg_heaac -v warning -i "$2" -f adts -vn -acodec libaacplus -ar 44100 -ab $BITRATEAAC -ac 2 -
#mp3
else /var/subsonic/transcode/ffmpeg -v warning -i "$2" -ab $BITRATE -v 0 -f mp3 -
fi
make executable
- Code: Select all
# chmod +x wrapper.sh
So what does this script? Several things, according to the bitrate asked by iSub:
Bitrate 64 - 128 gets you HE-AAC files with half the bitrate set. So when you tell iSub to transcode to 128kbit you'll get 64kbit HE-AAC. For 64kbit you'll get 32kbit HE-AAC.
Bitrate 160 - 256 gets you MP3 with bitrates 160kbit - 256kbit.
Bitrate 320 gives you the original file without transcoding.
I set my iSub to Wifi: 320 and 3G: 128 and get the original files in Wifi and HE-AAC with 64kbit in 3G.
finally the subsonic transcoding:
m4a > aac | m4a | aac | wrapper.sh %b %s
mp3 > aac | mp3 | aac | wrapper.sh %b %s
flac > aac | flac | aac | wrapper.sh %b %s
Happy streaming!
kingmos