blob: e5f98e34edce3877381d4bc3a5751e0a7cf655d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
#!/bin/sh
# convert recordings to as mp3 audio only
# version 1.1.1
# usage:
# first parameter must be %DIR%/%FILE% of the recording
# second parameter must be the desired base name of the output
# third parameter must be %CHANID% if you set USECUTLIST=Y
# fourth parameter must be %STARTTIME% if you set USECUTLIST=Y
# In the mythtv setup screen invoke this script like this:
# MYTHTV User Job Command:
# /usr/LH/bin/myth2mp3 "%DIR%/%FILE%" "%TITLE% - %SUBTITLE%" "%CHANID%" "%STARTTIME%"
# options:
BITRATE=256k #ie. 128k, 160k, 192k, 224k, 256k
USECUTLIST=Y #Y or N
# where the converted audio is stored
OUT_DIR=/myth/music
# create temp filename so multiple instances won't conflict
TMPNAME=toMP3-$$
TMPFILE=/myth/tmp/$TMPNAME
TMPCUTFILE=/myth/tmp/$TMPNAME.mpg
FFINPUTFILE=$1
TITLE=`echo $2 | sed 's/\//_/g'`
# log file location
LOGFILE=/var/log/mythtv/myth2mp3.log
CDate="`date`"
echo "" >> $LOGFILE
echo $CDate >> $LOGFILE
echo "File to encode: $1 Name: $TITLE" >> $LOGFILE
# start timer
beforetime="$(date +%s)"
# check if using cutlist
if [ $USECUTLIST = Y ];then
MYTHCOMMFRAMES=`mythcommflag --getcutlist -f "$FFINPUTFILE" | grep 'Cutlist:' | cut -d \ -f 2`
if [ -n "$MYTHCOMMFRAMES" ]; then
echo "Extracting Cutlist..." >> $LOGFILE
/usr/bin/nice -n19 /usr/bin/mythtranscode --chanid "$3" --starttime "$4" --outfile "$TMPCUTFILE" --mpeg2 --honorcutlist
FFINPUTFILE=$TMPCUTFILE
fi
fi
# run ffmpeg to do conversion to wav
echo "Encoding to intermediate wav..." >> $LOGFILE
/usr/bin/nice -n19 /usr/bin/ffmpeg -i "$FFINPUTFILE" -vn -acodec pcm_s16le -ar 44100 -ac 2 "$TMPFILE.wav"
ERROR=$?
# Normalize the intermediate wav
echo "Normalizing intermediate wav..." >> $LOGFILE
/usr/bin/nice -n19 /usr/bin/normalize -q --peak "$TMPFILE.wav"
ERROR=$?
FFINPUTFILE=$TMPFILE.wav
# Final encode of normalized wav to mp3
echo "Encoding to normalized wav to mp3..." >> $LOGFILE
/usr/bin/nice -n19 /usr/bin/ffmpeg -i "$FFINPUTFILE" -vn -acodec libmp3lame -ab $BITRATE -ar 44100 -ac 2 "$TMPFILE.mp3"
ERROR=$?
# make output filename unique
OUTPUTFILE=$OUT_DIR/$TITLE.mp3
i=1
while [ -e "$OUTPUTFILE" ]
do
OUTPUTFILE=$OUT_DIR/$TITLE-$i.mp3
i=`expr $i + 1`
done
# move temp file to output location
chown mythtv "$TMPFILE.mp3" && mv "$TMPFILE.mp3" "$OUTPUTFILE"
# stop timer
aftertime="$(date +%s)"
seconds="$(expr $aftertime - $beforetime)"
if [ $ERROR -eq 0 ]; then
echo "File Encoded Sucessfully: $OUTPUTFILE" >> $LOGFILE
hours=$((seconds / 3600))
seconds=$((seconds % 3600))
minutes=$((seconds / 60))
seconds=$((seconds % 60))
echo "Encoding Time: $hours hour(s) $minutes minute(s) $seconds second(s)" >> $LOGFILE
else
echo "ERROR: $ERROR" >> $LOGFILE
fi
# clean up left over files
unlink $TMPFILE.mp3 2> /dev/null
unlink $TMPFILE.wav 2> /dev/null
unlink $TMPCUTFILE 2> /dev/null
unlink $TMPCUTFILE.map 2> /dev/null
|