Yuichiro_S の Twitterでは文字数が足りないもの

Twitterに書くには向いてないことを書きます。文字数制限だとか、検索に引っかからないだとか、流れてしまって読んでもらえないだとか。

Gentoo Linux上でffmpeg 3.0.2をemergeしようとしたら依存関係でハマった話

ちょろっとしたメモです

media-video/vlcffmpeg-2.8.7を引っ張っていた(media-video/ffmpeg:0/54.56.56を引っ張っていた)

/usr/portage/media-video/vlc/vlc-2.2.2.ebuild を見る
119行目:postprocフラグがffmpeg 2.2.xを引っ張っていることが分かる
164-166行目:vdpauフラグがffmpeg 2.2.xを引っ張っていることが分かる

このuseフラグを落として
(ついでに cp /usr/portage/media-video/vlc/vlc-2.2.2.ebuild /usr/local/portage/media-video/vlc/vlc-2.2.3.ebuild して ebuild digest とかして)
emerge -N media-libs/ffmpeg virtual/ffmpeg vlc したら通った

ところどころ嘘かもしれない
以上

このままだとemerge @preserved-libsしたときにVLCコンパイルこけます configure: error: libavutil versions 55 and later are not supported. (2016/05/26 追記)

Nexus5のWi-Fiで特定のチャンネルを使うAPにつながらない件(もしかしたら海外端末一般?)

概要

他人様のNexus5からうちのAPが見えずに四苦八苦したので調べたメモ

まとめブログ並に引用ばかりになります。

出発点

Nexus5からWi-Fiをつなごうとしてびっくり。APがそもそも見えないので、つながらないどころの騒ぎではない。

特定のチャンネルが繋がらない

のコメントにあるように、特定のチャンネルを拾いません。

SIMを挿せば繋がるようになる

Nexus Help Forumのコメントhttps://productforums.google.com/d/msg/nexus/IOfMvlMrnWw/VOL9RAdg3PUJ によれば、SIMを挿すことによって "The wireless regulation" が変更される、とあります。

デフォルトではアメリカのレギュレーション

によれば、"Nexusに限らず、アメリカのWi-fiチャンネル規制の都合で海外端末は12,13chには制限をかけていることが多いようです。"

SIMなしでも繋がるチャンネルについて

List of WLAN channels - Wikipedia, the free encyclopedia を参照すると、北米では、2.4GHz帯では1〜11ch、5GHz帯では36, 38, 40, 42, 44, 46, 48chが制限なく使えるようです。そのうち、日本で使えるのは1〜11chと36, 40, 44, 48chです。このあたりを設定しておけば、今後のトラブルも少し減らせるでしょう。近所との干渉を避けるための自由度が少し減ってしまいますが……

蛇足

北米で使われるチャンネルは、ヨーロッパでは使ってはいけないことになっているチャンネルを含んでおり、なぜデフォルトで北米レギュレーションになっているのかは不思議に思うところで、かなりの理不尽さを感じます。理由が知りたいところ。
あと、先ほど引用したwikipediaの "List of WLAN channels" のページですが、5GHz帯のところの日本の記述がいろいろ間違えている(DFSと書かれるべきところにYesと書いてあるとか)ので、そこは自分で確認してください。 現在は修正されています(2016/09/10)

蛇足2

Nexus 5 Teardown - iFixit によればBroadcom BCM4339がWi-Fiには使われていて Welcome Wireless IoT & WICED™ Customers! | Cypress Semiconductor とくに変な制限はなさそうです

Zenfone5にLollipopな純正ROMを入れた

概要

Zenfone5にLollipopなStock ROMを入れた

手順

準備

ZenFone 5 (A500KL) | スマートフォン | ASUS 日本 から バージョン JP_12.4.5.57 UL-ASUS_T00P-JP-12.4.5.57-user.zip をダウンロードしてくる

adbを使えるようにするか、microSDHCカードを用意する

wipe/factory reset

I am いわゆるクリーンインストール教徒

ZenFoneを工場出荷時に戻す方法 これを参考に

電源OFF状態から、電源ボタンとボリュームダウンキーを同時長押しでリカバリに入る
ボリュームキーで項目の選択、電源ボタンで決定
Enter SD download modeを選択 wipe data/factory resetを選択してYesを選択

update/ROM焼き

internal storage/内蔵ストレージを使う場合

$ adb push UL-ASUS_T00P-JP-12.4.5.57-user.zip /data/media/

してapply update from internal storageを選択

SDカードを使う場合

実際にやっていないが、SDカードのトップディレクトリにファイルを置いて、apply update from external storageを選択すればできると思う

wipe/factory reset

念の為もう1回やる(おまじない的な安心感を得るための宗教的行事)

更新してみて

  • DalvikからARTに変わったせいだと考えるのは早計だが、全体的に若干軽い感じがする
  • ヘッドフォン端子の音が変わった: KitKatのときは信じられないほど音が悪かったが、普通の音になった
  • 相変わらず起動は遅い: ブートアニメーションが始まるまでが異様に長いので、KitKatのときよりもマトモにブートしてるのか心配になる挙動
  • スクフェスの判定が少しだけ沈んだ気がする: 2016/03/18現在の最新バージョンでの判定調整でKitKat:-4, Lollipop:-2くらい。2016/03/4のアップデート以前はKitKatで+4にしてました。
  • FGOが軽くなってほしかったけど大差なかった
  • KitKatのときはAudio Wizardをゲームモードにしないと動かなかったルイファンのキングブレード (aka キンブレ) のアプリ KingBlade - Google Play の Android アプリ が普通に動く(上記のヘッドフォン端子の音が変わったに関連する)
  • KitKatのときの「ASUS純正のこれ、いくらなんでもひどくない?」みたいなのが減った(個人の感想です効果には個人差が以下略)
  • スクショ入れ忘れたので追記 (2016/03/18) f:id:Yuichiro_S:20160318025937p:plain:w240f:id:Yuichiro_S:20160318025940p:plain:w240f:id:Yuichiro_S:20160318025943p:plain:w240
  • プリインアプリが凶悪である一方で、無効化できるアプリが増えてる(追記:2016/03/18)
  • これ書き忘れてました tz sbl1 rpm aboot rpnm modem adi asusfw が焼かれてます
    ブートローダまわりとmodemとasusfwが書き換わってるのはわりと気になるところですね (追記:2016/03/20)
  • バッテリ残量表示がなんか変わった気がします。すこし低めの数字が出るような……? 数字はすぐ減るけれども稼働時間的にはほとんど変わっていないような、減ってから粘るような感触です。 (追記:2016/03/20)
  • 画面上にメニューボタン出ません、Recentボタン長押しに割り当てるしかなさそうです (追記:2016/03/20)

気付いたことがあったら書き足していきます

tmuxでペインの表示が更新されなくなる問題と端末のリセット

バイナリファイルを標準出力に投げてしまって端末エミュレータの表示がぶっ壊れるということがありますが、 tmuxでペインの表示が更新されなくなるときにもこれは使えた、という話です。

何も表示されなくなる、完全に無反応になる(^Cを入力すると反応はありますが)、という見た目に騙されて、 なにかしら自分の知らない変なモードに入っているのだと思い込んでいましたが、単に表示がぶっ壊れているだけのようです。

そもそも変な文字を標準出力に流したりしてない不思議なシチュエーションでこの現象が発生するんですよね……謎です……

知識が偏っていて、化石のような

$ echo -e \\033c
$ echo ^[c

あたりは知っていたんですが、なんと

$ reset

を叩けばいいだけでした。resetコマンドはncursesに入っているようです。 resettsetへのsymlinkです。以下man resetより引用

When  invoked  as  reset,  tset  sets  cooked and echo modes, turns off
cbreak and raw modes, turns on newline translation and resets any unset
special  characters  to  their default values before doing the terminal
initialization described above.  This is useful after  a  program  dies
leaving a terminal in an abnormal state.  Note, you may have to type

    <LF>reset<LF>

(the  line-feed character is normally control-J) to get the terminal to
work, as carriage-return may no longer  work  in  the  abnormal  state.
Also, the terminal will often not echo the command.

AndroidでPNGにアルファチャンネルを付加 (pic.‍twitter‍.com 改悪対策)

毎度毎度余計なことをしてくださるTwitterのあれやこれやの回避策

ロスレスで上げようとしているのに勝手にJPEGにされるのの対策として

  1. GIFでアップロードする(GIF動画のためなのか複数画像不可)
  2. 透過情報(アルファチャンネル)つきPNGでアップロード

あたりがありますが、アルファチャンネルを付加できるアプリを知りませんでした。
探したら案外あっさり見つかったのでメモ。

play.google.com

使い方は普通のGIMPとかと同じような感じです。

Twitter for Androidでの長辺1024pxを超えると勝手にJPEGに変換される仕様は健在なので、それより大きな画像が上げたかったら twiccaとかSobaChaとか使いましょう。

ちなみに、透過PNG以外ならこれがお気に入りです。

play.google.com

PhotoShop Elementsは微妙にかゆいところに手が届かないですよね……

mikutter で "だれそれについて" を開くと "ふぁぼが取得できませんでした (undefined method `[]' for nil:NilClass)" を吐く件のメモ

ただのメモ

$ grep -r count_favorite_by .
./core/plugin/profile/profile.rb:    user.count_favorite_by.next{ |favs|
./core/user.rb:  def count_favorite_by

user.rb

127   # ユーザのメッセージが今までお気に入りにされた回数を返す
128   def count_favorite_by
129     Thread.new {
130       open("http://favstar.fm/users/#{idname}"){ |io|
131         m = io.read.match(/<div[\s]+class='fs-value'[\s]*>[\s]*([0-9,]+)[\s]*<\/div>[\s]*<div[\s]+class='fs-title'[\s]*>[\s]*Favs[\s]*Received[\s]*<\/div>/)
132         @value[:favouritesby_count] = m[1].gsub(",", "").to_i } } end

なぜfavstarなんぞを叩いている……

profile.rb

305     user.count_favorite_by.next{ |favs|
306       w_faved.text = favs.to_s
307     }.terminate(_("ふぁぼが取得できませんでした")).trap{
308       w_faved.text = '-' }

とりあえず

profile.rb

305        w_faved.text = '-'
306 #    user.count_favorite_by.next{ |favs|
307 #      w_faved.text = favs.to_s
308 #    }.terminate(_("ふぁぼが取得できませんでした")).trap{
309 #      w_faved.text = '-' }

user.rb

128 #  def count_favorite_by
129 #    Thread.new {
130 #      open("http://favstar.fm/users/#{idname}"){ |io|
131 #        m = io.read.match(/<div[\s]+class='fs-value'[\s]*>[\s]*([0-9,]+)[\s]*<\/div>[\s]*<div[\s]+class='fs-title'[\s]*>[\s]*Favs[\s]*Received[\s]*<\/div>/)
132 #        @value[:favouritesby_count] = m[1].gsub(",", "").to_i } } end

Youtubeで動画に使用されているコーデック(映像・音声それぞれ)の判別をする方法

概要

ブラウザ上から、現在再生している動画の映像と音声のコーデック(ついでに解像度とかも)を判別する方法です。
動画のフォーマット番号を見るお話です。
[2017/11/08 追記] なんかWikipediaの記述が消えてたので、同等の記述を記事に足しました。

前置き

Youtubeで動画や音声に使用されているコーデックが何なのか気になったことはありませんか?
私はありませんでした。そう。あのOpusが既に使われているということを見聞きするまでは。

コーデックが何なのか確かめるためには、生の動画データにアクセスできないと無理だと思っていませんか?
私は思っていました。そう(ry

手順

例示画像は記念すべきOpusが使われていると教えてもらった動画です。
動画を右クリックします。
f:id:Yuichiro_S:20160129232926p:plain
詳細統計情報をクリックします。
なんか出てきます。映像部分がWebMでVP9で1080pなのはもうこの時点で書いてありますけど、見なかったことにして先に進みます。
f:id:Yuichiro_S:20160129232924p:plain
矢印のところの数字を見ます。248/251と書かれていますね。これがフォーマット番号です。 f:id:Yuichiro_S:20160129233725p:plain

YouTube - Wikipedia の Comparison of YouTube media encoding options のところを見ます。

[2017/11/08 追記] Wikipediaの記述消えてます。 YouTube内で4Kで検索して一番最初に出てきたのが Zion National Park. Autumn - 4K Nature Documentary Film - YouTube だったので、これの Format Code を書いておきます。4K動画なら、たぶん全フォーマット網羅してるでしょ? ってことで。

format code  extension  resolution note
139          m4a        audio only DASH audio   66k , m4a_dash container, mp4a.40.5@ 48k (22050Hz)
249          webm       audio only DASH audio   76k , opus @ 50k, 32.86MiB
250          webm       audio only DASH audio   95k , opus @ 70k, 43.32MiB
140          m4a        audio only DASH audio  132k , m4a_dash container, mp4a.40.2@128k (44100Hz)
171          webm       audio only DASH audio  151k , vorbis@128k, 69.07MiB
251          webm       audio only DASH audio  169k , opus @160k, 83.91MiB
160          mp4        256x144    DASH video  113k , avc1.4d400c, 24fps, video only
278          webm       256x144    144p  126k , webm container, vp9, 24fps, video only, 56.18MiB
133          mp4        426x240    DASH video  264k , avc1.4d4015, 24fps, video only
242          webm       426x240    240p  270k , vp9, 24fps, video only, 115.75MiB
243          webm       640x360    360p  521k , vp9, 24fps, video only, 223.46MiB
134          mp4        640x360    DASH video  648k , avc1.4d401e, 24fps, video only
244          webm       854x480    480p  995k , vp9, 24fps, video only, 418.93MiB
135          mp4        854x480    DASH video 1374k , avc1.4d401e, 24fps, video only
247          webm       1280x720   720p 1992k , vp9, 24fps, video only, 865.87MiB
136          mp4        1280x720   DASH video 2539k , avc1.4d401f, 24fps, video only
248          webm       1920x1080  1080p 3410k , vp9, 24fps, video only, 1.49GiB
137          mp4        1920x1080  DASH video 4694k , avc1.640028, 24fps, video only
264          mp4        2560x1440  DASH video 10984k , avc1.640032, 24fps, video only
271          webm       2560x1440  1440p 11569k , vp9, 24fps, video only, 4.90GiB
266          mp4        3840x2160  DASH video 23644k , avc1.640033, 24fps, video only
313          webm       3840x2160  2160p 24086k , vp9, 24fps, video only, 10.62GiB
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
43           webm       640x360    medium , vp8.0, vorbis@128k
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

[2017/11/08 追記ここまで]

248番 が コンテナがWebM、解像度1080p、コーデックVP9、
251番 が コンテナがWebM、コーデックがOpus、ビットレートが160kbps であると分かります。

(Wikipediaの記事の脚注にもあるように、このビットレートは実際のものとは異なります。)

だいたいの動画は、
映像が133, 134, 135, 136, 242, 243, 244, 247, 248
音声が140, 251
あたりな気がします。

余談

比較的新し目の動画で、720p以上の解像度を再生すると、VP9が使われていることが多く、思っていたよりWebMが普及しているんだなぁ、という感想を抱きました。世の中MP4だと思っていたので。
まぁそんなことよりOpusですよOpus。VP8とVP9に比べて知名度ないでしょ。自分も知りませんでしたもん。しかもなぜかわりと使われているし。世の中MP3とAACしかないと思ってましたよ。

Opusはいいぞ。