記事一覧
sqliteで管理してみた(5) - まとめ2
はじめにとりあえず形にはなったので今回公開します。GUIについてはおまけ程度です。フリーのツールキットを使って見ようと思いWinFormで作成しましたがリビングの49インチテレビで見たらかなり厳しいと感じました。WPFで作り直すのは面倒臭いです。
とりあえず2,500ファイルの録画ファイルでテストして大丈夫そうでした。
機能EDCBのマテリアルUIのライブラリ表示を少しだけ変えます。現在は表示
sqliteで管理してみた(4) - まとめ1
出力内容今更紹介した内容をまとめて実行可能なプログラムにしますが、その前にどのような出力をして、どのように使うかを検討します。
EDCBのマテリアルUIに反映させる事を目的にしているので以下の応答に付け加えます。ライブラリ一覧は以下のAPIで取得してます。
http://127.0.0.1:5501/api/Library実行結果<xml> <entry> <dir> <name>
sqliteで管理してみた(3) - ファイル検出と補足
はじめにここではsqliteとは直接の関係はありません。録画ファイルが保存されている環境において新規に作成されたTSファイルや削除、移動等、ファイルを検出してデータベース上のデータと同期を取るための、どちらかというとファイル検出に関する内容となります。
検出すべき内容録画を常に実施している環境であれば定期的にファイルが生成されます。古い録画データを削除しているかも知れませんし、別フォルダに移動し
sqliteで管理してみた(2) - 実装
C#のsqlite実装前回初期処理とProgEntryの読み出しの一部について紹介しましたが、ここでは使用するSQL文を全て実装していきます。
配列用の変換処理
ProgFolderではSubFoldersやNodesは":"区切りで配列的な役割をさせています。List<int> { 1, 2, 3 } → ":1:2:3:" というフォーマット形式にしています。ということで双方向の処理です。
sqliteで管理してみた(1) - 概要
概要前回までで番組情報を取得しましたのでデータベースに格納することにしました。サービスとして起動しないsqliteがお手軽かな…という安易な考えです。
最近のsqliteはjson形式のデータも入れられるみたいですがここでは別の方法を採用します。録画したTSファイルをフォルダに移動したり、録画ディスクを付け替えしたりすることもあり、TSファイルは個別に管理したいと思いファイルシステムのinode
TSパケットからはじめる(9) - まとめ
今回でTSパケットからはじめるもこれで終わります。ある程度のになったのでコマンド形式で実行できるようにしていきたいと思います。
引数でファイルかフォルダを指定するとtsファイルから番組情報を出力します。また、現在キャッシュフォルダはリソースファイルに組み込んでしまっているが(C:¥Home¥Cache)配下に数KBのTSファイルが生成されます。RealTimeはPCRから計算した値を元に表示させ
TSパケットからはじめる(8) - TS保存
TSファイルをエンコードしたりすると番組情報のEITは消えてしまいます。別ファイルに情報として保存しておけば良いのですが、使い勝手が良い生TSファイルのまま最小構成で残しておきたいと思います。
TSファイル最初のPCRを含むパケット
今まで紹介したPAT/PMT/SDT/EIT
NITは検出できれば入れる
TSファイル最初のTOT/TDTとその直後のPCRを含むパケット
上記合わせて2、
TSパケットからはじめる(7) - EIT
EITでTSファイルの番組情報を取得することができます。descriptor()は前回のSDT同様にタグ記述子となります。
はじめにTsEITクラスを作成してしまいます。ちょっと長いですがタグ記述子をたくさんデコードしているだけです。クラスのメソッドとして分けた方が見やすくなるかも知れません。
public class TsEIT{ public string program_name
TSパケットからはじめる(6) - SDT
SDT(Service Description Table)前回文字列のデコード処理は解決したのでSDTやEITの情報を取得してみます。SDTのPIDは0x11でtable_idが0x42(自ストリーム)、0x46(他ストリーム)となります。今回は自ストリームを取得したいので0x42のテーブルIDのSDTを取得します。
SDTのdescriptor()という項目がありますがこの部分はタグ記述子と
TSパケットからはじめる(5) - 文字コード2
初期処理前回からの続きとなりますが、実際に文字コードをデコードする処理を書いていきます。図形表をGCodeという名称にして列挙型としました。
public enum GCode{ UNKNOWN, KANJI, ALPHANUMERIC, HIRAGANA, KATAKANA, MOSAIC_A, MOSAIC_B, MOSAIC_C, MO
TSパケットからはじめる(4) - 文字コード1
文字コード概要TSパケットは独自フォーマット形式の文字コードが格納されています。独自と言ってもEUCJPを拡張したような構造です。PSIのSDTやEITを取り扱う上で文字コード変換が必要になるため、このタイミングとなります。
G0、G1、G2、G3という領域がそこには図形表(例えば"漢字")を割り当てすることができます。GL/GRからはG0~G3を参照します。GL/GRからG0~G3を経由して図
TSパケットからはじめる(3) - PSIパケット収集
PSIヘッダ構造前回PATとPMTをデコードしましたがこれらはPSIパケットとなります。これからの構造を見るとオレンジ色の先頭8バイトは殆ど同じであることが分かります。基本的にPSIは先頭は同じです。
PSIパケット長は緑色のselection_lengthとして12ビットで格納されています。12ビットということは最大で4096まで表現出来ますが4093までと規定されています。例としてEITとい
TSパケットからはじめる(2) - PAT/PMT
PESとPSIを判断するいくつかのPIDは固定番号のものがあり、これらの固定は全てPSIとなります。固定番号の1つにPAT(PID=0x00)と呼ばれるものがありPAT(Program Association Table)はPSIとなります。
PATからPMT(Program Map Table)をPIDを取得できます。PMTからPES一覧を取得することができます。このPMTに含まれないPIDは
TSパケットからはじめる(1) - TS概要
目的地上波/BS/CS放送はMPEG2-TS(MPEG2 Transport Stream)形式で送信されてくるのでそれをチューナで基本的にそのまま受信して保存しています。そのため、録画されたTSファイルには動画データ、音声データ、字幕データの他にも様々な情報が含まれた形で保存されています。今回目的としているのは番組情報に関するデータを取得することです。
TSパケット構成地デジ放送等では複数の動