プロバイダ責任制限法 第4条2項

痛いニュースより転載

  • アマゾンからカスタマーレビューの投稿者に対し、個人情報(氏名、住所?)の開示請求が来たという
  • レビューした本は、『勝つ投資 負けない投資』で、レビュー内容は
    『片山氏の売名目的の本
    当たり障りのないことしか書かれていない。
    かつてのように同人誌で自分の書きたいことを書けばいいのに。
    岡三オンラインのセミナーもひふみFFRI疑惑で苦情が殺到したのかいきなり終了した。
    フェローテック買い煽りで売却とか合法だけど尊敬できない手法を使う。(← 2chとかで買い煽りを入れてるのって、他人に買わせて自分は高値を売り抜くつもりだとか。合法な詐欺ってことで、やったもの勝ちの悪行。株は悪人が勝つようになってる。
    著者が大量保有している銘柄は怖くて買えない。』
  • アマゾンのメールは『お客様が投稿された、下記のレビューについて、当サイトに対して、著者の代理人より特定電気通信役務提供者の損害賠償責任の制限及び発信者情報の開示に関する法律(プロバイダ責任制限法)第4条2項に基づく発信者情報の開示請求がなされております。』

(ttp://blog.livedoor.jp/dqnplus/archives/1843657.html  Amazonレビューで★一つをつけたレビュアーに開示請求が届く → レビュー欄大炎上 2015年06月14日
ttp://kanae.2ch.net/test/read.cgi/market/1434094625/612 cis4958 竿姉妹男/投資一般@2ch掲示板 2015/06/13)

プロバイダ責任制限法を利用するってことは、法律に詳しく、法律を武器に変える行動力があるっていうこと。そういうところが、片山氏が投資で勝てる秘訣かと思った。

 

特定電気通信役務提供者の損害賠償責任の制限及び発信者情報の開示に関する法律(プロバイダ責任制限法)

(発信者情報の開示請求等)
第四条 特定電気通信による情報の流通によって自己の権利を侵害されたとする者は、次の各号のいずれにも該当するときに限り、当該特定電気通信の用に供される特定電気通信設備を用いる特定電気通信役務提供者(以下「開示関係役務提供者」という。)に対し、当該開示関係役務提供者が保有する当該権利の侵害に係る発信者情報(氏名、住所その他の侵害情報の発信者の特定に資する情報であって総務省令で定めるものをいう。以下同じ。)の開示を請求することができる。
一 侵害情報の流通によって当該開示の請求をする者の権利が侵害されたことが明らかであるとき。
二 当該発信者情報が当該開示の請求をする者の損害賠償請求権の行使のために必要である場合その他発信者情報の開示を受けるべき正当な理由があるとき。
2 開示関係役務提供者は、前項の規定による開示の請求を受けたときは、当該開示の請求に係る侵害情報の発信者と連絡することができない場合その他特別の事情がある場合を除き、開示するかどうかについて当該発信者の意見を聴かなければならない。
3 第一項の規定により発信者情報の開示を受けた者は、当該発信者情報をみだりに用いて、不当に当該発信者の名誉又は生活の平穏を害する行為をしてはならない。
4 開示関係役務提供者は、第一項の規定による開示の請求に応じないことにより当該開示の請求をした者に生じた損害については、故意又は重大な過失がある場合でなければ、賠償の責めに任じない。ただし、当該開示関係役務提供者が当該開示の請求に係る侵害情報の発信者である場合は、この限りでない。 (← 故意で開示請求に応じなければ、賠償責任がある、と読み替えられる。ネットの情報発信を匿名ではなくならせたいと考える勢力による、権利を侵害する情報発信の個人情報の特定を認める法律だ。となれば、日本の法律が届かない海外のプロバイダが非常に魅力的になってくる。無政府主義の筆者としてはこの匿名ブログを日本のseesaaに作ってしまったことを後悔せざるを得ない。

(http://law.e-gov.go.jp/htmldata/H13/H13HO137.html)

 

問題のアマゾンのカスタマーレビュー

見るべきものがありませんでした。, 2015/5/23
無難にまとめただけの内容にがっかりしました。得るべきものは何もありません。彼を三顧の礼で迎えた過去を持つレオスのイメージも下がりました。

買って損した, 2015/5/29
著名な人の推薦があったので買ったけどダマされた気分。知りたいことは殆ど書かれてない。予約で買って失敗した。ちゃんと中身確認すればよかったです。編集者にヤラれた気分。

たぶん嘘がいっぱいでしょう。, 2015/6/9
たぶん嘘がいっぱいでしょう。はっきりいって1600円でももったいない。具体的な証拠や経過が全然書かれてない駄本です。

開示請求されるのは怖いです, 2015/6/14
開示請求されて損害賠償されるのは怖いんでこの著者には関わらないほうがいいです><

なにこれ, 2015/6/14
気に食わねえレビューしたやつは特定すっからな!ってこと?批判されるのが嫌なら出版しなきゃいいのに。

片山氏の売名目的の本, 2015/5/17
当たり障りのないことしか書かれていない。かつてのように同人誌で自分の書きたいことを書けばいいのに。岡三オンラインのセミナーもひふみFFRI疑惑で苦情が殺到したのかいきなり終了した。フェローテック買い煽りで売却とか合法だけど尊敬できない手法を使う。著者が大量保有している銘柄は怖くて買えない。

すごい、すごい、すごい, 2015/6/12
日経の広告を見て興味をもってしまい買ってしまいました。とても陳腐な内容である意味「すごい」です。これを読むくらいなら、林輝太郎先生の「うねり取られ入門」を読んだほうが、絶対ためになります。

フェローテックの手法, 2015/6/14
フェローテックの手法について書いてなかったのが残念でなりません。

開示請求されるの?, 2015/6/14
何か話題の本みたいですね。星ひとつつけたら開示請求とか、賠償責任とかされるらしい。本の評価、どう思うか。そんなの人によるでしょ。星ひとつつけたらそんなことされるんなら、アマゾン終わりだよ。馬鹿じゃないの? (← 終わりはしないと思うが、アマゾンでは残念なことに権利者を褒めることしかできなくなったと思う。権利者を褒めないカスタマーレビューを書く人は、恐れを知らない一部の人だけ。

5ページ読んでやめました, 2015/6/13
ブックオフで50円で売っていたので買いました。文章が小学生並で読んでイライラするので、そのまますぐにゴミ箱に捨てました。

開示請求自体は、、、、, 2015/6/14
本を読みましたが、☆ひとつ付けられても仕方ないかと思いました。また、開示請求をしている、というのも本当だと思います。そもそも投資で成功したのは本当なので、この本を出すことが、彼にどれだけメリットがあるのか疑問。今後、どうなるかな、、、。ただ、開示請求自体は、amazonnの姿勢自体に問題があるような。
1,☆一つ連発するアカウントの一方的な停止。
2,関係者による☆5連発、露骨な桜レビューの放置
3,それほど精度の良くない、このレビューシステムごときで、検閲まがいの開示請求をするという、よくわからない態度
アマゾン、レビューシステムの改良を強く望みます。

期待していた事が書かれていなかった, 2015/6/12
日本ライフラインを連日50%以上の介入率で買い上がっていた件の詳細を知りたかったのだが、それについて一切言及が無かったので残念です。

一番熱いあのトレード!, 2015/5/17
片山氏がブログ、ニコ生、雑誌などでフェローテックを買い煽りして
、自分の頭で考えない素人たちが群がったところで持ち株を一気にぶつけて売り抜けた見事な手法についての解説が書かれているかとわくわくしてページをめくったが、ほとんど記述がなくほんとうに残念だった。フェローテックの売却直後に片山氏が買い煽りのブログ記事を消去し証拠隠滅を図られたことから考えるとご本人には違法性の認識があったのかもしれないが、私はギリギリセーフだと思っている。だいたい人のポジショントークを真に受けて命の次に大事な金で株を買うような輩は投資家でもなんでもない。ただ喰われるために存在する偏差値29のカモなんだからそんな奴らに配慮する必要など一切ない。片山氏には堂々と胸を張って今後も投資の王道を突き進んでもらいたい。
(追記) 「4年間のネトゲ廃人生活の直後に株式投資を始めました。軍資金はアルバイトで貯めた65万円です。」という設定はさすがに「いつアルバイトしたんだよ!」というツッコミが入りまくると思うので修正したほうがいいように思います。

つまらない本でした, 2015/5/17
片山さんが25億稼いだ軌跡でも書いてあるのかと思ったがそれもなく読んで役に立つ手法は一切書いてありませんでした。

ありえない, 2015/6/14
低評価で開示請求。ありえない!高評価しか認めないなら、評価制度自体が不要
。以上感想でした。 (← これは良いレビューだ。高評価も低評価もあるからこそ、評価制度が成立する。評価制度を不要にしてしまうプロバイダ責任制限法が間違った法律だ。安部首相が騒いでいる放送法の「意見が対立している問題はできるだけ多くの角度から論点を明らかにすること」についていえば、良い意見も悪い意見もあった方が、角度が増えていいのである。良い意見しか認めなくて、対立軸がなくなってしまうとしたら、とても不自然なことなのである。

本人は否定せど、間違いなく天才, 2015/5/21
まだ途中までしか読んでいないけど「多くの方に役立つ内容になることを目指して書いてます」とは思えない。それならもっと勉強してから出せばいい。片山さんは実戦力はあるけど知識はない。片山さんは理論を兼ね備えていない天才に間違いないが、ただ儲けただけの素人は多い。

(ttp://www.amazon.co.jp/dp/4844374125  勝つ投資 負けない投資 単行本(ソトカバー) 2015/5/15)

2015/5/15に発売したばかりで、6/15現時点で金融・ファイナンスカテゴリでベストセラー第一位となり、炎上商法が成功してる。

ハンドルネーム五月さんこと片山晃さんのインタビュー

銘柄選択のコツ

    いえ、意外に思われることが多いのですが、僕はスクリーリングはしないんです。2つ方法がありまして、ひとつは一社一社ひたすら決算短信を見て、その中で変化を見つける方法です。世の中に出ていない情報を無理に探すのではなく、開示されて誰でも知ることができる情報をしっかり分析していく。見続けていくと、よく目を凝らさなければ分からないところが見えてくるんです。それがいつマーケットに認識されて株価に反映されるのかは分からないので、半分見えかかっているくらいのところが一番おいしいと思います

    ふたつ目は、世の中の流れにうまくはまる出来事や企業を探して、見つけたらその周辺にも見る目を広げていくという方法です。例えば、先日オリンピック招致が決定したとき。7年後のオリンピック開催に合わせて、一生に一度あるかないかの出来事を自分の子供と一緒に見たいと思う人は多いはずだと思いました。今から結婚して子供を生んだら、子供は4-5歳で物心がつくころです。そこで、婚活やブライダルの銘柄がいいのではないかと考えました。

最近、五月さんがうまく時代に乗っていると思われる業種はありますか?

    去年から注目していたのはインターネット広告のセクターですね。スマートフォンというハードがこれだけ普及したら、今度はその中で情報を提供するソフトで稼ぐ企業が出てくるだろうなと思っていました。それはeコマースであったり、ソーシャルゲームであったりいろいろありますが、どこがヒットしようとも、インターネット広告はネットビジネスを成功させるためのインフラみたいなもので、どこの企業も欠かすことはできない。そこでポートフォリオの基盤にしようと考えていました。

(http://kabu.com/item/shinyo/technique/gogatsu.html 勝つための取引手法(五月氏インタビュー) 【カブドットコム】 2013年10月?)

これだけ話題になると、片山氏に運用してもらおうとレオス(ひふみ投信)に資金が集まるのではないだろうか。レオス関連のファンドや銘柄が上がるかも?筆者は言ってみただけなので、買い煽ってるのではない。

posted at 2015年06月15日 03:03 | Comment(0) | ネットウォッチ | このブログの読者になる | 更新情報をチェックする

MSYS、MSYS2、Cygwin、msysgit の違い

日本語でほとんど知られてなさそうに思ったので日本語訳してみた。

(ソース http://stackoverflow.com/questions/25019057/how-are-msys-msys2-and-msysgit-related-to-each-other  Jul 29 '14)

  • 他の3つは全てCygwinプロジェクトからフォークしたもの
  • 私の理解では、少なくとも過去はMSYSとMinGWはCygwinの競合として作られた。CygwinはWindows APIを直接呼ばず、パフォーマンスの良くない互換性レイヤーを通らなくてはいけない。MSYSとその親類縁者はCygwinよりも軽量である。MSYSコードを調べたら、あきれるほど時代遅れで、共用メモリに対する基本的な同期すらしてなかった。メンテ者が上流に遅れずについていっておらず、Cygwinがやった共有メモリの修正をしてなかった。
  • (上のコメントに対して)あなたは誤解している。要点は、Cygwinは互換性レイヤーなしで新しいバイナリを作ることをサポートしていないということだ。
  • (上のコメントに対して)それは間違いだ。MSYSのリポジトリを調べたら、Cygwinとまったく同じリポジトリ(同じ組織、同じコードなど)と分かるだろう。MSYSのすべてのファイルが10年以上前のものであることを除けば。私が理解しないのは、MSYS2とCygwinの開発者が折り合えばばかげたフォークをなくせるのに小競り合いをやめないことだ。Cygwinには有給のRed Hatの従業員がいる。MSYS2はいま活力があるが、MSYS2のボランティアが更新をやめたら、MSYSのように停滞してしまう未来が見える。
  • 私はMSYS2の開発者だ(免責事項)。MSYSは死んでいないが、あまり健康的にみえないと言っておく。MSYSは何年も前にCygwinのフォークとしてプロジェクトが始まり、決してCygwinに遅れずについていかなかった。msysgit はMSYSの少し古いバージョンのフォークで、あつらえのパッチや古いバージョンのbashやperlがある。MSYS2はmingwビルドチームの Alexey Pavlovによって始められたプロジェクトで、最新のCygwinをきっちりと追跡している。Alexeyは古いMSYSのパッチを移植し、彼自身のパッチも付け足した。Arch Linuxからパッケージ管理のPacmanを移植した。Pacmanはバイナリパッケージを管理する以上のもので、makepkgと呼ばれるインフラをビルドするソフトでもあり、PKGBUILDとパッチを作ることができる。卑見ながら、Pacmanの採用はWindowsのオープンソース開発の状況を大きく変えた。 MSYS2は、Windows XP SP3を最低限のターゲットとし、32ビットと64ビットの両方のWindowsをサポートしている。MSYS2をmsysやmsysgitと混在させないように求める。

 

MSYS2がAlexeyさんのGitHub(ttps://github.com/Alexpux/)を本拠地にしている事情がよくわかった。FFmpegのGitHub(ttps://github.com/FFmpeg)はURLにMichaelさんの名前が出てこない。URLに名前が出てきたら個人的な印象が強まる点が気になった。gimp、ffmpeg、vlcをビルドした前の紹介記事にあるようにMSYS2のmakepkg-mingwからPacmanまでの仕組みに感動したものだが、それがMSYS2の特徴であることが裏付けられた。CygwinはRed Hatがサポートしてて安心だが、MSYS2 は互換性レイヤーがなく軽量で、makepkg-mingwからPacmanというすばらしい仕組みがあってお勧めである。makepkg-mingwを使うことにより、PKGBUILDという簡単な設定ファイルを作るだけで、必要なパッチだけを取り込んで最新のコードをビルドすることができる。これは最小限の手間で、最新のコードに遅れずについていくためのすばらしい仕組み。さらにPacmanでバイナリのリポジトリを共有することができ、リポジトリに登録されたパッケージ一覧を出すことも、パッケージをインストールすることもできる。2chにCygwinのスレがあるのに、MSYS2のスレがなく、ニコ生のもっと評価されるべきタグが付いていい。

posted at 2015年06月14日 13:33 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

与党の安保法制が潰れた感

 

安保法制をめぐる国会が、政府与党にとって想定外の展開となってきた。4日(木)衆院憲法審査会で、各党が参考人として招致した3人の憲法学者の全員が違憲と発言。

自民公明次世代が推薦した長谷部早稲田大学法学学術院教授が「集団的自衛権の行使が許されるという点については、憲法違反であると考えております」と発言。もちろん民主と維新が推薦した他の2人の憲法学者も違憲と発言。与党の推薦した参考人まで違憲との見解を示す想定外の展開。

衆院憲法審査会 船田自民党筆頭幹事 「参考人の皆さんのご発言はそれなりに一理ある。」 (← 幹事なのにこのおっさん弱気で更迭されそうw 与党が呼んだ人までも違憲とした痛恨の人選ミスに与党の誰かが責任とらないといけないw

菅官房長官 「憲法解釈として法的安定性や論理的整合性は確保されている。全く違憲でないという著名な憲法学者もたくさんいる。」 (← こっちは強気だが、そんなこと言っていいのか?たくさんいる憲法学者と3人の憲法学者で論争させて国民に論点を明確にしろっていう話になる。そう考えると、今期成立を目指すのは強引すぎるし、時期尚早すぎる。

3日(水) 憲法学者らが安保法制は憲法違反であるとして廃案を求める声明を発表。現在180人以上が賛同している。 (← そんなにたくさん憲法学者がいると思えないので、ほぼ全ての憲法学者が違憲だと言ってることになる。

第一次安倍政権で内閣法制局長官を務めた宮崎氏も「憲法を改正しないかぎり集団的自衛権の行使は認められない。ここはもう憲法を改正するかどうかの問題で、部分的(容認)だからいいでしょうという理屈はいくら考えてもない」と発言。 (← 政府見解を全否定しててうけるw

寺島実郎 「憲法を改正しないで解釈を変えて、集団的自衛権という名で、外国の戦争に参加することを、憲法学者が真剣に考えたら、それを認めてしまっては、現行憲法が存在する意義がないということに行き着くってのは論理的に非常によく分かる。

ここんとこ何故そこまでして安保法制を進めようとしているのかという意味において、その中心にいて支えている人達と議論する機会が何回かあった。進めてる人たちもこの国の未来にとってプラスになると思って進めてるに決まってる訳ですから、じゃあどういうことなんだと。

少なくとも3つくらい思いがある。1つは湾岸戦争のトラウマで、あの時はお金だけ出しても結局、世界では認められなかった。やっぱり軍事的なっていう誘惑が腹の中にある。2つ目、中国の脅威に対する思いが非常に大きくある。3つ目、これが重要。アメリカに対する不安と不満、つまり今のアメリカでは世界をガバナンスしていくのに心もとない。肩代わりとまでは行かないけども日本がという思いが強くある。

今世界が大きく変わろうとしているのに対して、この安保法制の背後にある考え方は、日米同盟を強化して世界に向き合っていこうという考え方に尽きる。さて、この考え方が21世紀の世界を展望した時に、どこまで正当なのかということを国民としてしっかり考えないといけない。

国際政治学の世界で話題になっているキッシンジャーのワールドオーダーという本を気にしている。次の世界秩序はどうあるべきか。400年続いた近代の政治の枠組み、例えば国民国家だとか民族自決だとか宗教要素の排除というものがまた新たな秩序を求めて動き始めている。1648年のウエストファリア条約以来、400年目の大きな世界の変化が来てるってキッシンジャーが言い始めている。さらに冷戦後25年経ってアメリカの一極支配の時代が終わって、G7なんかではガバナンスが効かない時代になっている。

そういう時代に対する日本外交の構想力。外交と軍事は二本柱。軍事っていう方にだけに力が行ってる日本というのは、つまり外交に対する、日本が世界を見渡してどういう時代を創るのか、例えば核なき世界一つとっても、そういうものに対する構想力に欠けてるから、我々自身も含めて安保法制みたいな議論に躍起になる、ということなんだろうなと僕は思ってます。」 (← こんな長い台詞よく暗記できるな。

安田菜津紀 「同世代の中でももしも他国から攻められたらということを考えると、この法案はやむを得ないのではないかという声が度々上がっているけれども、ただ他国から攻められるかもしれないという想定をするばかりで、他の手段を使って回避をするための議論が抜け落ちている

武力に走るということは、相手を理解するための道を断ってしまう。その反省があったから今の憲法がある。その憲法に反するという指摘があったということは、他国と対話を絶やさないための警鐘ではないかと思っています。」 (← 寺島と対照的に短くうまくまとめた。

(今週6/7のサンモニ)

 

6/9時点で違憲に賛同している憲法学者の数が200人に増えてる。

  • 呼びかけ人38人+賛同人162人

(ttp://anpohousei.blog.fc2.com/blog-entry-2.html 安保関連法案に反対する憲法研究者)

 

違憲でないという憲法学者は何百人もいるうちの2、3人だけ。

小林氏は審査会後、「日本の憲法学者は何百人もいるが、(違憲ではないと言うのは)2、3人。(違憲とみるのが)学説上の常識であり、歴史的常識だ」と言い切った。

(http://yomogi.2ch.net/test/read.cgi/giin/1433421116/15 2ch 安保法案は「違憲」与党墓穴)

 

寺島の考える外交の構想力は核不拡散かな。

  • 日本の政治で飯を食っている人たちが、日本国民の将来、国際関係の中でどうするのか。NPТなんていう核不拡散。日本こそニューヨークで行われていた会議で新しい構想をもって世界を引っ張っていくんだというくらいの構想を示さなくてはいけない
  • ひたすら、アメリカの核に守られた次の日本を作っていくんだと発信しているから迫力がない。今世界は、中国だろうがロシア、アメリカだろうが皆自前の構想力をぶつけあっている時代なんですよ。じゃ日本の構想力って何なんだと問われている。

(ttp://ameblo.jp/torisukiyonori/entry-12030433552.html 鳥巣清典の時事コラム1316「キッシンジャー氏『新しいゲームのルールが世界を動かしつつある』」)

 

  • 民主党の辻元清美政調会長代理は六日のテレビ東京番組で、集団的自衛権行使を容認した安倍政権の憲法解釈変更に関し、民主党が将来、政権を獲得した場合は行使を禁じる従来の解釈に戻す考えを示した。 (← 安保法制は安倍政府の大失態?選挙の争点が集団的自衛権を認めるか認めないかになったときに、次の選挙で自民党が不利すぎる。安倍政府がやらかした感が強く、自民党がここからどう挽回してくるかが見ものである。)

(ttp://www.tokyo-np.co.jp/article/politics/news/CK2015060702000114.html 論戦 潮目変わる 各論から「違憲立法」へ 2015年6月7日 朝刊)

 

政府・与党は、集団的自衛権の行使容認を含む安全保障関連法案の今国会会期末(24日)までの衆院通過を断念する方針を固めた。 (←与党の判断が速い。国会の前にアメリカに行って約束してきたという話はなんだったんだw

(ttp://mainichi.jp/select/news/20150609k0000m010142000c.html  安保法案:会期内の衆院通過断念 「違憲」指摘が影響 2015年06月09日)

posted at 2015年06月09日 09:40 | Comment(0) | ニュース | このブログの読者になる | 更新情報をチェックする

Poedit と msguniq を使って VLC を日本語化してみた

前回の記事「VLCを日本語で表示する方法とgettextの調査」の続き。

 

前回までのあらすじ

MSYS2+MinGW Windows環境でVLC をビルドしたら日本語にならず、いかにして日本語を表示させたかの苦労話を綴った。今回は、翻訳ファイルを更新して翻訳されていない単語を翻訳してみた。そのために Poedit と msguniq というツールを使ってみた。

 

Poedit とは

ソースコードから翻訳語句を抽出するコマンドラインツール  xgettext のGUIフロントエンドソフト。Project-Id-Version:等のpoファイルのテンプレートの設定が分かりやすい。それだけでなく、翻訳語句を検索して翻訳を埋める作業が GUIでできるようになっている。翻訳の提案で選択肢が出てクリックするだけで翻訳を埋められる。

フリーで使う場合、自身の翻訳を Poeditサーバーに送信し、有料の制限解除版にしたら、翻訳の提案の選択肢に他の人の翻訳が出てくるようになると思われる。本格的に翻訳したい人はお金を払ってしまいそうになるアフィリエイトのようなビジネスモデルに感心した。

Poeditは使われなくなった翻訳語句を残して翻訳語句を追加することができないようだ。VLCのバージョンが変わって、ソースがqtr("Decrease Volume")からqtr("D&ecrease Volume")に変わった時に、Poeditはどちらかの単語だけを残す仕組みだが、VLCの古いバージョンにも新しいバージョンにも同一の翻訳ファイルが使えるように両方を含めたい。古い翻訳語句も残す方法として msguniq を見つけた。

グーグルで検索したらトップに来る「Poedit 日本語情報トップページ - OSDN」からダウンロードするのは孔明の罠だ。バージョンが1.5.7と古く、2013-07-06 から更新されていない。2番めに検索される「Poedit - Gettext Translations Editor」からダウンロードできるバージョン1.8.1が2015-16-04現在で最新。

 

msguniq

pacman -S gettext でインストールできる PO ファイルを操作するコマンドラインツール。複数回登場する翻訳語句を1つにしたり、ソート(-s)したりできる。po の新旧ファイルをテキストエディターに貼り付けて msguniq にかければ、新旧の翻訳語句の両方を含められる。msguniq -s 入力.po -o 出力.po として使う。-dで重複した翻訳語句だけを抜き出せる。重複した翻訳語句には #, fuzzy 行がタグとして付いて出力されている。Poeditはfuzzyに対応する翻訳語句のフォントが金色で表示されて、未確定翻訳とされている。文字コードがBOMなしUTF-8で動いた。

使えるかどうか分からないが、msgattrib --no-fuzzy 入力.po -o 出力.poで未確定翻訳語句(fuzzy)を全部削除できる。 msgattrib の説明にobsolete mesasge(#~)を消すオプションがあったがこれ(#~)何だろ。

 

Poedit と msguniq を使って VLC の未翻訳語句を翻訳する方法

  1. po/ja.po のバックアップ(ja_bk.po)を取ってからPoeditで開く
  2. ファイル>設定>保存する際に MO ファイルを自動コンパイル、のチェックを外す。
  3. カタログ>設定>翻訳の設定>ソースコードの文字符号化法を UTF-8(推奨) に変更。(これをしておかないと、ソースコードに UTF-8の文字があった場合に、Non-ASCII のエラーが出ててソースからの更新がエラーで停止する) 。その上の文字符号化法は初めからUTF-8(推奨) になってた。
  4. カタログ>設定>ソースの検索パス>中央のパスにソースのトップフォルダを指定。除外するパスは不具合があって動作しないようだ。
  5. 表になってる中央上の各行で右クリック>参照位置、でソースファイルを参照し、ソース中のキーワードを抜き出す。
    VLCでは、_("Media Library") のキーワードは、 _
    N_("Stereo") のキーワードは、 N_
    qtr( "Display the output" ) のキーワードは、 qtr
    _NS("This allows streaming on a network.")) のキーワードは、 _NS
    Q_("VLC media player updates", 0) のキーワードは Q_
    と分かる。これらのキーワードを探しだして、カタログ>設定>ソース中のキーワード、に追加する。 ファイルpo/Makevars にあるXGETTEXT_OPTIONS の--keyword=_ も参考になる。ここに書いてある _ANS もキーワードに追加しておく。
  6. 以上の設定をして、カタログ>ソースからの更新、をすると、多分 xgettextが動いてソースから翻訳単語を抽出される。翻訳単語の数が大きく減る場合もあるので、ステータスバーにある翻訳単語の数には注意しておこう。
  7. (カタログ>POTファイルから更新、でPOフォルダに1個だけ置いてあるPOTファイルを指定するとうまくいくかもしれない。VLC では6278件が6248件に減り、せっかく追加したD&ecrease Volumeが削除されてしまい、役に立たなかったので使っていない。 )
  8. ja.poを保存する。これで ja.po に最新のソースから抜き出した翻訳語句が反映された。
  9. テキストエディターで開いて ja.po とja_bk.po の両方を貼り付け、"msguniq -s 入力.po -o 出力.po"で重複した翻訳語句を削り、出力.poのファイル名を ja.po とする。
  10. ja.po を Poedit で開き、未翻訳の箇所を埋めて保存する。VLCでは、D&ecrease Volume などの翻訳されてなかった翻訳を埋めた。
  11. msgfmt.exe を実行して po ファイルを mo ファイルにコンパイルして配置する。
    msgfmt.exe  ja.po -o  /mingw64/share/locale/ja/LC_MESSAGES/vlc.mo
  12. VLCを起動して修正箇所が翻訳されていることを確認する。gitからビルドした VLC は見事に D&ecrease Volume などの未翻訳語句が翻訳された。

 

VLC の最新の po ファイル

VLC 公式からダウンロードしてきたバイナリに付いてた日本語の mo ファイルを msgunfmt して中身を見たら、"PO-Revision-Date: 2014-12-07"となっており、これが最新の po ファイル。VLCのgit にあるファイルは、"PO-Revision-Date: 2013-12-12"となっていて公式より一年古い。

VLCのpoファイルのヘッダに "Language-Team: Japanese (ttp://www.transifex.com/projects/p/vlc-trans/" と書かれているが、TransifexにはtxというgitのようなClientツールがあるという。VLC の poファイルの最新版は、Transifexのリポジトリに置いてあって、翻訳チームに参加したいと言ってプロジェクトの責任者に許可を貰わないとそこからダウンロードできないと思われる。

(ttp://qiita.com/MiuraKatsu/items/1fdf4f74b58f1e84df99 ボクがPhalcon翻訳プロジェクトでやらかしたコト 2014/12/18)

 

もっと日本語化してみる

公式からダウンロードしてきたVLCのメニューのビデオ>Post processing が po ファイルをどのように更新しても翻訳されない。modules/gui/qt4/menus.cpp でnew QMenu("&Post processing") と書かれていて qtr で囲まれてないのが原因。new QMenu( qtr("&Post processing") ) と書き換えて再ビルドすれば翻訳できるようになる。

ただ1箇所修正するだけなのにこれが大変だった。

  • 書き換えてから makepkg-mingw を動かせば最新のソースにしてるらしく書き換えたのが無視される。 → makepkg-mingw を調べる必要があった。
  • PKGBUILD をみたらアーカイブを取ってくる形ではなく、source=..."git://git.videolan.org/vlc.git"と gitからソースを取ってきている。 → git を調べる必要があった。
  • 前回はビルドに成功したのに、前回以降に git に入った更新と相性が悪くビルドに失敗した。 → git を調べる必要があった。

 

(VLC の) makepkg-mingw の流れ調査

$ makepkg-mingw
==> Making package: mingw-w64-x86_64-vlc-git 3.0.0.60981.15a7ba9-1 (Sat Jun  6 9:10:22  2015)==> Checking runtime dependencies... //  -d オプション( Skip all dependency checks )でスキップ可
==> Checking buildtime dependencies... //  -d オプションでスキップ可
==> Retrieving sources...   //   -e オプション(Do not extract source files)や-Rでスキップ可
==> Validating source files with md5sums... //  --skipchecksums でスキップ可
==> Extracting sources...  //  -e オプションや-Rでスキップ可
==> Starting pkgver()...
==> Starting prepare()... //   --noprepare オプション(Do not run the prepare function)や-Rでスキップ化。
パッチを当てる (git am patch)
./bootstrap
// -o オプション(Download and extract files only) で初めからここまでを実行できる
==> Removing existing $pkgdir/ directory...
==> Starting build()... // -R (Repackage contents of the package without rebuilding)でスキップ可
==> Starting check()... //  --nocheck (Do not run the check function)でスキップ可
==> Starting package()... // --noarchive (Do not create package archive)でスキップ可
==> Tidying install...   // --noarchive (Do not create package archive)でスキップ可
==> Checking for packaging issue... // --noarchive でスキップ可
==> Creating package "mingw-w64-x86_64-vlc-git"... // --noarchive でスキップ可

この流れが分かっていたら、ソースの展開を飛ばして欲しいとか、ビルドから始めて欲しいとか、ダウンロードだけして欲しいとかができるようになるので、大切だと思う。

 

git の調査

git が難しすぎて理解しきれないが、git diff PKGBUILD で見たら pkgver=3.0.0.60894.f5d5cb7 であったことが分かる。この値がなぜかmakepkg-mingw で更新されるようだ。

revision=$(git rev-list --count HEAD) = 60894 (コミットオブジェクトの数=コミットの回数)
hash=$(git log --pretty=format:'%h' -n 1) = f5d5cb7 (コミットハッシュ)

と PKGBUILD に書いてあることから、git checkout f5d5cb7 とすればこのパッケージを作った時点のソース一式が得られることが分かる。

 

もっと日本語化してみる その2

以上の調査により、ビルドを成功させる手順は

  1. makepkg-mingw -o --noprepare でソースを展開
  2. git checkout f5d5cb7 でパッケージ作成時点のソース一式にする
  3. makepkg-mingw -de --noarchive でprepareを実行してパッチを当て buildが始まったらCtrl-Cで中断
  4. modules/gui/qt4/menus.cpp を修正
  5. makepkg-mingw -ed --noprepare でprepareの次から実行

となる。3で中断せず、パッチが当たってから menus.cppのビルドが始まるまでに修正する方が簡単かもしれない。

このcheckoutを使った技はソースを修正するときだけではなく、git に更新が入って最新版ソースがビルド出来なくない時にも使える。Linux で開発しているであろう VLC の git 最新版がパッチの更新なしで Windows でもビルドできるようになってる可能性は低い。

 

それから、ビルドの途中でプロセス数が900個くらいに増殖してて Windows 7が応答不能になる現象に悩まされた (ーー;)

400個くらいに増殖した時に taskkill /IM /F sh.exe とやれば復活できた。これ以上増えると手遅れ。何度かやってるとプロセスが増殖しないでビルドに成功したけれども、何なのこれ

posted at 2015年06月05日 01:11 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

VLCを日本語で表示する方法とgettextの調査

もちろんVLC公式ページからしたダウンロードしたWindows版は日本語になってるが、MSYS2+MinGWで自前でビルドしたのに日本語にならなかった。pacmanでビルドせずにインストールしたのも日本語にならなかった。

$ export VLC_DATA_PATH="C:\msys64\mingw64\share"
(export VLC_DATA_PATH="C:/msys64/mingw64/share" と書いた方が流儀に合ってそう)
$ export LC_ALL=ja_JP

としてからVLCを実行すればメニューが日本語で表示された。

 

要点はこれだけなんだが、苦労した点や調べた点などをだらだらと補足。

vlc.mo が$VLC_DATA_PATH/locale/ja/LC_MESSAGES/vlc.mo の位置に存在するように VLC_DATA_PATH を設定すればいい。

vlc.mo はGetTextによる国際化の翻訳ファイルでmsgfmt.exeとmsgunfmt.exeコマンドによりテキスト形式のpoファイルと相互変換できる。

 

MSYS+MinGW のビルド日記 VLC編

GIMPとffmpegをビルドしたからか、特に理由もなくVLCをビルドしてみた。

unset LC_ALL
export LANG=C (これしてないとpoあたりでエラーになった)
git config --global user.name "amekujira"
git config --global user.email amekujira@example-.com
cd ~/msys/MINGW-packages/mingw-w64-vlc-git/
makepkg-mingw
pacman -U mingw-w64-x86_64-vlc-git-3.0.0.60916.57faaf3-1-any.pkg.tar.xz

でAlexpuxのパッケージ一覧のvlc-gitに移動して makepkg-mingw でパッケージを作って pacman でインストールするだけ。makepkg-mingw の途中で git am がエラーを返すので、git config を実行しておく必要がある。configureのオプションがいっぱいあるがAlexpuxのをそのままを使っただけ。

それで動かしてみたら、メニューが日本語になってなかったんですよ。これが発端。

 

perlでgettext

use Encode 'encode';
use Locale::gettext;
use POSIX;

setlocale(LC_MESSAGES, "");
my $d = Locale::gettext->domain("vlc"); # 動作NG
print encode('utf-8', $d->get(' Volume   : Mute')), "\n";
$d->dir('C:\msys64\mingw64\share\locale'); # 動作OK
print encode('utf-8', $d->get(' Volume   : Mute')), "\n";
$d->dir('/C/msys64/mingw64/share/locale');  # 動作OK
print encode('utf-8', $d->get(' Volume   : Mute')), "\n";
$d->dir('C:/msys64/mingw64/share/locale');  # 動作OK
print encode('utf-8', $d->get(' Volume   : Mute')), "\n";

$ export LC_ALL=ja_JP.UTF-8
$ perl a.pl
Volume   : Mute
音量   : ミュート
音量   : ミュート
音量   : ミュート

(ttp://search.cpan.org/~pvandry/gettext-1.05/gettext.pm  Locale::gettext - search.cpan.org
ttp://www.ksknet.net/perl/wide_character.html Wide character in print at ...)

 

pythonでgettext

import gettext
_ = gettext.translation('vlc').ugettext // 動作OK
print _(' Volume   : Mute')
_ = gettext.translation('vlc', 'C:\msys64\mingw64\share\locale').ugettext  // 動作OK
print _(' Volume   : Mute')
_ = gettext.translation('vlc', 'C:/msys64/mingw64/share/locale').ugettext // 動作OK
print _(' Volume   : Mute')
_ = gettext.translation('vlc', '/C/msys64/mingw64/share/locale').ugettext // 動作NG
print _(' Volume   : Mute')

$ export LC_ALL=ja_JP.UTF-8
$ python a.py
音量   : ミュート
音量   : ミュート
音量   : ミュート
Traceback (most recent call last):
  File "a.py", line 5, in <module>
    _ = gettext.translation('vlc', '/C/msys64/mingw64/share/locale').ugettext
IOError: [Errno 2] No translation file found for domain: 'vlc'

(ttp://d.hatena.ne.jp/fgshun/20100319/1269004530 gettext モジュールメモ - 銀月の符号 2010-03-19)

 

Rubyでgettext

require "gettext"
include GetText
bindtextdomain "vlc" # 動作OK 
#bindtextdomain "vlc", :path=>"C:/msys64/mingw64/share/locale" # 動作OK
#bindtextdomain "vlc", :path=>'C:\msys64\mingw64\share\locale' # 動作NG
#bindtextdomain "vlc", :path=>"/C/msys64/mingw64/share/locale" # 動作NG
print _(" Volume   : Mute"),"\n"

$ gem install gettext
$ export LC_ALL=ja_JP.UTF-8
$ python a.rb
音量   : ミュート (←動作OKの場合)
Volume : Mute (←動作NGの場合)

※ localeフォルダを指定しない場合、pythonは現在のフォルダにあるlocaleフォルダを探索しないがrubyは探索する。ttp://www.rubydoc.info/gems/gettext/にlocaleフォルダの指定方法が書かれておらず、gitのサンプルスクリプトを見た。

 

Cでgettext

#include <windows.h>
#include <libintl.h>
#define _(str) gettext(str)

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
 setlocale(LC_ALL, "");
// bindtextdomain("vlc", ""); // 動作NG
 bindtextdomain("vlc","C:\\msys64\\mingw64\\share\\locale"); // 動作OK
// bindtextdomain("vlc", "/C/msys64/mingw64/share/locale"); // 動作NG
// bindtextdomain("vlc", "C:/msys64/mingw64/share/locale"); // 動作OK
 textdomain("vlc");
 MessageBox(NULL, _( " Volume   : Mute"), "タイトル", MB_OK);
}
$ export LC_ALL=ja_JP.UTF-8
$ gcc -mwindows a.c -lintl
$ ./a.exe

(ttp://qiita.com/hidetzu/items/fbfe0b3d8c13f6f9789e linuxのc言語でgettextを使う 2013/03/06
ttp://doremi.s206.xrea.com/c/window.html MinGWでWindowsソフト開発(ウィンドウ編) 2011/1/1)

Cでコンソールに出力するのもやってみたが、MSYS2+MingGWの日本語対応が怪しい。。。

 

poファイル

$ msgunfmt.exe /C/msys64/mingw64/share/locale/ja/LC_MESSAGES/vlc.mo  -o vlc.po

でテキストファイルに戻して、vlc.poのファイルの中身を見たらmsgid(英語)に対して、msgstr(日本語)を対応付けるものになっている。

msgid " Volume   : Mute"
msgstr " 音量   : ミュート"

調べた限りでは、localeフォルダの探索パスを環境変数で指定できず、明示的に1つのlocaleフォルダをハードコードしないといけない仕組み。

VLC が日本語メニューにならないのは locale フォルダの指定がずれてるのが原因と予想した。

 

textdomain.c

VLC の src/modules/textdomain.c を見たら予想が的中した。datadir = getenv ("VLC_DATA_PATH")で環境変数を取って、asprintf (&upath, "%s" DIR_SEP "locale", datadir) して bindtextdomain している。はじめに書いたように、環境変数 VLC_DATA_PATH に locale の1つ上のフォルダを指定して vlc を起動したらメニューが日本語になった。

これって MinGW+MSYS2 のgettextの不具合だー。不具合じゃなくて仕様というか MinGW+MSYS2 は日本語対応が弱い。

VLC_DATA_PATH で検索しても日本語のページがヒットしないので、私が気づいた初めての日本人かも・・・(爆)

 

この記事の続き

こちら

posted at 2015年06月04日 17:58 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

Windowsユーザー向け ffmpegのまとめ

ffmpegとは

FFmpegは動画と音声を変換することのできるUNIX系OS生まれのフリーソフトウェア。コマンドラインから使用することができる。

(ttp://ja.wikipedia.org/wiki/FFmpeg)

 

基本的な使い方

ffmpeg –i 入力ファイル名 出力ファイル名

入力ファイルが動画の時、出力ファイル名の拡張子を aac にすれば音楽ファイルに変換され、出力ファイル名を%03d.png とすれば連番の画像ファイルに書き出される。

【オプション】

-ss : 開示時間

-t: 切り取る時間

-encoders: エンコーダーの一覧を出力

-codecs: エンコーダー(E)、デコーダー(D)の両方の一覧を出力してくれるのでこっちの方がいい。

ffmpeg –i 入力ファイル名
とだけすれば入力ファイルの情報(ビデオや音声の種類)を出力する。

 

Windows版バイナリのダウンロード

公式ページ(ttps://www.ffmpeg.org/)のDownloadから「 Get the packages」のWindowsの画像にカーソルを置くとWindows Buildsのリンクが現れ、そこからバイナリを配布しているzeranoeのページ(ttp://ffmpeg.zeranoe.com/builds/)に飛べる。バイナリ配布の場所を見つけるのが難しい

64ビット版をダウンロードするとして、Static版とShared版の2つがあり、どっちをダウンロードするか迷うかもしれない。Shared版はプログラムの共用部分を別のDLLファイルにしている。(gcc -sharedとすればDLLが作成される)。Static版のBinにはffmpeg.exe、ffplay.exe、ffprobe.exeの3つの実行ファイルがあるだけだが、Shared版は実行ファイルから呼び出されるDLLファイルが8つ個ほど含まれていた。Shared版の方がファイルサイズが小さいので、Shared版を使うのがいいと思う。

zeranoeのページで過去のバイナリをダウンロードできるが、ffmpegの安定版のバージョン2.6.3のバイナリは置かれていない。gitで開発中の最新のものだけが置かれている。安定版の2.6.3を使うには自前でビルドするしかない。

追記:これを書いた2015年6月時点では最新のものしか置いてなかったが、2016年4月現時点では安定版もしくはバージョン付きのバイナリがzeranoeのページに置かれるようになっていた。
窓の杜ttp://www.forest.impress.co.jp/docs/news/20160217_744023.htmlによると、FFmpeg 3.0はネイティブAACエンコーダーの品質が十分に成熟し、安定版としてリリースされた。libvo-aacencとlibaacplusのサポートは打ち切られた。FFmpegのネイティブaacの音質が良ければ、FDK-AAC入のffmpegをビルドする必要がない。音風景ブログのこの記事ttp://d.hatena.ne.jp/kamedo2/20160215がおそらくネイティブaacとFDK-AACの比較で、FDK-AACの方が音質が良いとしているので、FDK-AAC入のffmpegをビルドする価値がまだあるかもしれない。)

 

配布されているWindows版バイナリ版の制約

zeranoeで配布されているWindows版バイナリ版で aac に変換してみれば分かるが、 aac に変換する際にエンコーダーとして libvo_aacenc が使われている。

2012-01-14 - 音風景ブログ(ttp://d.hatena.ne.jp/kamedo2/20120114)によると、vo-aacenc を「劣悪なエンコーダの代表」とし、FFmpegから使えるエンコーダの音質比較 - 音風景ブログ(ttp://d.hatena.ne.jp/kamedo2/20140228/1393609955)によると、FDK-AACをFFmpegで使える音声エンコーダの中で最も良いとしている。

ライセンス上の制約により自前でソースからビルドしないとffmpegで音質が良いと言われている FDK-AAC を使えない。

 

Michael の考え方

開発者の意見の不一致によりffmpegとlibavに分裂した経緯の記事に興味深いことが書いてあった。

  • Michael Niedermayerはffmpegのトップの開発者。
  • Michaelはバイナリパッケージ自体にも、あまり興味を示さなかった。まるで、「ユーザーは常に最新版を自前でコンパイルして使うべきである」、といわんばかりの姿勢だった。
  • Michael Niedermayerは、何も自前ビルドの原理主義者ではない。ただ、バイナリパッケージというものが大抵、一年以上も前のバージョンから更新されなかったりすることに不服だという。すでに多くのバグフィクスや改良、新機能の追加が行われているというのに、バイナリパッケージはいまだに大昔のままである。さらに、ffmpegをめぐるソフトウェア特許の問題もある。ソフトウェア特許に対処するためには、ソースコードの形で提供して、ユーザーにコンパイルさせた方がいい

(ttp://cpplover.blogspot.jp/2012/03/ffmpeglibav.html  ffmpegとlibavの背景事情 2012-03-27)

ffmpegの公式サイトでWindows版バイナリを見つけにくく、配布版でfdk-aacが使えない事情がみえる。つまり、ffmpeg はユーザーがコンパイルして使ったほうが良い。私は自前でビルドしたのとzeranoe版の両方を使っている。

 

Windows7でffmpegのビルド方法

@MSYS2のインストール

ttps://msys2.github.io/ から MSYS2 をダウンロードする。OSが64ビット版なので、msys2-x86_64-20150512.exe をダウンロードした。このダウンロードのページは「GIMPのビルド方法」に書かれているものと同じなので安全だろう。

 

AMSYS2の設定

コマンドプロンプトから bash や ffmpeg を実行できるようにWindowsの環境変数PATHに <インストールした場所>\usr\local\bin と <インストールした場所>\mingw64\bin と <インストールした場所>\usr\bin  の3つを追加する。mingw64\bin を usr\bin の前に追加しないと pkg-config 等が64ビット版の方を見にいかなくてハマる。

bash 実行時に $HOME/.bashrc を読み込んで欲しいので、Windowsの環境変数 HOME を作って適当なフォルダを入れておく。

【.bashrc に書いたら良さそうなもの】

export MAKEFLAGS=-j4 (← makeするときにCPUを4つ使って4倍高速になる。ビルド時にパッチを当てるlibaacplusのようにごく稀に-jを使うとビルドできない場合があった。) 
export MINGW_INSTALLS=mingw64   (← 後で出てくるが makepkg-mingw の実行に必要)
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig (← 後で出てくるが pkg-configの実行に必要)
export PATH=/usr/local/bin:/mingw64/bin:/usr/bin:$PATH (← autopoint --dry-runがwindowsのfindを見に行って"FIND: パラメーターの書式が違います"と言うので)

B開発環境のセットアップ

pacman -S base-devel mingw-w64-x86_64-toolchain git mingw-w64-x86_64-gtk2 mingw-w64-x86_64-json-glib mingw-w64-x86_64-gtk-doc mingw-w64-x86_64-gexiv2 mingw-w64-x86_64-lcms2

を実行。これは上の「GIMPのビルド方法」に書かれている。(ffmpegのビルドに必要最低限なパッケージだけインストールしたいと思うかもしれないが、あきらめてパッケージを多めにインストールしよう。いろんなUNIX系のツールが使えるようになって嬉しい。

gitと同類のコマンドのsubversion(svn)もpacmanでインストールしておくといいかもしれない。

 

Cpacman の使い方を学ぶ

  • 全パッケージのアップグレード pacman -Syu
  • パッケージのインストール pacman -S <パッケージ名>
  • リポジトリデータベースを検索して、キーワードにひっかかるパッケージを表示 pacman -Ss <キーワード>
  • そのパッケージによってインストールされたファイルを一覧表示す pacman -Ql <パッケージ名>
  • そのファイルをインストールしたパッケージを確認 pacman -Qo <ファイル名>

(ttp://dev.classmethod.jp/cloud/aws/package-managemenrt-use-pacman/ はじめてのpacmanパッケージ管理ガイド 2014年10月14日)

他に

  • インストール可能なパッケージのリストを出す  pacman -Sl
  • インストールされたパッケージのリストを出す  pacman -Q

使いそうなのはこんなところ。

全パッケージを最新版にしたいので

pacman -Syu

を実行。

 

C少し遠回りしてAlexpuxのパッケージ一覧からffmpegのビルドに必要な依存パッケージをインストール

Contributing to MSYS2」 にパッケージの作成方法が書いてある。

適当なフォルダ(${HOME}/msys)に移動して

git clone "https://github.com/Alexpux/MINGW-packages"

を実行。MINGW-packages以下にファイルが展開される。

cd MINGW-packages/mingw-w64-ffmpeg

でffmpegのところに移動。PKGBUILD というファイルが1つだけあって中を見ると、depends で指定されている依存パッケージをインストールしたらいいことが分かる。makepkg-mingwはPKGBUILDを読み込む。

export MINGW_INSTALLS=mingw64

をmakepkg-mingwを実行するために実行。毎回実行するのが面倒なので .bashrc に書いておいたらいい。

makepkg-mingw -soL

を実行。 (オプションの意味は -s: 足りない依存パッケージをpacmanでインストール、 -o: ダウンロードして展開するだけ、 -L: ログを取る )。これでffmpegのソースの展開まで完了。ログのサイズが0だったので-Lの意味がなかった。

ここではダウンロードして展開するだけにしたが、makepkg-mingwはここからconfigureしてビルドして圧縮してインストールパッケージを作成する。

 

Dfdk-aac をビルド

fdk-aac のパッケージを pacman でインストールできないのでソースからビルドしなければならない。

ffmpeg の依存パッケージのソースがどこにあるかは、「ffmpegをスタティックビルドする(CentOS6) (ttp://qiita.com/takakiku/items/4f129a8859d99f6be2db)」を見ればいい。そこに載ってないパッケージもある。

cd $HOME/msys/src
git clone https://github.com/mstorsjo/fdk-aac.git
cd $HOME/msys/src/fdk-aac
autoreconf -fiv
./configure
export MAKEFLAGS=-j4  (← makeを4倍速くするためのオプション)
make
make install

を実行。gitで取ってきたfdk-aacのバージョンはv0.1.4。

configure の --prefix オプションを省略したので /usr/local/ にインストールされる。--disable-shared オプションを削除したのはDLLを利用していこう、ffmpegを自前でビルドして使うときはMSYS2も一緒にインストールしようとするこの記事の方針のため。他のブログの記事はMSYS2がなくても動くようにstaticやsharedを工夫しているのがほとんど。この記事はpacmanでインストールできるところはバイナリインストールしているので手間がかからない。Windows MINGW MSYS2環境でのソースのビルドは恐ろしく遅い。

pkg-config --cflags --libs fdk-aac

が結果を返さないので

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

を実行して結果を返すようにする。

 

Effmpegのビルド

makepkg-mingwがダウンロードしたffmpegのバージョンは2.6.3。

cd $HOME/msys/MINGW-packages/mingw-w64-ffmpeg/src/ffmpeg-2.6.3

でソースが展開されているフォルダに移動。

pacman -S mingw-w64-x86_64-faac mingw-w64-x86_64-twolame mingw-w64-x86_64-libgme

でビルドに必要な依存パッケージを追加。

./configure --disable-debug --disable-doc --disable-ffplay --disable-ffserver --disable-static --disable-w32threads --enable-avisynth --enable-avresample --enable-bzlib --enable-fontconfig --enable-gnutls --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-nonfree --enable-openal --enable-pic --enable-postproc --enable-runtime-cpudetect --enable-shared --enable-swresample --enable-version3 --enable-zlib --target-os=mingw32 --extra-cflags="-I/usr/local/include" --extra-libs="-L/usr/local/lib" --enable-libgme
make make install

を実行。Windows MINGW MSYS2環境でのconfigureが恐ろしく時間がかかる。

fdk-aacを使って変換するには-c(codec):a(audio)を指定する必要がある。指定しないとlibfaacが使われた。

ffmpeg -i xxx -c:a libfdk_aac test.aac

Fffmpegのビルド (後日談)

Alexpuxのvlc-gitをビルドしたら依存パッケージになっててffmpegを/mingw64にインストールしやがった。pacman が自前でビルドしたffmpegを認識するように makepkg-mingw の続きをした。ファイルPKGBUILDのconfigure行を書き換え(--prefix=${MINGW_PREFIX} --arch=${CARCH%%-*} は残しておく)、エラーになるmake check行をスキップしたいので、 makepkg-mingw --nocheck を実行してインストールパッケージの mingw-w64-x86_64-ffmpeg-2.6.3-1-any.pkg.tar.xz を作成。pacman -U mingw-w64-x86_64-ffmpeg-2.6.3-1-any.pkg.tar.xz でこのインストールパッケージを/mingw64にインストールし、/usr/local 以下にインストールしていたffmpeg関連ファイルを全削除した。ldd /mingw64/bin/ffmpegとやれば分かるが、 ffmpeg が /usr/local/bin/msys-fdk-aac-1.dllを参照しているので、 fdk-aac のファイルを残しておく必要がある。

Gffmpegのビルド (後日談2)

「【ffmpeg】 fdk-aac と aacplus を同梱する(ttp://looooooooop.blog35.fc2.com/blog-entry-971.html)」に両方sharedでビルドできるとあったのでやってみた。以前--disable-sharedで試したときはこれらが同じ関数名を使ってたのでビルドできなかった。ttp://tipok.org.ua/node/17 からlibaacplus-2.0.2.tar.gz を取得。libaacplus はmakeのときにMAKEFLAGS=-j4をするとエラーになるので解除が必要。pacman -S mingw-w64-x86_64-fftwして./configure --with-fftw3-prefix=/mingw64してmake -j1してmake installでaacplusをビルド。

なぜaacplusを入れてみたかというと、aacplusでHE-AACv2にエンコードすると低圧縮のaacに比べてファイルサイズが1/3〜1/4に減るにもかかわらず、音質の違いがほとんど分からない。aacplusの基本は48kbpsだが24kbpsでエンコードするとさらにファイルサイズが半分になり、これも音質の違いがほとんど分からない。なおneroAacEnc.exe -hev2 -q 0.15 -if in.wav -of out.aacやffmpeg -i in.xxx -c:a libfdk_aac -profile:a aac_he_v2 -ar 24k out.aacでも同じようにファイルサイズを小さくできる。サイズを最大限小さくしたとき(24kbps, 48kpbs)の音質比較を誰かしないかな。

次に$HOME/msys/MINGW-packages/mingw-w64-ffmpegに移動して--enable-libaacplusをPKGBUILDのconfigureに追加してmakepkg-mingw --nocheckを実行してffmpegをビルド。ffmpeg.exe  -i in.mp4 -c:a libaacplus -b:a 48000 -t 10 out.aac で動作確認。

Gffmpegのビルド (後日談3)

6/10 FFmpeg 2.7が公開された。筆者が見たのは翌日だがAlexpux氏が早くもMINGW-packagesを更新していた。makepkg-mingw --nocheckでERROR: libx265 version must be >= 57.というエラーが出るので、まずはpacman -Syuでパッケージを更新しておく。次にgit fetchからgit mergeとやるとPKGBUILDを筆者が修正していたためにエラーで更新できず。PKGBUILDのバックアップを取ってからgit checkout PKGBUILDで上書きしてからgit mergeで取り込めた。その後、バックアップを元にPKGBUILDを修正してからmakepkg-mingw --nocheck。何故か以前の2.6.3の方を見に行ってるログが出たので2.6.3や.oを置いてあるフォルダは別名にするか消しておくのがいいかも。

 

frei0r の使い方

【準備】

  • ttp://ffmpeg.zeranoe.com/builds/win64/external_libs/frei0r-20130321-git-245bb38-filters-win64.7z をダウンロードする。zeranoe 32ビット版を使う場合は、win32の方をダウンロードする。
  • 解凍し、どこでもいいが、<msysのインストール場所>\usr\local\lib\frei0rに置く。
  • export FREI0R_PATH='<msysのインストール場所>\msys64\usr\local\lib\frei0r' もしくは export FREI0R_PATH='/usr/local/lib/frei0r' を実行。

【実行】

上のビルドは--enable-frei0rを付けていないので、zeranoe版のffmpegで実行する。

<zeranoe版のffmpeg.exe>  -i 入力ファイル -t 10 -loglevel debug -vf "frei0r=glow:20" 出力ファイル

とすると、映像にglowフィルターがかかって明るくなった。

<zeranoe版のffmpeg.exe>  -i 入力ファイル -t 10 -vf "frei0r=perspective:0.2/0.2|0.8/0.2" 出力ファイル

とすると、映像にperspectiveフィルターがかかって台形に変形した。

<zeranoe版のffmpeg.exe>  -i 入力ファイル -t 10 -vf "frei0r=IIRblur:0.4" 出力ファイル

とすると、GIMPでいうところのガウシアンぼかし(IIR)がかかった。

<ffmpeg> -i 入力 -vf "frei0r=3dflippo:0|0|0|0.01|0|0.005|0.45|0.45|n|n|y" 出力ファイル

とすると、奇妙に回転した。

<zeranoe版のffmpeg.exe>  -i 入力ファイル -vf "frei0r=lenscorrection:0.4|0.5|0.1|0.2|0.3" 出力ファイル

とすると、意味不明なレンズ効果がかかった。

mp4に出力するとh264 (High 4:4:4 Predictive)という特殊なプロファイルになって、VLCで再生できるが、Windows Media Playerでは再生できなかった。

【仕様】

まとまった文書がないらしく、frei0rのページ(ttp://frei0r.dyne.org/)からダウンロードしたソースを見るしかないようだ。DLLに対応したソースの関数f0r_get_param_infoに引数の説明が書かれている。|が引数の区切りで、x/yで(x, y)座標のようになり、yかnで真偽を表す。

【ビルド】

ttps://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=312&p=2716 によると、 frei0r.hをincludeフォルダーに置くだけで --enable-frei0r が通ったらしい。

【感想】

frei0rの使用用途が思いつかない。

【VLC】

なおVLC media player でも動画にフィルター(画像効果)をかけることができる。

やり方は、実験的な機能のためか隠されていて、ツール>設定>設定の表示(すべて)>ビデオ>フィルターにある、フィルターの1つにチェックを付け、再起動して動画を再生。例えば、ミラービデオフィルターを使えば、動画が鏡像になって再生される。他にも分かりやすい効果があるのは、ビデオ回転フィルター、波状ビデオフィルター、拡大ズームインタラクティブビデオフィルターあたり。VLCの動画フィルターも使用用途が思いつかない。ミラービデオフィルターで目が1つの顔になるのがうけるくらい。

(追記:エフェクトやフィルターを使うのであればfrei0rやVLCよりもAVIUtlの方が良い)

posted at 2015年06月03日 12:03 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする