FC2ブログ

PCで: FFmpeg:MPEG-2 TS→MPEG-4でAACのオーディオをコピー (3)

 今回のは、タイトルには「(3)」とありますがさほどまとまった話でもなければ何か新たにわかったというわけでもなく、最初ののおまけ程度の内容です。でも、あそこに書き足すのもなんか面倒になってきたので新たにエントリを起こしました。

 上記のエントリで、たまに音が映像とずれたりするけどよくわかんないと書きましたが、今回はそれが回避できたという話です。
 ですが、どうしてこれでうまく行くのかわからないし、見つけたのも他の作業の副産物みたいなものなので。

 まず状況ですが、上記のエントリのスクリプトを使ってMPEG-4(.mp4)に変換しているとたまに映像と音声が微妙に(1秒くらい?)ずれたりすることがありました。音声がちょっと遅れる感じ。

 で結論から言うと、色々試している最中に偶然、音がずれないやり方がわかりました。こんなオプションを付けます(output_file_options)。本当はもっと臨機応変に。
-map 0:p:NNN:0 -map 0:p:NNN:1
 この「NNN」のところはPMTのprogram_numberを書きますが「当該サービスのservice_idを記述する」ことになっているようなので……多分固定ですね。NHKなら1024(総合1)か1025(総合2)とか。
 理由はよくわからないのですが、もしや、別のプログラム(例えばワンセグとか)の音声を拾っちゃってるとか? ストリームの選択はffmpeg任せにしてますからねー。ま、結果オーライということで。
 相変わらずいー加減な(笑)。

 ところで何を色々試している最中だったかというと、副音声がある場合です。最近、副音声でコメンタリやってるケースとかちょっと増えてきたので。
 どうしようかとずっと悩んで……たわけではなく、困ったなと思いつつ放置していました。これ、ファイルの途中からストリームが増えることになるので(いつも、冒頭に余裕を取ってるので)、イベントIDの指定をするんだろうなーでもどうやろうかなーと。

 結果的には、そういうのよりもずれる奴の方が多いので、副産物の方が成果としては大きかったかも。

PCで: XHCI_SPURIOUS_REBOOTについて

 いつの頃からか、もうだいぶ前になりますが、うちのLinuxサーバがシャットダウンの後に勝手にリブートするようになりました。
 チップセットはZ77で、Panther Pointに対してもdrivers/usb/host/xhci-pci.cでこんなコメントとともにXHCI_SPURIOUS_REBOOTというQuirksのフラグがセットされています。

PPT desktop boards DH77EB and DH77DF will power back on after
a few seconds of being shutdown. The fix for this is to
switch the ports from xHCI to EHCI on shutdown. We can't use
DMI information to find those particular boards (since each
vendor will change the board name), so we have to key off all
PPT chipsets.

 なのにおかしいなーと。
 でも、サーバなので滅多にシャットダウンしないし、まあしゃあないなぁと思いつつ放置していました。

 ですが先日ふと気になって調べてみました。そしたら、こういう情報が。
Linux Kernel - xhci: Switch Intel Lynx Point ports to EHCI on shutdown

 色々言ってますが、要するにこの処理でうまく行く場合もあれば逆にこれのせいでその現象が出ちゃう場合もある、と。
 ……をい。だったらモジュールのバラメータかなんかにしろよ(笑)。
 でもそうか、この改修が入ったから現象が出始めたのかも? ソースのコメントがくどいのもこういうことかぁ。

 というわけでxhci.cに手を入れてmodule_param()でパラメータを用意しました。それでxhci_shutdown()にある該当する処理を呼ぶ呼ばないを制御するようにし、カーネルのコマンドラインオプションに指定。
 問題なし。
 モジュールのオプションにしてもいいし、これならsysfsで見えるので、それ経由の他のやり方でも多分設定できるし。どうせシャットダウンの時にしか参照しないから。

 どーして最初からこうしないかなぁ?

[追記: 2017-08-18]
 カーネルに手を入れなくてもできる回避策を見つけてしまった……。
 デフォルトでだめならXHCI_SPURIOUS_WAKEUPを立ててあげればいいんですね。オプションxhci_hcd.quirks=262144でいける。
 ただ、このフラグ見るのはシャットダウンの時だけでないので気になると言えば言えますが、まあ大丈夫かも?
 でも、記憶だけですけど、これ上記の改修の前にも試したような気がするんですけど気のせいかなぁ。

PCで: Firefox 54は(まだ)ダメだ

 ちょっと前にFirefox 54が出ましたが。
「Firefox 54」正式版がリリース、高速で安定したブラウザを実現するマルチプロセス技術「Electrolysis」が全ユーザーに対応 - GIGAZINE

 不安定ですね。何十秒か黙り込んだりいきなり落ちたり。E10s導入のせいでまるごと落ちるとかだったら笑い話です。
 まあ、大規模な改修が入った時にはよくあることだし、当面はESRでも使ってようかな?

[追記: 2017-06-17]
 新たにエントリを起こすほどのことでもないのでここに書いておきますが、どうしてMozillaのサイト(.jp, .org(英語サイト含めて)共)ってあんなにわかりづらいんだろうか。
 ダウンロードボタンはある。
 ……それだけ。リリースノートへのリンクは? 他のシステムや言語のページへのリンクはどこに行っちゃった? って英語サイトだとまだマシだけど。
 なんでも情報を隠せば親切だとは思わないでほしいんですよね。

PCで: 回復パーティションの罠

 こういうことがあると、ああ自分はいつまで経ってもWindowsは素人なんだなぁと情けなくなってしまいますなぁ。まあ、ゲームやオフィスソフトのプラットフォームとしか思ってないからあまり真剣にシステムに首を突っ込まないし。
 何があったのかというと、手元のモバイル用のちゃちなPCで回復パーティションを潰しちゃったという話。

 元々はWindows 8.1がインストールされていたのですが、この夏にWindows 10にアップグレードしてみちゃいました。
 で、まあそこそこ使えるかなぁと思っていたのですが、結局はこりゃもうダメだという判断で8.1に戻そうとしたわけです。

 回復パーティションというのがあるのは知っていましたし、リカバリ用のUSBメモリが作れるというのも知ってはいました。ただ、作ろうとしたら16GBのものが必要だというのでついつい後回しにしたまま忘れちゃってたんですね。
 でも、つい昔のイメージがあったもので、このパーティションはPCのメーカーが用意していて出荷時の状態に戻すなどするためのデータ等が入っているものと思っていました。だから、最悪それが残ってれば大丈夫かなと。
 ところが、今は違うんですね。

 つまり回復パーティションは、まあメーカーが出荷時に用意しているのは確かなんですが、いつの間にかWindowsの管轄下にあることになっていた、と。
 というわけで、Windows 10にアップグレードした時点でそこの中身は、出荷時のWindows 8.1じゃなくWindows 10にするための領域に書き換えられてしまっていたということに。

 さーて、どうするかな。本当の意味での出荷時の状態に戻そうとすると、多分本体買うのと同じくらいのカネがかかりそうな気がするし。なんせ安いから。しばらく使って、もうダメということになったらLinuxでも入れて使おうかな?

 ちなみに、どうしてWindows 10に見切りを付けたのか。
 これはまだ早計なのかも知れませんが、Windows 10ってたまにどかんとでかいアップデートが来るじゃないですか。この8月にも来ました。でも、SSDの容量がしょぼいので、アップデートできないわけですよ。なんか、1TBくらいの外付けのHDDつないでも、アップデータは容量が増えたとは思ってくれないし。
 で、そんな状態でしばらく置くと、その内古くてサポート対象外になっちゃうじゃないですか。

 その内改善されるかも知れないので使い続けることができないと決まったわけでもないのですけど、10には色々とうんざりさせられたしこのところのMSの姿勢もウザいことこの上ないしで印象は最悪なのでねぇ……。

 あ、そういえば、何故かWindows 8のライセンス(未使用)を持ってるんですよね。
 それを入れて8.1にするなんてムチャも可能かも(笑)?

PCで: Webのインタフェースデザインの変化に時代を感じる

 ああ、もう私は古い人間になってしまったんだなーと(笑)。
 いや、よく行ってたサイトでUIデザインが大きく変って行かなくなっちゃったところが最近いくつかあったんですが、その中でも特に「nikkei BPnet」がね。

 まあ、このブログでもスマホ向けのページなんてほとんど手抜きのレイアウト、つまり有り合わせのテンプレートほぼまんまなんですが、それでもFC2はPC, ケータイ, スマホの三種類のテンプレートを用意できるようになっています。
 ところが件のnikkei BPnet、もうほぼPC切捨てレイアウトですね。スマホに表示される分くらいしか項目がないという(笑)。こっちはA3くらいの大きさの画面で見てるってのに。まあ、ブラウザを画面一杯に開いているわけでもありませんが。

 極端な話はおいといて、一覧性ってものをほぼ排除し、数えるほどの項目だけ表示し、下の方にあるリストもアクセスの多いものとかだけ。新着一覧も一度に表示される項目は大変少なく、先を見るのが面倒になるくらい。

 こうまでされるとむしろ天晴というか、もう大画面で沢山の情報を表示するという時代は過ぎたのかなぁ、とか思ったり。
 ただ思うんですが、ここタブレットで見るとどうなるんだろう……?

PCで: Windows 7の「更新プログラムの確認」(2016.8)

 先日、Windows 10の無償アップグレード期間が終了したわけですが、私のWindows PCのメインのヤツはWindows 7のままにしてあります。だって、ゲーム用だから。それも、同人ゲーとか結構入っているから(笑)。
 過去の同人ゲーとか、Windows 10対応とか期待できるとも思えませんしね。まあ、やってくれるところも中にはあるかも知れませんが。

 さて。

 Windows 7の「更新プログラムの確認」って、はっきりとはわかりませんが昨年秋頃からか、物凄く時間がかかるようになっていました。数時間とか一日とかかけてやっと完了、もしくはよくわからないエラーで終了、なんて具合いに。
 わざわざ分析しているサイトなんかもありましたっけ。

 ところがそれが、Windows 10無償アップグレード期間が終了した先週末からいきなり、すっきり終わるようになっています。ほんの数分です。私の周囲で知る限りでは、3台のWindows 7がそうです。

 うーん、あれは一体何だったのか?
 巨大なWindows 10のアップグレード(に関連するモノ)が更新プログラムに混じってるもんだから、それなりの時間がかかってたんだろうか。それともやっぱり……???

[追記: 2016-08-05]
 なにやら、7月のこのアップデートが、「更新プログラムの確認」の速度を劇的に改善という話も。
MS16-090:Windows カーネル モード ドライバーのセキュリティ更新プログラムについて2016 年 7 月 12 日

[追記: 2016-08-10]
 8月のアップデートがやってきたら、それのチェックにやっぱりまた時間がかかるようになってます……。

PCで: Xfceでデスクトップのアイコンが勝手に整列される件 (2)

 先日のエントリの続きです。別に何か進展があったわけではないのですが、ちょっとまとめ。
 Xfceを使っているとログインの際にデスクトップのアイコンが勝手に整列(rearrange)されることがあり、これは結構前から報告されているけどまだ治っていないようだという話。

[追記: 2016-06-24]
 以下の件、もう一度ちゃんと調べてみたら少なくとも昨年の時点で原因はわかっていたようですね。
[追記終わり]
○ 原因の推測
 アイコンの配列をキャッシュしているファイル(~/.config/xfce4/desktop/icons.screen*.rc)が複数あるが、そのファイル名から推察すると、xfdesktopが起動した際、XGetWindowProperty()の返す画面の高さの値が時によって変るらしい。
 数字のパターンを見ると、xfce4-panelの上下のパネル分が減らされていたりいなかったりするようだ。
 xfce4-sessionがxfce4-panelとxfdesktopを起動する際、タイミングによってxfdesktopが画面サイズを取得する時にパネルが起動されていたりいなかったりするのではないか。

○ 調査
 取り敢えず、xfdesktopの起動を遅らせてみた。これは先日のエントリで書いたやり方からちょっと変更し、以下のようにした。
 xfdesktopが例えば/usr/binにあるとして、環境変数PATHで/usr/binよりも前にディレクトリを用意し、そこに次のようなスクリプトを置いた(実際に使用したものより簡略化してある)。
#!/bin/bash
sleep 3
exec /usr/bin/xfdesktop "$@"

○ 結果
 三日程使用し、その間意図的にログイン/ログアウトを多めに実行したが、今のところ勝手に整列されたことはない。
 多分、原因については上記の推測で合っているだろう。

○ 望ましい対策
 xfce4-sessionが色んなプロセスを起動する際、依存関係とか指定できるようになっているといいのではないか。ただ、だいぶ困難な作業になりそうだ。コーディングがではなく仕様決めが。
 ……いやできるのかも知れないが、そうならxfdesktopの起動のタイミングを調整すると改善されるだろう。

 といったようなところです。ただ、最後の対策のところは先日書いたように、別に今の調査用の状態のままで困っていないので、どうもそこまで頑張る気になれません(笑)。

PCで: Xfceでデスクトップのアイコンが勝手に整列される件

 この間、PCのデスクトップ環境をMATEからXfceに変更しました。で、そろそろ慣れてそこそこちゃんと使えるようになったかな?という感じです。
 別にMATEが悪いってわけじゃなくて、理由については紹介してもしょうがないこっちの事情なので割愛。

 でそのXfceですが、ログインの際、デスクトップのアイコンがなんかたまに勝手に並び替え(rearrange)られますね。まあ、私はあまりデスクトップにものを置いていないので構わないと言えば構わないのですが、何となく気分的にもにょもにょするので、調べてみました。

[追記: 2016-06-24]
 以下の件、もう一度ちゃんと調べてみたら少なくとも昨年の時点で原因はわかっていたようですね。
[追記終わり]
 というわけでまずは検索。
 ……ですがこれ、結構前から問題になっているようですね。で、今もまだ出るということは多分原因がわからず、もしくはわかっても対処ができないといったところでしょうか。開発者の議論まではチェックしていないのでよくわかりません。
 これまでに出ている対応策としては、デスクトップのアイコンの配列に関する情報が記録されているファイル(~/.config/xfce4/desktop/icons.screen*.rc)を、やって欲しいとき以外は書き込み禁止にするというような案が出されているくらい。

 はて。
 というわけで、なんかそれも気持ち悪いのでちょこっと見てみたら、そのディレクトリにはファイルが複数ありました。
 どうやら、icons.screenN-XxY.rcというネーミングみたいです。ソースで言うとxfdesktopのsrc/xfdesktop-file-icon-manager.cのxfdesktop_file_icon_manager_save_icons(), xfdesktop_file_icon_manager_get_cached_icon_position()辺り。
 問題は、そのXとY、つまり画面サイズっぽい数字のYの方です。これがいくつかある。そのYの数字を見てみるとどうやら、画面の縦サイズからマージンを引いて、さらにパネルの高さを引いているようなんですが、上下にあるパネルの両方を引いたサイズ、片方を引いたサイズ、引かないサイズとなっているようです。私は上下のパネルを同じ高さにしているので三つですが、人によっては4つになっているかも。
 こりゃ、上記の関数から呼ばれているxfdesktop_get_workarea_single()が呼んでいるXGetWindowProperty()がたまに違う数字を返すせいかなーなどと思いました。

 考えられるのは、xfce4-sessionがxfdesktopとxfce4-panelを起動する際、パネルが全部用意される前にxfdesktopが作業を始めちゃって、タイミングによって画面サイズを見たときにパネルが起動していたりいなかったりして、結局違うキャッシュファイル(icons.screenなんちゃら)を参照して……ということではないでしょうか。

 というわけで、これは根本的な解決にはなっていない単なる実験ですが、xfdesktopの起動を遅らせてみることにしました。とは言ってもまだ使い始めたばかりでxfce4-sessionの初期化処理もよくわからないので、シェルスクリプトでイタズラ。
 具体的には、xfdesktopを別の名前にして、xfdesktopというシェルスクリプトを用意してその場所に替りに置き、そのスクリプトではまず5秒くらいsleepして本物のxfdesktopにexecするというただそれだけのものです。PATHで細工しても良かったのですが、xfce4-sessionがPATHに従ってくれるかどうかわからないし。

 それで昨夜から、PC本体の再起動も含めて10回くらいXを立ち上げ直していますが、これまでのところ勝手に整列されたことはありません。

 これでこのまま現象が出なくなったら多分当りだったということで起動シーケンスを見直す、ということを考えていたのですが、でも実際のところ、これ入れておいても起動(ログイン)に数秒余計にかかるだけで大して困るわけでもなし。
 なんかこのままでもいいかなぁ。

[追記]
 考えてみると、遅らせるのはxfdesktopじゃなくxfce4-panelの方がいいかも知れませんね。でないと、パネルの高さを変更する度に整列し直すことになりそう。まあ、そう頻繁にやる作業でもないでしょうけど。
 と思ったのですが、そうするとなんかアイコンとパネルが被りそうな……。

PCで: Bitcoin Coreでのデータベース破損について

 しばらく前にふとBitcoinに興味が湧いて色々試してみたのですが、その後ずっと放っておいて……昨年秋頃か、久し振りにネットに同期させてたら、なんかDBが壊れてるよん♪とエラーを吐いて使えなくなってしまいました。
 色々調べてみたんですが、Web上の情報だと、大体がメモリかHDD(かSSD)がエラー起こしたんじゃない?でおしまい。
 まあ、私のところも以前書いたようにちょっと危ないことをやっているので(若干の工夫はしていますが)、そんなこともあるかも知れないと放置してました。

 最近、これまたふと試してみたくなって色々調べたら、なんだかハードのエラーではなく(いやそれも原因としてあるんでしょうが)、使っているソフトのバグもあるんじゃないかなーと思うようになりました。

 使っているのは、今はBitcoin Coreの0.12.1。ログにあったエラーはこんなものでした。
LevelDB read failure: Corruption: block checksum mismatch
Corruption: block checksum mismatch

 ところでそのエラー、段々変ってきて、こんな風になって、
*** System error while flushing: CDB: Error -30974, can't open database
やがて条件によってはログファイルでなく標準エラー出力にこんなのを出して終わるように。
************************
EXCEPTION: St13runtime_error
CDB: Error -30974, can't open database
bitcoin in Runaway exception

bitcoin-qt: /home/ubuntu/build/bitcoin/depends/x86_64-unknown-linux-gnu/include/boost/thread/pthread/recursive_mutex.hpp:113: void boost::recursive_mutex::lock(): Assertion `!pthread_mutex_lock(&m)' が失敗しました.
アボートしました

 まあ、最初のエラーはもしかするとハード要因かも知れません。
 でも、最近のは一旦全部作り直したデータで出ているし、しかも、かなり頻繁にエラーが出ます。作り直しても。それだけエラーが出ると、じゃあ同じディスクにある他のデータはどうして(気が付かないほど)まともなのか。Memtest86とかbadblocksとかS.M.A.R.T.の情報とかを見ても何にも異常がみつからないのに。
 そうなると、実は最初のがハードのせいっても怪しいのではないか?などと思ったり。

 色々やった結果わかったことは、まず"-disablewallet"をつけて実行すると全くエラーが出ないこと。ということは、walletデータのみでエラーが出ているということですね。
 ブロックやインデックスはLiveDBでwalletはBerkeley DBなので、なんかソフト要因くさい。でも、どうやら新しいBerkeley DBを使うわけにはいかないらしい。

 次にもうひとつ、ちょっと決定的と言えること。
 実は、冒頭に書いたように私がBitcoin使っているのは基本的には実験のためです。なので、送ったり受け取ったりを色々試すために、複数のwalletを使い、たまに切り替えています。ちなみにまあそういうことなので、いつも"-txindex"オプションをつけています。よくわからないけどきっと必要なんですよね???
 さて。
 あるとき、もう何度もブロックデータをダウンロードするのも嫌なので、リファレンス用に"-disablewallet"でブロックデータのみを保存しバックアップも作り、必要に応じてそこからコピーするか読み込むかすればいいじゃんという挙に出ました。
 そして、そのデータに壊れたwalletを放り込み、Bitcoin Core(bitcoin-qt)を動かしてみたのです。
 ちなみに、名前は"wallet.dat"ではありません。

 そうしたら、エラーの出方が変りました。それまでそのwalletでは"-30974"のエラーが出ていた(上記二つ目のエラー)のですが、それ以降は三つ目の異常終了をするようになりました。
 結局、"wallet.dat"というファイルがあるかどうかで動作が違うようなのです。"-wallet=XXX"の指定をしていてもです。
 つまり、walletのファイルを指定していても、デフォルトの名前のwalletファイルを参照しているのでは?ということです。

 壊れてしまったらしいwalletファイルは"-salvagewallet"で治すことができたようなので、スクリプトを組み、walletを切り替えるときには"wallet.dat"というシンボリックリンクを作り、リンク先を切り替えるという方法を取ることにしました。
 その後、walletを切り替えたりしても全くエラーが出なくなりました。

 というわけで、どうやらデフォルト以外のwalletファイルを使うとバグを叩いているような気がします。
 それまでもソースを眺めたりしていましたが、ハードのエラーかと思って見ていたのでデータのどこが壊れているかを探すという観点でしたが、どうもwalletのファイル名の処理を見直さないといけないようです。

 ところが、そう思って見てみると、今GitHub上にあるソースは0.12.1からかなり改変されています。そのwalletのファイル名の辺りだけでも。
 ということは、もう改修されているかも知れない?
 gitのログにはそれっぽいのはないような気がしますが、そういう可能性があると思うとなんだか真面目にソースを追い掛ける気がしません。回避策も見つけちゃったし。

 というわけで、この間の「乗り換ればいいじゃん」的な問題よりはマシとは言えそうな気がしますが、それでも大した内容のないお話でした。

PCで: スマホのGPS情報提供します!の件

 前にひろみちゅ先生が言ってた件かなーでも探すの面倒だなーと思ったら見つけてくれた人がいたので便乗。

高木浩光@自宅の日記 - GPS捜査の総務省ガイドライン改正で携帯電話事業者と警察が不正指令電磁的記録の罪を犯すおそれ

 面倒くさくて今回の報道読んでないんでよくわからないんですけど、ここで指摘されてた件が実際に行われることが発表されたってことなんです?
 ダウンロード違法化→お代わりで刑罰化なんてのもありましたし他にもふざけた話が色々ありますが、日本のIT関連ってほんと、斜め後ろ方向に突っ走ってますね。

 でもまあ考えてみると、これ前にも話したと思いますが、日本のPC関連製品って元々複雑になるほど魅力なくなるものですよね。回路用の部品とかファンとかから始まって、電源とかケースとかまではいいんですけど、マザーとか完成品のPCとかはねー。
 関係ないですけどふと思い返してみると、私のPCって、メインはマザーが三代続けてASUS、モバイル用のノートは二代続けてASUS、メインPCのモニタはASUSと、妙にメーカーが偏ってたりします。別に主義があるとか思い入れがあるとかいうわけではないんですけど、欲しいのを探すとなんかそこに辿り着くというか。

 まあそういう個人的な話はおいといて。
 昔、ほんとかどうか知りませんけど中国製のLANのチップが勝手になんか通信してるーなんて話がありましたが、今回わかったのは、日本製のスマホも同じレベルに!ってことですかね。
 仮に当局が信用できるとしても、その仕組みが存在する以上カンペキに作られているとはとても思えず、いつかどっかの誰かがハックというかクラックしてくれちゃうに決まってますしー。
 で、AndroidのOSが新しくならないのと同じように、それも中々修正されなかったりして? いやさすがに自社で作ったものくらいは対応できるかも知れませんが、保証のかぎりではないし。

 ま、所詮は日本製ってことで。私にゃ関係ない……で済むといいなぁ。
 まさか今回の件も技適みたいになるなんてことも???
プロフィール

水響俊二

Author:水響俊二
水響 俊二 [MIZUKI Shunji]

暫定的に、18禁作品の感想などは裏サイトで書いています。
   

最新記事
最新コメント
カテゴリ
検索フォーム
リンク
RSSリンクの表示
月別アーカイブ
アクセス解析中