ビデオリストのソート対策
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);
}
}
?>
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
| メディアプレイヤー