アナログ録画からデジタル記録に変えて

まだ本運用とは言い切れない状況なのだけど、対処すべき問題が微妙に違うのが面白い

ノイズ

デジタルだからノイズなんて皆無だろうと思っていたが、さにあらず。デジタルの場合は単純にデコードに失敗する状態になってしまう。元々MPEGは多少のデータ抜けに対応できるようにはなっているはずなのだが、敏感なプレーヤによってはその部分を再生しようとして失敗する。
データの化けは動画部分だけではなく番組情報の部分にも発生するわけで、この場合はコードの書き方如何によってはsegvで落ちる。

サイズ

現在の地上波は1440x1080をアスペクト比を指定することで1920x1080で表示させている。このサイズともなれば、普通のPC用のモニターでは動画を観ながら作業というには大きすぎる。せっかくフルHDで録っても1/2に縮小して再生していたりする。動画再生支援機能を使ってもそもそもの転送レートが大きいためか、ヘボいビデオカードだとVRAMの帯域を消費しすぎるようで、同時にゲームなどしようものなら覿面に遅くなる。

始点、終点のゴミ

アナログ録画のときはデバイスでデジタル化していたので、データの始まりと終わりはデバイスが作っていたのだが、デジタル記録の場合は垂れ流されるデータをデコードしているだけなのでTSのデータ境界と記録されたデータの始点が揃っていないことがある。
これも再生なり変換するコードの側で配慮していれば回避可能なのだが、境界の検出に失敗するアプリが案外多い。

B25関連

普通のテレビだとB-CASカードは本体のアクセスし難いところに装着されているので、外乱の影響を受けないが、いかんせんPCで外付けのスマートカードリーダを使っていると気付くと半差しになっていて復号に失敗することがある。自宅で動いている仕組みだと録画時点でB-CASカードが抜けており、復号に失敗してもとりあえず生のストリームを保存するようにして回避した。
また、LinuxからB-CASカードへアクセスするにはスマートカードを管理するpcscdというデーモンを使っているのだが、こいつは動いている間中ずっとカードへのポーリングをする。おかげでUSBのバスコントローラがスリープに入れず電力消費量が下げられないという問題もある。

まとめ

とまあ、手作り環境では色々と問題があるのだけど、民生用のテレビや録画デバイスはこの辺のことを全く意識させることなくユーザに使わせているのだから素晴しいな、と再認識した。