Index: trunk/install/perl/ipodtranscode.pl =================================================================== --- trunk/install/perl/ipodtranscode.pl (リビジョン 83) +++ trunk/install/perl/ipodtranscode.pl (リビジョン 94) @@ -13,9 +13,10 @@ use DBI; use DBD::Pg; +use DBD::SQLite; use Jcode; $path = $0; $path =~ s/ipodtranscode.pl$//i; -if ($pwd ne "./"){ +if ($path ne "./"){ push( @INC, "$path"); } @@ -35,7 +36,5 @@ #DB初期化 - my $data_source = sprintf("dbi:%s:dbname=%s;host=%s;port=%d", - $DBDriv,$DBName,$DBHost,$DBPort); - $dbh = DBI->connect($data_source,$DBUser,$DBPass) ||die $DBI::error;; +$dbh = DBI->connect($DSN,$DBUser,$DBPass) ||die $DBI::error;; # タイトル取得 @@ -57,16 +56,9 @@ while ($counttranscodefiles >= 1){ - -$DBQuery = "SELECT foltia_subtitle.pid,foltia_subtitle.tid,foltia_subtitle.m2pfilename,filestatus,foltia_program.aspect ,foltia_subtitle.countno -FROM foltia_subtitle, foltia_program, foltia_m2pfiles -WHERE filestatus >= $FILESTATUSRECEND AND filestatus < $FILESTATUSTRANSCODECOMPLETE AND foltia_program.tid = foltia_subtitle.TID AND foltia_program.PSP = 1 AND foltia_m2pfiles.m2pfilename = foltia_subtitle.m2pfilename -ORDER BY enddatetime ASC -LIMIT 1 "; - -$sth = $dbh->prepare($DBQuery); -$sth->execute(); + $sth = $dbh->prepare($stmt{'ipodtranscode.1'}); + $sth->execute($FILESTATUSRECEND, $FILESTATUSTRANSCODECOMPLETE, ); @dbparam = $sth->fetchrow_array; #print "$dbparam[0],$dbparam[1],$dbparam[2],$dbparam[3],$dbparam[4],$dbparam[5]\n"; -&writelog("ipodtranscode DEBUG $DBQuery"); +#&writelog("ipodtranscode DEBUG $DBQuery"); &writelog("ipodtranscode DEBUG $dbparam[0],$dbparam[1],$dbparam[2],$dbparam[3],$dbparam[4],$dbparam[5]"); $pid = $dbparam[0]; @@ -86,11 +78,6 @@ # タイトル取得 if ($pid ne ""){ - -$DBQuery = "SELECT title , countno , subtitle -FROM foltia_program, foltia_subtitle -WHERE foltia_program.tid = foltia_subtitle.tid -AND foltia_subtitle.pid = $pid "; -$sth = $dbh->prepare($DBQuery); -$sth->execute(); + $sth = $dbh->prepare($stmt{'ipodtranscode.2'}); + $sth->execute($pid); @programtitle = $sth->fetchrow_array; $programtitle[0] =~ s/\"/\\"/gi; @@ -147,6 +134,8 @@ } + $filenamebody = $inputmpeg2 ; $filenamebody =~ s/.m2t$|.ts$|.m2p$|.mpg$//gi; + #デジタルかアナログか if ($inputmpeg2 =~ /m2t$|ts$/i){ @@ -174,7 +163,11 @@ $ffmpegencopt = " -s 360x202 -deinterlace -r 24.00 -vcodec libx264 -g 300 -b 330000 -level 13 -loop 1 -sc_threshold 60 -partp4x4 1 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; }elsif($trconqty == 2){ - $ffmpegencopt = " -s 480x272 -deinterlace -r 29.97 -vcodec libx264 -g 300 -b 400000 -level 13 -loop 1 -sc_threshold 60 -partp4x4 1 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; +# $ffmpegencopt = " -s 480x272 -deinterlace -r 29.97 -vcodec libx264 -g 300 -b 400000 -level 13 -loop 1 -sc_threshold 60 -partp4x4 1 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; +# for ffmpeg 0.5 or later + $ffmpegencopt = " -s 480x272 -deinterlace -r 29.97 -vcodec libx264 -vpre default -g 300 -b 400000 -level 13 -sc_threshold 60 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; }elsif($trconqty == 3){#640x352 - $ffmpegencopt = " -s 640x352 -deinterlace -r 29.97 -vcodec libx264 -g 100 -b 600000 -level 13 -loop 1 -sc_threshold 60 -partp4x4 1 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; +# $ffmpegencopt = " -s 640x352 -deinterlace -r 29.97 -vcodec libx264 -g 100 -b 600000 -level 13 -loop 1 -sc_threshold 60 -partp4x4 1 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; +# for ffmpeg 0.5 or later + $ffmpegencopt = " -s 640x352 -deinterlace -r 29.97 -vcodec libx264 -vpre default -g 100 -b 600000 -level 13 -sc_threshold 60 -rc_eq 'blurCplx^(1-qComp)' -refs 3 -maxrate 700000 -async 50 -f h264 $filenamebody.264"; } &changefilestatus($pid,$FILESTATUSTRANSCODEFFMPEG); @@ -246,41 +239,58 @@ # MP4ビルド unlink("${filenamebody}.base.mp4"); - &changefilestatus($pid,$FILESTATUSTRANSCODEMP4BOX); - &writelog("ipodtranscode MP4Box $filenamebody"); - system ("cd $recfolderpath ; MP4Box -fps 29.97 -add $filenamebody.264 -new $filenamebody.base.mp4"); -#$exit_value = $? >> 8; -#$signal_num = $? & 127; -#$dumped_core = $? & 128; -#&writelog("ipodtranscode DEBUG MP4Box -fps 29.97 -add:$exit_value:$signal_num:$dumped_core"); - - if (-e "$filenamebody.base.mp4"){ - system ("cd $recfolderpath ; MP4Box -add $filenamebody.aac $filenamebody.base.mp4"); -#$exit_value = $? >> 8; -#$signal_num = $? & 127; -#$dumped_core = $? & 128; -#&writelog("ipodtranscode DEBUG MP4Box -add $filenamebody.aac:$exit_value:$signal_num:$dumped_core"); + if (-e "$toolpath/perl/tool/MP4Box"){ + &changefilestatus($pid,$FILESTATUSTRANSCODEMP4BOX); + &writelog("ipodtranscode MP4Box $filenamebody"); +# system ("cd $recfolderpath ; MP4Box -fps 29.97 -add $filenamebody.264 -new $filenamebody.base.mp4"); + system ("cd $recfolderpath ;$toolpath/perl/tool/MP4Box -fps 29.97 -add $filenamebody.264 -new $filenamebody.base.mp4"); + $exit_value = $? >> 8; + $signal_num = $? & 127; + $dumped_core = $? & 128; + &writelog("ipodtranscode DEBUG MP4Box -fps 29.97 -add $filenamebody.264 -new $filenamebody.base.mp4:$exit_value:$signal_num:$dumped_core"); + + + if (-e "$filenamebody.base.mp4"){ +# system ("cd $recfolderpath ; MP4Box -add $filenamebody.aac $filenamebody.base.mp4"); + system ("cd $recfolderpath ;$toolpath/perl/tool/MP4Box -add $filenamebody.aac $filenamebody.base.mp4"); + $exit_value = $? >> 8; + $signal_num = $? & 127; + $dumped_core = $? & 128; + &writelog("ipodtranscode DEBUG MP4Box -add $filenamebody.aac:$exit_value:$signal_num:$dumped_core"); + }else{ + $filelist = `ls -lhtr $recfolderpath/${filenamebody}*`; + $debugenv = `env`; + &writelog("ipodtranscode ERR File not exist.$debugenv.$filelist ;$filenamebody.base.mp4;$filelist;cd $recfolderpath ;$toolpath/perl/tool/MP4Box -fps 29.97 -add $filenamebody.264 -new $filenamebody.base.mp4"); + } }else{ - &writelog("ipodtranscode ERR File not exist.$filenamebody.base.mp4"); - } - -} - -if ($filestatus <= $FILESTATUSTRANSCODEATOM){ - unlink("${mp4outdir}MAQ${mp4filenamestring}.MP4"); - # iPodヘッダ付加 - &changefilestatus($pid,$FILESTATUSTRANSCODEATOM); - &writelog("ipodtranscode ATOM $filenamebody"); - #system ("/usr/local/bin/ffmpeg -y -i $filenamebody.base.mp4 -vcodec copy -acodec copy -f ipod ${mp4outdir}MAQ${mp4filenamestring}.MP4"); - system ("cd $recfolderpath ; MP4Box -ipod $filenamebody.base.mp4"); -$exit_value = $? >> 8; -$signal_num = $? & 127; -$dumped_core = $? & 128; -&writelog("ipodtranscode DEBUG MP4Box -ipod:$exit_value:$signal_num:$dumped_core"); - system("mv $filenamebody.base.mp4 ${mp4outdir}MAQ${mp4filenamestring}.MP4"); - &writelog("ipodtranscode mv $filenamebody.base.mp4 ${mp4outdir}MAQ${mp4filenamestring}.MP4"); -# ipodtranscode mv /home/foltia/php/tv/1329-21-20080829-0017.base.mp4 /home/foltia/php/tv/1329.localized/mp4/MAQ-/home/foltia/php/tv/1329-21-20080829-0017.MP4 - + &writelog("ipodtranscode WARN; Pls. install $toolpath/perl/tool/MP4Box"); + } +#} + +#if ($filestatus <= $FILESTATUSTRANSCODEATOM){ + if (-e "$toolpath/perl/tool/MP4Box"){ + # iPodヘッダ付加 +# &changefilestatus($pid,$FILESTATUSTRANSCODEATOM); + &writelog("ipodtranscode ATOM $filenamebody"); + #system ("/usr/local/bin/ffmpeg -y -i $filenamebody.base.mp4 -vcodec copy -acodec copy -f ipod ${mp4outdir}MAQ${mp4filenamestring}.MP4"); +# system ("cd $recfolderpath ; MP4Box -ipod $filenamebody.base.mp4"); + system ("cd $recfolderpath ; $toolpath/perl/tool/MP4Box -ipod $filenamebody.base.mp4"); + $exit_value = $? >> 8; + $signal_num = $? & 127; + $dumped_core = $? & 128; + &writelog("ipodtranscode DEBUG MP4Box -ipod $filenamebody.base.mp4:$exit_value:$signal_num:$dumped_core"); + if (-e "$filenamebody.base.mp4"){ + unlink("${mp4outdir}MAQ${mp4filenamestring}.MP4"); + system("mv $filenamebody.base.mp4 ${mp4outdir}MAQ${mp4filenamestring}.MP4"); + &writelog("ipodtranscode mv $filenamebody.base.mp4 ${mp4outdir}MAQ${mp4filenamestring}.MP4"); + }else{ + &writelog("ipodtranscode ERR $filenamebody.base.mp4 Not found."); + } + # ipodtranscode mv /home/foltia/php/tv/1329-21-20080829-0017.base.mp4 /home/foltia/php/tv/1329.localized/mp4/MAQ-/home/foltia/php/tv/1329-21-20080829-0017.MP4 + }else{ + &writelog("ipodtranscode WARN; Pls. install $toolpath/perl/tool/MP4Box"); + } } if ($filestatus <= $FILESTATUSTRANSCODECOMPLETE){ + if (-e "${mp4outdir}MAQ${mp4filenamestring}.MP4"){ # 中間ファイル消す &changefilestatus($pid,$FILESTATUSTRANSCODECOMPLETE); @@ -293,5 +303,7 @@ &updatemp4file(); - + }else{ + &writelog("ipodtranscode ERR ; Fail MAQ${mp4filenamestring}.MP4"); + } } @@ -384,19 +396,28 @@ &writelog("ipodtranscode DEBUG thmfilename $thmfilename"); -system ("mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -sstep 1 -frames 3 -v 3 $outputfilename"); - -&writelog("ipodtranscode DEBUG mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -sstep 1 -frames 3 -v 3 $outputfilename"); - -if (-e "$pspdirname/$thmfilename"){ -$timestamp =`date "+%Y%m%d-%H%M%S"`; -chomp $timestamp; - system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename".$timestamp.".THM"); +#system ("mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -sstep 1 -frames 3 -v 3 $outputfilename"); +# +#&writelog("ipodtranscode DEBUG mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -sstep 1 -frames 3 -v 3 $outputfilename"); +if($outputfilename =~ /.m2t$/){ +#ハイビジョンTS +system ("mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -vf framestep=300step,scale=160:90,expand=160:120 -frames 1 $outputfilename"); +&writelog("ipodtranscode DEBUG mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -vf framestep=300step,scale=160:90,expand=160:120 -frames 1 $outputfilename"); }else{ - system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename"); -} -&writelog("ipodtranscode DEBUG convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename"); - -system("rm -rf $pspdirname/0000000*.jpg "); -&writelog("ipodtranscode DEBUG rm -rf $pspdirname/0000000*.jpg"); +#アナログ +system ("mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -vf framestep=300step,scale=165:126,crop=160:120 -frames 1 $outputfilename"); +&writelog("ipodtranscode DEBUG mplayer -ss 00:01:20 -vo jpeg:outdir=$pspdirname -ao null -vf framestep=300step,scale=165:126,crop=160:120 -frames 1 $outputfilename"); +} +#if (-e "$pspdirname/$thmfilename"){ +# $timestamp = strftime("%Y%m%d-%H%M%S", localtime); +#chomp $timestamp; +# system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename".$timestamp.".THM"); +#}else{ +# system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename"); +#} +#&writelog("ipodtranscode DEBUG convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename"); + +#system("rm -rf $pspdirname/0000000*.jpg "); +#&writelog("ipodtranscode DEBUG rm -rf $pspdirname/0000000*.jpg"); +system("mv $pspdirname/00000001.jpg $pspdirname/$thmfilename"); }#endsub makethumbnail @@ -407,14 +428,12 @@ if (-e "${mp4outdir}MAQ${mp4filenamestring}.MP4"){ # MP4ファイル名をPIDレコードに書き込み - $DBQuery = "UPDATE foltia_subtitle SET PSPfilename = '$mp4filename' WHERE pid = '$pid' "; - $sth = $dbh->prepare($DBQuery); - $sth->execute(); -&writelog("ipodtranscode UPDATEsubtitleDB $DBQuery"); + $sth = $dbh->prepare($stmt{'ipodtranscode.updatemp4file.1'}); + $sth->execute($mp4filename, $pid); + &writelog("ipodtranscode UPDATEsubtitleDB $stmt{'ipodtranscode.updatemp4file.1'}"); # MP4ファイル名をfoltia_mp4files挿入 - $DBQuery = "insert into foltia_mp4files values ('$tid','$mp4filename') "; - $sth = $dbh->prepare($DBQuery); - $sth->execute(); -&writelog("ipodtranscode UPDATEmp4DB $DBQuery"); + $sth = $dbh->prepare($stmt{'ipodtranscode.updatemp4file.2'}); + $sth->execute($tid, $mp4filename); + &writelog("ipodtranscode UPDATEmp4DB $stmt{'ipodtranscode.updatemp4file.2'}"); &changefilestatus($pid,$FILESTATUSALLCOMPLETE); @@ -427,8 +446,6 @@ sub counttranscodefiles(){ -my $DBQuery = "SELECT count(*) FROM foltia_subtitle, foltia_program, foltia_m2pfiles -WHERE filestatus >= $FILESTATUSRECEND AND filestatus < $FILESTATUSTRANSCODECOMPLETE AND foltia_program.tid = foltia_subtitle.TID AND foltia_program.PSP = 1 AND foltia_m2pfiles.m2pfilename = foltia_subtitle.m2pfilename "; -$sth = $dbh->prepare($DBQuery); -$sth->execute(); + $sth = $dbh->prepare($stmt{'ipodtranscode.counttranscodefiles.1'}); + $sth->execute($FILESTATUSRECEND, $FILESTATUSTRANSCODECOMPLETE); my @titlecount= $sth->fetchrow_array;