Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「バグ」っすかね、やっぱり

Hauppauge HD-PVRで録画したビデオは、結局大半はiPod touch 4 で通勤中に消化しています(なんだかなー)。で、そのためには、MPEG4とかに変換する必要がありますが、これも結局、TMPGEnc 4.0 Xpress (4.7.8.309)とかを使っています。フリーソフトもありますが、まあ買っちゃたわ訳だし、GUIやバッチ機能が結構よくできているので気に入ってます。ところが、今日見ていたビデオがiPod touch上で固まってしまいました。音声は再生されるのですが、画がとまってしまいます。PC上で、元データを確認(問題なし)、念のため変換後のデータを再度、iTuneとvlc(1.1.5)でも確認しましたが、症状は同じ。と、いうことで、エンコーダの問題でしょうね。

 TMPGEnc 4.0 XpressのMPEG4エンコーダーは、あまり評判がよくないようですが、(MainConceptのOEMのはず)、iPod touchでは所詮あまり凝ったプロファイルもつかえないので、私はそちらの方は評価保留です。

というわけで、エンコードに失敗したファイルは、ちょっと設定を変えて再エンコ中。だいたいエンコードする(HDでは激遅)のがいやで、HD PVRにしたのに、なにやってんだか・・・
やっぱり、cuda or SpursEngineかしら?(ちなみに、私はインテルのチップセットのグラフィックしか使ってません)とも思いますが、価格を考えるとちょっと・・・いえ、高いっていうより,その値段出すんだったらほかに欲しいものもあったりして、いろいろ考えていると,またしても、いらん物欲に火がつきそうで・・・以下、省略 orz




スポンサーサイト

「いっちゅう」さんのiEPG用ソフト入れてみた

「いっちゅう」さんのiEPG関連のsoftを発見して、使ってみました。
  TVdeIEPG Ver.1.2.1.0 と EpgNavi Ver.0.9.9(0730)

 


 TVdeIEPGは、Regzaから予約して、iEPGでファイルを作成できる。RDのフリをします。いいですね、これ。z2000シリーズで問題なく動作しました。ちょっと残念なのは、iEPGがver.1ということ。私の録画スケジューラは、後先考えずに、ver.2対応でつくってしまったのですよ・・・ orz
まあ、一応ver1でもいいようになっているはずなので、少し本格的に試してみることにします。


 EpgNaviは番組検索&録画予約ソフト。まだβとのことですが、「軽くて」イイです。こっちが本命かな?GUIって自分でつくるのは大変なので、いいかも・・・
 とりあえず、気長に待ちます。

 


ところで、私の「予約録画」って、キーワードを入力して、基本的にほったらかし(=全部録画予約)で、重複があったときだけ、不要な予約を消す、という使い方なんだけど普通は違うみたい。HDDレコーダ(持ってません)はともかく、PC系では、Windowsのメディアセンター位しかないみたいだけど、どうなんだろう?

 

 

さて、リモコンの方を早く仕上げないと・・・




Teraterm のバグ?

録画用のスケジューラのプログラムをRubyで書いて、Windows上で動作させ、録画機能そのものはLinux上で動作させています。win→LinuxはSSHでログインするのですがTeratemというか、Teratermのマクロ機能を使ってるいますが、時々高負荷のままZombi化してしまいます。「時々」というのが曲者で、原因が特定できないで、気がつくとWindowsのパフォーマンスメーターが100%にはりついてしまってたりします。どうも、ほぼ1スレッドを占有したままZombi化してしまうようです。このせいで極端にシステムのパフォーマンスが落ちる、とうことでもないので、まあ時々タスクマネージャから殺せばいいのですが、気持ちいいものではないです。

 マクロ機能のある、ssh(telnetでもいいけど)クライアントとなると、Puttyもありますが、日本語環境では、数ある対応版のどれを使えばいいのやら・・・いまさら変えるのなんだし、と思ったらteratermは新しい4.6.3 がでてますね。
 解決してるといいな…



キャプチャが死んだ(っぽい)

メインの録画機は、Windowx XPのメディアセンターを使っています。この上で、録画中のファイルを監視して、同時にHD-PVRを制御してハイビジョン録画をしています。

どうも、メディアセンターで直接制御しているキャプチャーが死んでしまったみたい。パイロットランプもつかないので、ACアダプタが一番あやしい(前科一犯)きがするのだが…

しおしおのパ~ ・・・




録画用のデータベース管理、RubyでPVRを作ろう!その16

録画の予約を管理するためのデータベースです。デバッグが楽になるかと思い、ディレクトリ(データベース)にiEPGデータをファイル形式で入れてあります。ファイル名がキーになっているハッシュみたいな感じ。あとでちゃんとしたデータベースエンジンを利用する方がいいでしょうね。
当初は、録画の予約時間順にデータが取り出せればよいと思っていたので、キューみたいなものを想定していたのですが、録画予約の確認のためにはソートした一覧とかが必要で、むしろArrayに近いI/Fになっています。

参考、Rubyで利用できるデータベース機能
http://www.gesource.jp/programming/ruby/database/index.html
----
#
# Class ReserveDB (C)2009 B.O.
#  refer below for MonitorMixin
#    http://www.ruby-lang.org/ja/man/html/MonitorMixin.html
require( "monitor")
require( "IEPGD")
require( 'to_WinFileName' )

class ReserveDB
  include To_WinFileName
  include Enumerable
  @@EXT = "tvpid"

  def initialize( workFolder )
    @workFolder = File::expand_path( workFolder)
    self.extend(MonitorMixin)
    if ! FileTest::directory?( @workFolder)
      Dir::mkdir( @workFolder )
    end
  end #def initialize

  def to_s
    "ReserveDB[#{@workFolder}]"
  end #def to_s
 
  def clear
    synchronize {
      Dir::glob( "#{@workFolder}/*.#{@@EXT}").each {|f|
        File.delete( f )
      }
    }
  end #def clear
 
  def length
    to_a().length()
  end # def length

  def empty?
    length() == 0
  end #def empty?
 
  # adding an iEPGD data
  # needs to check if the same program has existed already
  def push( iEPGo )
    synchronize {
      del( iEPGo)
      fname = iEPGo.to_s("%D__%T_%eT_%program-title:_%station-name:_%station:" )
      fname = to_WinFileName(fname )
      fname += ".#{@@EXT}"
      fh = File.open("#{@workFolder}/#{fname}",'w')
      fh.puts( iEPGo.to_s )
      fh.close
    }
  end # def push( iEPG )

  # delete
  # if successful, returns true
  # if not returns nil
  def del( iEPGo )
    ret = false
    # gather all data in the DB
    synchronize {
      Dir::glob( "#{@workFolder}/*.#{@@EXT}").each {|f|
        if (arrayiEPG= IEPG.File2Array( f))
          if arrayiEPG[0].sameProgram?( iEPGo )
            File.delete( f )
            ret = true
          end
        end
      }
    }
    ret
  end # def _del( oiEPG )

  def to_a
    ar = Array.new
    synchronize {
      # gather all data in the DB
      Dir::glob( "#{@workFolder}/*.#{@@EXT}").each {|f|
        if (arrayiEPG= IEPG.File2Array( f))
            ar += arrayiEPG
        end
      }
    }
    ar
  end #def to_a

  def each
    ar = to_a
    ar.each{|prof|
        yield(prof)    
    }
  end # def each
    
  def top()
    min()
  end # def top

  def pop
    synchronize {
      if (tmp = top())
        del( tmp )
        return tmp
      else
        return nil
      end
    }
  end #def pop
    
end # class ReserveDB



FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。