最近の記事

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>ホーム</name> <id>home</id> <dir>

      • sqliteで管理してみた(3) - ファイル検出と補足

        はじめにここではsqliteとは直接の関係はありません。録画ファイルが保存されている環境において新規に作成されたTSファイルや削除、移動等、ファイルを検出してデータベース上のデータと同期を取るための、どちらかというとファイル検出に関する内容となります。 検出すべき内容録画を常に実施している環境であれば定期的にファイルが生成されます。古い録画データを削除しているかも知れませんし、別フォルダに移動しているかも知れません。 ファイル検出/削除 sqliteで管理してみた(1)

        • sqliteで管理してみた(2) - 実装

          C#のsqlite実装前回初期処理とProgEntryの読み出しの一部について紹介しましたが、ここでは使用するSQL文を全て実装していきます。 配列用の変換処理 ProgFolderではSubFoldersやNodesは":"区切りで配列的な役割をさせています。List<int> { 1, 2, 3 } → ":1:2:3:" というフォーマット形式にしています。ということで双方向の処理です。 // ":x:y:z:"形式からList<int> = {x, y, z}に

        sqliteで管理してみた(5) - まとめ2

          sqliteで管理してみた(1) - 概要

          概要前回までで番組情報を取得しましたのでデータベースに格納することにしました。サービスとして起動しないsqliteがお手軽かな…という安易な考えです。 最近のsqliteはjson形式のデータも入れられるみたいですがここでは別の方法を採用します。録画したTSファイルをフォルダに移動したり、録画ディスクを付け替えしたりすることもあり、TSファイルは個別に管理したいと思いファイルシステムのinodeのような構成にしたいと思います。 フォルダ管理テーブルでフォルダに対してのサブ

          sqliteで管理してみた(1) - 概要

          TSパケットからはじめる(9) - まとめ

          今回でTSパケットからはじめるもこれで終わります。ある程度のになったのでコマンド形式で実行できるようにしていきたいと思います。 引数でファイルかフォルダを指定するとtsファイルから番組情報を出力します。また、現在キャッシュフォルダはリソースファイルに組み込んでしまっているが(C:¥Home¥Cache)配下に数KBのTSファイルが生成されます。RealTimeはPCRから計算した値を元に表示させています。下記は25分番組ですが途中から5分程度録画したものです。 C:\xx

          TSパケットからはじめる(9) - まとめ

          TSパケットからはじめる(8) - TS保存

          TSファイルをエンコードしたりすると番組情報のEITは消えてしまいます。別ファイルに情報として保存しておけば良いのですが、使い勝手が良い生TSファイルのまま最小構成で残しておきたいと思います。 TSファイル最初のPCRを含むパケット 今まで紹介したPAT/PMT/SDT/EIT NITは検出できれば入れる TSファイル最初のTOT/TDTとその直後のPCRを含むパケット 上記合わせて2、3KB程度のtsファイルとなります。番組情報として開始時間は分かりますが、実際の

          TSパケットからはじめる(8) - TS保存

          TSパケットからはじめる(7) - EIT

          EITでTSファイルの番組情報を取得することができます。descriptor()は前回のSDT同様にタグ記述子となります。 はじめにTsEITクラスを作成してしまいます。ちょっと長いですがタグ記述子をたくさんデコードしているだけです。クラスのメソッドとして分けた方が見やすくなるかも知れません。 public class TsEIT{ public string program_name { get; set; } public string program_d

          TSパケットからはじめる(7) - EIT

          TSパケットからはじめる(6) - SDT

          SDT(Service Description Table)前回文字列のデコード処理は解決したのでSDTやEITの情報を取得してみます。SDTのPIDは0x11でtable_idが0x42(自ストリーム)、0x46(他ストリーム)となります。今回は自ストリームを取得したいので0x42のテーブルIDのSDTを取得します。 SDTのdescriptor()という項目がありますがこの部分はタグ記述子と言われます。SDTには0x48(サービス記述子)と言われる情報が含まれています。

          TSパケットからはじめる(6) - SDT

          TSパケットからはじめる(5) - 文字コード2

          初期処理前回からの続きとなりますが、実際に文字コードをデコードする処理を書いていきます。図形表をGCodeという名称にして列挙型としました。 public enum GCode{ UNKNOWN, KANJI, ALPHANUMERIC, HIRAGANA, KATAKANA, MOSAIC_A, MOSAIC_B, MOSAIC_C, MOSAIC_D, PROP_ALPHANUMERIC, PROP_HI

          TSパケットからはじめる(5) - 文字コード2

          TSパケットからはじめる(4) - 文字コード1

          文字コード概要TSパケットは独自フォーマット形式の文字コードが格納されています。独自と言ってもEUCJPを拡張したような構造です。PSIのSDTやEITを取り扱う上で文字コード変換が必要になるため、このタイミングとなります。 G0、G1、G2、G3という領域がそこには図形表(例えば"漢字")を割り当てすることができます。GL/GRからはG0~G3を参照します。GL/GRからG0~G3を経由して図形表からデータを取り出すことができます。 例えば、GLは現在G0を参照していま

          TSパケットからはじめる(4) - 文字コード1

          TSパケットからはじめる(3) - PSIパケット収集

          PSIヘッダ構造前回PATとPMTをデコードしましたがこれらはPSIパケットとなります。これからの構造を見るとオレンジ色の先頭8バイトは殆ど同じであることが分かります。基本的にPSIは先頭は同じです。 PSIパケット長は緑色のselection_lengthとして12ビットで格納されています。12ビットということは最大で4096まで表現出来ますが4093までと規定されています。例としてEITというPSIの先頭8バイトも載せていますが、オレンジ色の中でselection_le

          TSパケットからはじめる(3) - PSIパケット収集

          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はPSIとなります。 PAT(Program Association Table

          TSパケットからはじめる(2) - PAT/PMT

          TSパケットからはじめる(1) - TS概要

          目的地上波/BS/CS放送はMPEG2-TS(MPEG2 Transport Stream)形式で送信されてくるのでそれをチューナで基本的にそのまま受信して保存しています。そのため、録画されたTSファイルには動画データ、音声データ、字幕データの他にも様々な情報が含まれた形で保存されています。今回目的としているのは番組情報に関するデータを取得することです。 TSパケット構成地デジ放送等では複数の動作データ、複数の音声データ、複数の字幕データ等が含まれていたりしますが、これらの

          TSパケットからはじめる(1) - TS概要

          はじめてみます

          色々やったことや思った事など何か履歴を残せるサイトということでNoteに記載していくことにしました。現時点で掲載していく内容については録画サーバから派生した内容についてです。 きっかけxtne6f版 EDCB + EDCB Material WebUIで録画環境を構築しております。非常に使いやすいソフトウェアですがカスタマイズしたいなーっと思っていました。EDCB本体のソースに手を加えることは新しいバージョンに追随するのが難しくなるため、WebUI側とEDCB外側でなんとか

          はじめてみます