人気ブログランキング | 話題のタグを見る
ブログトップ

Tom's Lab

tomslabo.exblog.jp

Tomの研究所

ビデオリストのソート対策

2012月1月29日(日)晴れ 寒い
Xtreamer(DC-MCNP1)でチョット困るのは、ビデオリストのソート指定が出来ないこと。
私の場合、REGZAでの再生を意識して、ファイル名は
yyyymmddhhmm_ビデオタイトル.ts
となっています。

このファイル名の場合、REGAでは最新のビデオファイルから表示されのですが、DC-MCNP1は一番古いファイルから表示される。なのでチョット不便。

てな訳で、これを意識したファイル名をハードリンクで作成するPHPを作ってみた。

汎用性を考えてシンボリックリンクで作成したかったのですが、NFSではシンボリックリンクファイルの作成はできませんでした。sambaではOKです。結局ハードリンクにしました。


#!/usr/bin/php -q

/*=======================================================================*/
//
// 先頭がYYMMDD(HHMM)から始まるTSファイル名のYYYYMMDDを取得し、
// "20201231"からの差分日付を先頭に付加したリンクファイルを作る
// exp
// 2012301800_XXXXXX.ts → 0001_301800_XXXXXX.ts
//
/*=======================================================================*/
$videoDir = '/video';
$XtreamerDir = '/video/.Xtreamer';

// rmdir -f /video/.Xtreamer
removeDir($XtreamerDir);

// mkdir /video/.Xtreamer
mkdir($XtreamerDir);

// サブディレクトリー表示
if ($dirHandle = opendir($videoDir)) {
/* ディレクトリをループする際の正しい方法です */
while (false !== ($subDir = readdir($dirHandle))) {
if (($subDir == '.') OR ($subDir == '..')) {
continue;
}
if (substr($subDir,0,1) == '.') {
continue;
}
if (!is_dir($videoDir.'/'.$subDir)) {
continue;
}

$makeDir = $XtreamerDir.'/'.$subDir;
// echo $makeDir."\n";

// mkdir
mkdir($makeDir);

// シンボリックリンクを作成する
if ($tsHandle = opendir($videoDir.'/'.$subDir)) {
//ディレクトリをループする際の正しい方法です
while (false !== ($file = readdir($tsHandle))) {
if (($file == '.') OR ($file == '..')) {
continue;
}
if (!(stripos($file,'.ts'))){
continue;
}
if (stripos($file,'.ts.meta')){
continue;
}

// 日付の差を計算
$diff = (strtotime("20201231") - strtotime("20".substr($file,0,6))) / (24 * 3600);
$diff = substr("0000".$diff,-4);

// ハードリンク
$src = "$videoDir/$subDir/$file";
//print $src."\n";
$dst = "$XtreamerDir/$subDir/$diff"."_".substr($file, 4);
//print $dst."\n";
//symlink($src, $dst);
link($src, $dst);
}
}
}
}

function removeDir($dir) {
if ($handle = opendir($dir)) {
while (false !== ($item = readdir($handle))) {
if ($item != "." && $item != "..") {
if (is_dir("$dir/$item")) {
removeDir("$dir/$item");
}
else {
unlink("$dir/$item");
}
}
}
closedir($handle);
//
rmdir($dir);
}
}
?>
by tomslabo | 2012-01-29 14:46 | メディアプレイヤー

by TomsLabo