2012/05/30

wavecastでepgrec構築 録画編

wavecastで、epgrecが動くようにはなったけど、使えるようにするには、いくつか工程を踏むことになったので、その辺を書き記しておきます。

do-record.sh 作成
録画処理は全部ここで行うということで、各モードに対応した録画、エンコード処理を記述していくわけですが、wavecastで行なっている処理を周到しようと思って、試行錯誤の末、以下のような感じになりました。
#!/bin/bash
echo "CHANNEL : $CHANNEL"
echo "DURATION: $DURATION"
echo "OUTPUT : $OUTPUT"
echo "TUNER : $TUNER"
echo "TYPE : $TYPE"
echo "MODE : $MODE"

REC=`echo $(tempfile)|sed s/^.*[/]//`

echo "RECORDING : $REC"

# Record
if [ "$DURATION" ]; then
/home/wave/bin/tsrec2 --b25 $CHANNEL $DURATION /tmp/${REC}.ts 0
fi

# MODE==0
if [ $MODE -eq 0 ]; then
mv /tmp/${REC}.ts $OUTPUT
fi

# HD-TS
if [ $MODE -ge 1 ]; then
/usr/bin/wine tssplit2 -SD2 -SD3 -1SEG -OUT /tmp -BUFF 64 /tmp/${REC}.ts
# MODE==1
if [ $MODE -eq 1 ]; then
mv /tmp/${REC}_HD.ts $OUTPUT
fi
fi

# MP4
if [ $MODE -ge 2 ]; then
/usr/bin/wine tsdemux2 -i 'Z:\tmp\'${REC}_HD.ts -o 'Z:\tmp\'$REC -encode "Demux(m2v+wav)" -sound 0 -nd -start -quit
# /usr/bin/wine bontsdemux -i 'Z:\tmp\'${REC}_HD.ts -o 'Z:\tmp\'$REC -encode "Demux(m2v+wav)" -sound 0 -nd -start -quit

/usr/local/bin/ffmpeg -y -i /tmp/${REC}.m2v -threads 4 -vcodec libx264 -fpre /home/wave/.ffmpeg/ibento7.ffpreset -b 1800k -s 960x540 -aspect 16:9 -an -f mp4 /tmp/${REC}.264

/usr/bin/sox /tmp/${REC}.wav /tmp/${REC}-d.wav delay 0.2 0.2

/usr/local/bin/ffmpeg -y -i /tmp/${REC}.264 -threads 4 -vcodec copy -i /tmp/${REC}-d.wav -acodec libfaac -ac 2 -ar 48000 -ab 128k -vsync 1 /tmp/${REC}.mp4

/usr/bin/MP4Box -ipod -inter 500 /tmp/${REC}.mp4 -out $OUTPUT

/home/wave/bin/copy-to-itunes $OUTPUT
fi

# Mobile
if [ $MODE -eq 3 ]; then
/home/wave/bin/ipod-m4v $OUTPUT
fi

# Cleanup first!
rm /tmp/${REC}*

  1. tsrec2で一旦/tmpに録画
  2. モード0:TSファイルをそのまま保存
  3. モード1:HDTSファイルを作成保存
  4. モード2:H264にエンコードして保存
  5. モード3:MPEG4に再エンコードして保存 
  6. ワーク用tmpファイル削除
って感じです。モードごとに独立してなくて、何処までやるかって処理になってます。

tssplit2とtsdemux2
この2つのアップリはWindowsアプリなので、wineで実行できるようにする必要があります。
/root/.wine/drive_c/windows/system32 からこの2つのexeを/home/wave/.wine/drive_c/windows/system32へコピーします。

ffmpeg
-vpre ibento7だと、/home/wave/.ffmpeg/ibento7.ffpreset があっても見に行ってくれないようなので、直接指定で -fpre /home/wave/.ffmpeg/ibento7 って書きました。

soxで微調整
wavecastのエンコード手順はそれなりにいいと思うんですが、録画したものを視聴してみていると、どうも若干音がずれている気がしまして sox を使用して微調整してみました。自分的には合うようになったなと思ってます。本気の人は、編集ソフトとかで絵と音波形を見比べてみるんでしょうけど、私はフィーリングが合えばいいんです。soxは入ってなかったので
$ sudo apt-get install sox
で入れます。

/home/wave/bin/copy-to-itunes $OUTPUT
以前にも書いたiTunesへ自動登録するスクリプトを実行しているところです。気にしないで。

/home/wave/bin/ipod-m4v $OUTPUT
以前にも書いた初代ipod-touchで再生するファイル作成スクリプトです。気にしないで。

この当たりはまだ思ったような結果にならないんですが、今ん処こんな感じですかね。
次回は視聴編です。

こういうのに慣れてないもんで。
blogger編集でスクロールDivにコード埋め込む手順でハマってしまいました。

0 件のコメント:

コメントを投稿