2014年5月30日金曜日

動画 画像から動画を生成する 個人用メモ

各フレームの画像を用意して以下のコマンドをたたけばおk

ffmpeg -r 30 -i images2/image_%3d.jpeg test.avi

2014年5月29日木曜日

動画フェードアウトと連結、個人用メモ

実行する際には、1回でやることが出来る。エンコード回数を減らすほうが良い。

それぞれの機能用コマンドを見る意味で分けた。


フェイドアウト
ffmpeg.exe -i [src_file_path] -vf "fade=out:810:90:" -af "afade=t=out:ss=27:d=27" -vcodec libx264 -acodec libvo_aacenc -y [dst_file_path]

連結
ffmpeg -i [src_file_path] -i [src_file_path2] -filter_complex concat=n=2:v=1:a=0 [dst_file_path]

2014年5月27日火曜日

Google App Engine SDKをEclipseで動かす

GAEのSDKをEclipseで起動する場合のメモ。
まずは以下のPyDevプラグインを追加します。



















以下はRun設定です。














引数は以下の用に指定します。














実行に成功した場合のコンソール出力です。














ここまでできたら、local:8080 に接続しましょう。

2014年5月24日土曜日

はじめてのPython GoogleAppEngineのチュートリアル 1

はじめてのPython フレームワーク

webapp2 は google app engine のフレームワークです。
他にも Django や CherryPy、Pylonsなどが使えますが、webapp2 は Google App Engineの
環境を作成するときにインストールされるので、すぐ使えます。

webapp2
* RequestHandlerクラス:リクエスを処理してレスポンスを生成
* WEGIアプリケーションインスタンス:受信リクエストをURLに基づきハンドラに割り振る

# もっとも単純な例
以下がもっとも単純な例です。

RequestHandlerを継承したクラスのgetメソッドを作成すると、self.requestを通してリクエスト情報を取得出来ます。
通常は、self.response にプロパティを設定して終了します。

webapp2.WSGIApplication インスタンスがアプリケーションです。
debug=trueで、ハンドラにエラーが発生したり、キャッチされない例外が発生した場合にブラウザに出力します。

# ユーザ認証

以下の例は、ユーザのログイン認証機能を追加したものです。

users.get_current_user() で サインイン済みなら Userオブジェクトが、違う場合は None を得られます。


# フォーム
以下がフォームを使った例です。



また、webapp2のimportをyamlファイルに移動しています。



この例にはハンドラが2つ出てきます。
MainPageとGuestbookです。それぞれURL、/ と /sign に対応しています。
Guestbookではpostのみが定義されています。
cgi.escape()は、HTMLの特殊文字をエスケープします。ユーザに入力された文字が、HTMLとして動作するのを防いでいます。

cgiはPythonの標準ライブラリです。

○cgiドキュメント
https://docs.python.org/release/2.7.2/library/cgi.html


今日はここまで、次はDatastoreにデータを永続化してみます。

はじめてのPython 書式編

Pythonの書式についてひと通り見たまとめ。
最初のうちの備忘録。

標準出力・演算・ループ

新鮮です。主に扱ってきた言語が C++、C#、Java だからでしょうか。
でも拒否感は無いですし、行が少なくなるのはいいですね。

関数

Java8でラムダ式が追加されたのを機に使おう!と思っていてあまり使っていないラムダ式。


クラス・オブジェクト

特に無し。


継承

上のクラスを継承したクラス。



インポート方法

なるほど、こうやってモジュールの中の一部をロード出来るんですね。

2014年5月23日金曜日

Python for Google App Engine

出来るだけシンプルにPythonでWEBアプリ実装したいと思い、いままで使ってこなかったGoogle App Engine を使ってみようと思います。


Google のドキュメントを訳してくれている素晴らしい方がいました。
参考にさせてもらいながら、環境を作成します。

○Python for Google App Engine : Python tutorial の和訳



○インストール時の注意点

インストールディレクトリはデフォルトのままよりも、C:\GoolgleAppEngine などに変更しましょう。
ホワイトスペースを間に含むとあまり良くないです。


○pycharm の CE は Google App Engine プロジェクトに対応していない。

うーん、楽に開発したいので、どうしよ。

2014年5月19日月曜日

はじめての python 環境作成

python 開発環境を作成しよう


時系列解析環境を作成するため、python 環境を作成する。

pythonの日本コミュニティ
http://www.python.jp/

インストール


2系の最新版、python 2.7.6 にすることにしました。

https://www.python.org/downloads/

※python3系の対応ライブラリの件がよくわからなかったので、2系を選択。
慣れてきたら3系環境も構築しよう。

インストールはダウンロードした実行ファイルを使用するだけ。
インストールフォルダは変更しない方が良いようです。というのも、他の数値計算ライブラリをインストールするとき便利だからです。

ライブラリ


今回導入するライブラリは以下です。

pyaudio 音声ライブラリ
http://people.csail.mit.edu/hubert/pyaudio/


Numpy & Scipy 科学計算ライブラリ
http://www.scipy.org/scipylib/download.html

全部、exeを実行するだけでOK。

matplotlib グラフプロットライブラリ
http://matplotlib.org/

IDE

PyCharmをインストールします。
http://www.jetbrains.com/pycharm/

昔は有料版しかなかったようですが、CE(無料版)が出ています。

有名なIDEのコマンドを使えるようです。
使い慣れたIDEを選ぶと良いと思います。


PyCharmを初回起動すると、Pythonの実行ファイルを設定するように求められます。
以下を設定します。

[Pythonインストールフォルダ]/python.exe


以上で、開発環境の構築が完了です。

2014年5月12日月曜日

動画音声のノーマライズ

プログラムに組み込むため、dll もしくは コマンドライン(exe) で動画音声調整する方法。

(今回は、音声コーデックが AAC の動画が対象)

aacgain というソフトウェアを使用した。

下記のページの AACGain v1.9が最新

http://www.rarewares.org/aac-encoders.php

dll では libFAAC があったが、今回は使用せず。

【aacgainを使うことのメリット】


  • mp4を指定すると、直接音声のノーマライズが可能。
  • 動画の映像が劣化しない ← これは効きますね。
  • プログラムに組み込むのが容易



○音声ノーマライズ


aacgain /r /c /k /p [filepath] ...

/r :トラックゲインを音声個別に指示 89db → /a に変えると、指定した全ての音声の相対的な音量を保って指示 
/c :クリッピングが発生しても確認メッセージを出さないオプション。クリッピング:音が大きすぎて許容値を超えていて、音の割れ、歪の発生の可能性がある。指定しないと、確認メッセージへの応答が必要。
/p :ファイルのタイムスタンプを変更しないオプション
/k :クリッピングしないギリギリまでゲインを自動で下げる
/d トラックゲインの指定 89dbに対して増減を指定する。/d 5 とすれば、89 + 5 = 94 となる。



○音声の分析のみ


・分析のみを行う

aacgain /s s [filepath] ...

Recommended "Track" dB change: -0.370000
Recommended "Track" mp3 gain change: 0
Max PCM sample at current gain: 19850.775391
Max mp3 global gain field: 180
Min mp3 global gain field: 115
Recommended "Album" dB change for all files: -0.370000
Recommended "Album" mp3 gain change for all files: 0

・/d で指定した変更を行うとどうなるかを解析する

aacgain /s s /d 5 [filepath] ...

Recommended "Track" dB change: 4.630000
Recommended "Track" mp3 gain change: 3 ← /d は目標のdbまで1.5db刻みで最も近いものを計算する。
WARNING: some clipping may occur with this gain change!
Max PCM sample at current gain: 19850.775391
Max mp3 global gain field: 180
Min mp3 global gain field: 115

Recommended "Album" dB change for all files: 4.630000
Recommended "Album" mp3 gain change for all files: 3
WARNING: with this global gain change, some clipping may occur in file after_converter.mp4 ← /d 5 するとクリッピングすることを示す

LaTeX を Windows で使う ShareLaTeX

WindowsにTeXをインストールして~、とかやろうと思ったけど、けっこう時間かかりそう。
時間の無い社会人院生にとっては結構無駄な時間。

オンラインで良いツールがありました。ShareLaTeX。デザインもブートストラップで少なくともここ3年くらいのものだろうし、ありがたく使わせていただこうと。


数学記号の入力にまずは慣れるために参考になるリンク。



後は習うより慣れろ、ですね。



2014年5月6日火曜日

MySQL 2つのカラムデータをお互いに入れ替える

2つのカラムデータを入れ替えたいこと。

最大値と最小値を間違えたりすると発生します。

以下のように入れ替える事ができます。

set @str = 0;
update table `column1` = (@str := `column1`)*0+`column2`, `column2` = @str
where id > 0;

以上です。
ユーザ変数を定義する機会ってあまりないので、思いつかなかった。