昨年、地デジ環境を作ったばっかりでしたが、色々不具合が。。。
1)録画ソフトがよく落ちる
2)おまかせ予約が5件までしか登録できない
3)iPhoneアプリが動画を認識しないことがある
4)認識しても再生しない
5)動画をいちいちiTuneで移動するのが面倒くさい
6)新しく買った機器で古い動画を再生できない
という理由でお蔵入りすることに。
代わりに登場はHDUS。同じメーカの製品ですが、とっくに生産中止と思いきや、何気にアマゾンで検索したらあるじゃありませんか。

価格も安く、全然OKです。
早速実家に送りつけ、おばあちゃんにセットアップを依頼。
といってもUBS3がすでに付いていたので差し替えるだけ。
んで、CD-ROMを入れといってお願いして、TeamViewer。
一通りのセットアップが終わったら早速TS抜きの設定。
詳しいことはググってもらうとして、とくさんの場合はTV Rockで全部まとめることに。
BonDriverの設定やらをやって録画テストOK
予約録画の設定をして、あとはエンコードの設定。
これが厄介。いや、ベストな結果を探すのが厄介と言う意味。
エンコパラメータはまだ模索状態ですが、いまのところこんなかんじ。
X264_iPhone = -f mp4 -threads 0 -vcodec libx264 -aspect 16:9 -vtag mp4v -crf 24 -flags2 dct8x8 -level 31 -acodec aac -strict experimental -ac 2 -ar 48000 -ab 128k -s 720x540 -y -coder 1 -deinterlace -top 1 -qmin 10 -vpre libx264-normal -vb 1.5M -async 1
X264_iPhone_EXT =mp4
んで、libx264-normal の設定がこんな感じ。
coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=hex
subq=6
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=1
qcomp=0.6
qmin=10
qmax=51
qdiff=4
bf=3
refs=2
directpred=3
trellis=0
flags2=+wpred+dct8x8+fastpskip
wpredp=2
ただ、まだ音ずれが時々発生するのとシーンチェンジでブロックノイズが発生するので見直しが必要。
つづいて、TV Rockの自動エンコの設定
TN:"c:\video\bontsdemux\bontsdemux.exe" -i "%1" -encode "x264_iphone" -vf -delay 0 -nd -start -quit
TN:"c:\video\bontsdemux\ffmpeg.exe" -i "%3%4.mp4" -acodec copy -vcodec copy -metadata title="%8" -metadata author="%5" -metadata genre="%c" -metadata comment="%9" -metadata year="2012" "c:\www\video\%4.mp4"
1個目はエンコードの設定。TNにしておけばチューナで録画した番組全てに適用されて便利。
エンコにはBonTSDemuxを利用しています。
2個目はiTune用にメタタグを打ち込んでいるもの。
-acodec copy -vcodec copyにしておくと変換せずにメタタグだけ修正できるみたい。
いまのところgenreとauthorは認識せず、yearとタイトルだけ認識している模様。
最初はこれで、変換したファイルをせっせとftp転送してたんだけど、RSSフィードを使うとiTuneが勝手にダウンロードしてくれると言う記事を発見!ひとりブログ

iPhoneでもお世話になってるmoyashiさんじゃありませんか。
moyashiさんはRubyで構築されたようですが、とくさんはphpで。
WEBサーバはApache2.2
ダウンロード&インストール
次にapache.confでphp関係の設定。
phpは5.2.17

WinXpではVC6のスレッドセーフが正しい選択らしい。
ダウンロード&インストール
php.iniも若干修正。どこを直したかはもう忘れた。。。
次にPHPファイルの作成。
ソースはこんな感じ(ソースのほとんどmoyashiさまから拝借しましたm(_ _)m)
<?php
# ビデオキャストのタイトルを設定
define("VIDEOCAST_TITLE" ,"Tokusan's TV RSS by TVRock");
# ビデオキャストの説明を設定
define("VIDEOCAST_DESC" , "");
define("DIR_PATH" ,"c:/www/video");
define("SRC","c:/video");
# 配信したいファイルがあるディレクトリのURL(DIR_PATHをURLで表記)
define("DIR_URL" , "http://*******.dyndns.biz:1093/video");
#define("DIR_URL" , "http://localhost/~tokusan/video");
#ファイルパスを正しく処理するため、ロケールを設定
setlocale(LC_ALL, "");
date_default_timezone_set('Asia/Bangkok');
$file_type = array(
"mp3" => "audio/x-mp3",
"m4a" => "audio/x-m4a",
"m4v" => "video/x-m4v",
"mp4" => "video/x-mp4",
"wma" => "audio/x-ms-wma",
"wmv" => "video/x-ms-wmv",
);
function delete_ts($intv){
#一定日数以上たった動画はどんどん削除
$files=scandir(SRC);
foreach($files as $sfile){
if(filemtime(SRC."/".$sfile)>(time()-60*60*24*$intv))
continue;
$ext=end(explode(".",$sfile));
switch($ext){
case "ts":
case "TS":
unlink(SRC."/".$sfile);
break;
case "mp4":
case "MP4":
if(file_exists(DIR_PATH."/".$sfile))
unlink(SRC."/".$sfile);
else
rename(SRC."/".$sfile,DIR_PATH."/".$sfile);
break;
}
}
}
delete_ts(30);
header("Content-type: text/html");
echo "<?xml version='1.0' encoding='UTF-8' ?>\n";
?>
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" version="2.0">
<channel> <description>
<?php echo VIDEOCAST_DESC;?>
</description>
<language>ja</language>
<?php
if(is_dir(DIR_PATH)){
#ファイルリストを取得
$files=scandir(DIR_PATH);
# echo 'files='.count($files);
#ファイルをファイル名の逆順でソートする。
rsort($files);
#個別ファイルに対して処理
foreach($files as $content){
#拡張子を取り出す。他にもうまいやり方あると思うけど、気にしない。
$ext=substr($content, -3);
$full_path=DIR_PATH."/".$content;
#2時間以内に作成されたファイルはスキップ
if(filemtime($full_path)>time()-60*60*2)
continue;
#対応するファイル以外はスキップ
if(!array_key_exists($ext,$file_type))
continue;
#日本語ファイル名でもエラーにならないよう文字コードを変換
$title=mb_convert_encoding(basename($content, ".".$ext),'UTF-8','SJIS');
$size=filesize($full_path);
#RFCフォーマットの日付値を作る
$c_time=date('r', filectime($full_path));
$enc_content=urlencode(mb_convert_encoding($content,'UTF-8','SJIS'));
#echo $content;
echo "<item>\n<title>$title</title>\n".
"<enclosure url='".DIR_URL."/$enc_content'".
" length='$size' type='$file_type[$ext]' />\n".
" <pubDate>$c_time</pubDate>\n".
"</item>\n";
}
}
?>
</channel>
</rss>
次に外からapacheにアクセスできるように、ルータにポートフォワードの設定。
(DDNSの設定はもちろん済みと言うことで。)
これで、iTuneから直にダウンロードできるようになりました。
iTuneにRSSを追加でこのphpファイルを指定

すると、

iTuneがRSSを受信し、勝手にフィードを認識、ダウンロードを始めます。なんて便利!!!
あとは、iPhoneに自動的に同期されるよう設定しておけば、つなぐたびに最新の動画が入ってくるって言うわけ。
ちょー楽チン。
今回はかなりスキルが高かったけど、ちょうどphpの勉強にもなってよかった。
しかし、フルセグはいいね。
最近のコメント