planet-green.com

[備忘録] MacでESETをインストールしているとSkypeで通話できない問題



私のMacはセキュリティソフトにESET Cyber Security Proを入れているのですが、先日、Skypeを新クライアント(Ver.8.10.0.4)にアップデートしたところ、ESETのファイアーウォールのために通話してもすぐ切断されるようになりました。

おそらくESETの次のアップデートで対応されるとは思いますが、一応、対処法をメモ代わりに残しておきます。

ESETのパーソナルファイアーウォールの設定画面を開き、Skype用のルールを追加。

Mac+ESETのファイアーウォールでSkypeが正常動作しない時の対処

この時、今までならSkypeのアイコンをドラッグ&ドロップするだけでよかったのですが、新クライアントになってからは、次のパスを指定してあげないと駄目なようです。

/Applications/Skype.app/Contents/Frameworks/Skype Helper.app

Mac+ESETのファイアーウォールでSkypeが正常動作しない時の対処

Mac+ESETのファイアーウォールでSkypeが正常動作しない時の対処

本当はポートを細かく指定した方がいいのですが、どうも広範囲に渡っているようなので、アプリケーションのパスさえ指定してあるなら「すべて」にしておいて問題ないと思います。

ちなみにSkypeの公式サイトには 「443/TCP」 「3478-3481/UDP」 「49152-65535/UDP + TCP」と書いてあるのですが(2017年11月現在)、この情報は以前のクライアントのようで、新クライアントではこの範囲外のポートも使われていて、範囲が不明です。

 

Mac+ESETのファイアーウォールでSkypeが正常動作しない時の対処

コメント(5)
planet-green.com

[備忘録] FFmpegで複数の静止画からタイムラプス(微速度撮影)動画を作る



by いらすとや

ここ最近、試験的にタイムラプス動画をいくつか作ってますが、全てJPEGやTIFF等の静止画からFFmpegを使って動画に変換しています。

(作例については、例えばこの記事この記事とか)

FFmpegは動画と音声を記録・変換・再生するためのソフトウェアで、誰でも無料で使えます。

一般の人が普段よく目にするソフトウェアと違って、UI(操作画面)の無い、コマンドプロンプト(Macの場合はターミナル)から実行するソフトウェアなので、慣れるまでが少し大変かもしれません。

しかし、一度インストールしてしまえば、後は基本的に毎回同じコマンド文をコピー&ペーストして実行するだけなので何も考えずに使えます。

インストール方法はGoogle先生に聞くと詳しく教えてくれると思います。

Windowsへのインストール方法

Macへのインストール方法

 

私の場合だと、cdコマンドで画像の置いてあるフォルダに移動してから、次のオプションを付けて実行しています。

 

各オプションの説明

-pattern_type この例では glob -i ‘*.jpg’ と指定することで、.jpgの拡張子が付いた画像ファイルをファイル名順に読み込みます。
-s リサイズ。この例だと1920 x 1280 にリサイズするということ。
リサイズの必要が無ければ指定しなくてもいいです。
縦・横ともに2の倍数でないとエラーになるので注意。
-b 動画のビットレート。この例だと24000k=約24MB/秒。
この数字が大きいほど画質が良くなりますがファイルサイズも大きくなります。
どのくらいのビットレートがいいかについては、YouTubeの説明が参考になると思います。

基本的には、FFmpegで書き出した動画を後で動画編集ソフトで読み込んで各種編集や音を入れたりする作業をすることになると思うので、ここでは出来るだけ高画質にしておくのがいいと思います。

-framerate フレームレート(1秒あたりのコマ数)。
例えば、元画像が150枚あったとしたら、フレームレート30で5秒の動画になります。
-r ↑と同じ。-framerateは入力時、-rは出力時のフレームレートを指定するものなので両方指定するのがいいらしいです。
-an 音声無しにする。
-vcodec コーデックの種類。よくわからなければ、この例のように libx264 (H.264)を指定するのが無難です。
-pix_fmt 色深度を指定。これもよくわからなければ yuv420p が無難です。

 
また、Mac限定ですが、画像を16bitのTIFFで書き出して下記オプションで変換すれば10bit色深度のProRes HQフォーマットで動画を作成できます。
ハードディスクを爆食いするのが難点ですが・・・。

コメント
planet-green.com

MacPro2010にGeForce GTX 960を取り付ける



MacPro(2010年モデル)にGeForce GTX 960を取り付けました。
CUDAドライバーも認識されています。
取り付け手順や注意点は基本的に前回の記事と一緒です。

GeForce GTX 960をMacProに搭載
ちなみにELSAのGeForce GTX 960 2GB S.A.C SS GD960-2GERXSです。

GeForce GTX 960をMacProで認識

MacでCUDAドライバー

Final Cut Pro Xで4K動画の編集をする必要があったのですが、MacPro標準のグラフィックボード(ATI Radeon HD 5770)では重すぎてスムーズに編集できなかったのが、GTX960では何とか実用的なレベルになりました。
(とはいえ、ビデオエフェクトなどを多用すると重くなりますが。)

また、ffmpegをOpenCVを有効にしてインストールすると、エンコードの際にCUDAを利用するようで、CPU負荷が低くなってるのが確認できました。

OSのアップデートの度にビデオドライバーを入れ直さないといけないのは相変わらずで、画面が真っ黒になるので別のMacからリモート接続(『画面を共有』のこと)してインストールしてます。

コメント
planet-green.com

DxO OpticsPro用タイムラプス制作支援ツール | TimeLapse tool for DxO OpticsPro



RAW現像ソフトのDxO OpticsPro 11でタイムラプス(微速度撮影)動画制作を支援するツールを作りました。
コマンドラインで実行するPythonのスクリプトで、GitHubで公開しています。

DxOKeyFrame.py
https://github.com/SapporoTK/DxOKeyFrame.py

作例

星景タイムラプス 4K《微速度撮影》洞爺湖 | Time Lapse – Lake Tōya, Japan

(上の動画ではオリジナル曲をBGMにしてみました。)

4K Time Lapse Test (DxO OpticsPro + DxOKeyFrame.py) | タイムラプス《微速度撮影》テスト

この動画では、日の出の前後の時間帯はAvモードで撮影し、当スクリプトで拡張露出補正オプションを有効にして明るさが滑らかになるようにしています。

とはいえ、まだチラつきが出てしまうので、それが今後の課題です。
ちなみに星の軌跡はFinal Cut Pro Xのエフェクトなので当スクリプトとは関係ないです。

4Kタイムラプス《微速度撮影》モエレ沼公園 | TimeLapse – Moerenuma Park

タイムラプス 4K《微速度撮影》Sapporo city View | Time Lapse

タイムラプス 4K《微速度撮影》大通公園(札幌市)| Time Lapse – Odori Park, Sapporo, Japan

»続きを読む

コメント
planet-green.com

MacでVisual Studio + Xamarinを使ってみた感想



IT土方(by いらすとや)
アプリ開発の話。

クライアントさんに泣きつかれて頼まれてXamarinで作られたスマホアプリの修正をすることになり、少しだけ使ってみる機会がありました。

「Xamarin自体がバグだらけ。新しもの好きで人柱覚悟の人ならいいかもしれないけど、仕事ではちょっと怖くて使えない」

これが正直な感想です。

iPhoneとAndroidのアプリを共通のコードで作成できるというのが売りなのですが、実際に共通化できるのはロジック部分だけと考えた方がよさそうです。

一応、画面周りも共通化できるのですが、用意されているXamarin.Formという仕組みでは細かいレイアウトの調整が出来ないので、結局はiOSとAndroidで個別にネイティブの機能を呼び出すコードを書くことになると思います。

Xamarin.Form標準の機能だけだと、デザインの微調整に制限が多く、痒いところに全然手が届きません。

自社または個人で作るアプリならそうしたレイアウトの細部は無視することが可能かもしれませんが、クライアントさんがいる仕事だと、「ここのフォントサイズを変えてね」と言われて断るのは難しいのではないでしょうか。

»続きを読む

コメント
planet-green.com

Emoji Mosaic Generator(絵文字モザイクジェネレーター)



以前より公開中だったモザイク・アート作成ソフト「モザイク・モザイク」の絵文字版WEBサービスを試験公開しました。
無料でご利用できます。

😀Emoji Mosaic Generator🤖 (絵文字モザイクジェネレーター)

Emoji Mosaic Generator Sample

多言語対応させてる余裕が無かったので英語版での先行リリースになりましたが、簡単な英語しか使っていないので操作は難しく無いと思います(といいますか、私が簡単な英語しか使えない)。

尚、絵文字に対応してないOS/ブラウザでは正常に表示できません。スマホから見て頂けると確実です。

感想等がありましたらコメントいただけると嬉しいです。

コメント
planet-green.com

[開発/備忘録] WordPressのテーブルを手動でutf8mb4に一括変換する



現在、WordPressを新規でインストールするかv4.2以前から最新版にアップデートすると、DBの各テーブルの文字コードが自動的にutf8mb4_general_ciに設定されます。
(ただし、DBがMySQLの5.5.3以上かMariaDBの10以上だった場合のみ)

しかし、DBのバージョンが古かったサーバーでWordPressを運用していて既にv4.3以降にアップデートした後、新しいサーバーにデータごと引っ越した場合は、文字コードがutf8_general_ciのままになってしまいます。(当サイトがそうでした。)

そんな時は、まず wp-config.php の DB_CHARSET を utf8mb4 にして、

define('DB_CHARSET', 'utf8mb4');

下記のコードをfunction.phpに貼り付け、 http://(サイトのURL)/?upgradeUtf8mb4=1 をブラウザで呼び出せば utf8mb4_general_ci に一括返還してくれます。
(v4.7.3で動作確認はしましたが、必ず実行前にバックアップしてください)

if( isset($_GET["upgradeUtf8mb4"]) && $_GET["upgradeUtf8mb4"==1 )
{
        require_once ABSPATH."wp-admin/includes/upgrade.php";

        if ( is_multisite() ) {
                $tables = $wpdb->tables( 'blog' );
        } else {
                $tables = $wpdb->tables( 'all' );
                if ( ! wp_should_upgrade_global_tables() ) {
                        $global_tables = $wpdb->tables( 'global' );
                        $tables = array_diff_assoc( $tables, $global_tables );
                }
        }

        foreach ( $tables as $table ) {
                maybe_convert_table_to_utf8mb4( $table );
        }

        echo "done.";
        exit;
}

実行後、テーブルが変換されているのを確認したらこのコードは削除してください。

ちなみに utf8mb4_general_ci は何が違うのかと言うと、絵文字を直接保存できるようになるのです。
(逆に言うと、絵文字を使わないのであればテーブルを変換する必要は無いです)

コメント
planet-green.com

[開発/備忘録] WordPressでSchema.org用JSON-LDを出力(複数画像対応)



WordPressで構造化データ(schema.org用)のJSON-LDを<head>内に出力する関数です。function.phpに追記してください。

ネットで調べてみると似たようなコードはいくつかありましたが、複数の添付画像・複数のカテゴリーに対応したものが無かったので自作しました。

function insert_json_ld_for_schema_org()
{
	if( !is_single() || !have_posts() ) {
		return;
	}
	
  //あなたのサイトのロゴ画像をここで設定してください
  $logo = array(
		'@type' => 'ImageObject',
		'url' => 'http://*****/****.jpg',
		'width' => '240',
		'height' => '80'
	);
	
	while (have_posts()) {
		the_post();
		$category_info = get_the_category();
		if( count($category_info) > 1 ) {
			$articleSection = array();
			foreach( $category_info as $ct )
			{
				$articleSection[] = $ct->name;
			}
		} else 	{
			$articleSection = $category_info[0]->name;
		}
		
		//添付画像を取得
		$attachments = get_children( array( 'post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image') );
		
		$images = array();
		foreach($attachments as $image) {
			$src = wp_get_attachment_image_src( $image->ID, 'medium' );
			$images[] = array(
				'@type' => 'ImageObject',
				'url' => $src[0],
				'width' => strval($src[1]),
				'height' => strval($src[2])
			);
		}
		
		//添付画像が無い場合はアイキャッチ画像を取得
		if( !count($images) ) {
			if( has_post_thumbnail() ) {
				$thumbnail_id = get_post_thumbnail_id(); 
				$src = wp_get_attachment_image_src( $thumbnail_id , 'medium' );
				$images = array(
                                	'@type' => 'ImageObject',
                                	'url' => $src[0],
                                	'width' => strval($src[1]),
                                	'height' => strval($src[2])
				);
			} else {
				//それも無い場合はロゴ画像をセット
				$images = $logo;
			}
		}
		$data = array(
			'@context' => 'http://schema.org',
			'@type' => 'Article',
			'headline' => get_the_title(),
			'author' => array(
					'@type' => 'Person',
					'name' => get_the_author(),
			),
			'datePublished' => get_the_date('Y-m-d'),
			'dateModified' => get_the_modified_time( 'Y-m-d' ),
			'articleSection' => $articleSection,
			'url' => get_permalink(),
			'mainEntityOfPage' => array(
				'@type' => 'WebPage',
				'@id' => get_permalink()
			),
			'publisher' => array(
				'@type' => 'Organization',
				'name' => get_bloginfo('name'),
				'logo' => $logo,
			),									
			'image' => $images,
		);
		
		//php5.4以前のバージョンではオプション引数(JSON_UNESCAPED〜)を削除すれば大丈夫だと思います。
		echo '<script type="application/ld+json">'
			.json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)
			.'</script>'.PHP_EOL;
	}
	rewind_posts();
}
add_action('wp_head','insert_json_ld_for_schema_org');

出力サンプル。

<script type="application/ld+json">{
    "@context": "http://schema.org",
    "@type": "Article",
    "headline": "[Photo] 幌見峠のラベンダー園",
    "author": {
        "@type": "Person",
        "name": "tomoya"
    },
    "datePublished": "2017-04-08",
    "dateModified": "2017-04-08",
    "articleSection": "Photo",
    "url": "https://planet-green.com/horomitouge-lavender/1501",
    "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://planet-green.com/horomitouge-lavender/1501"
    },
    "publisher": {
        "@type": "Organization",
        "name": "planet-green.com",
        "logo": {
            "@type": "ImageObject",
            "url": "https://planet-green.com/wp-content/uploads/2017/03/Twenty-Seventeen-capture-2017-03-28-.jpg",
            "width": "640",
            "height": "573"
        }
    },
    "image": [
        {
            "@type": "ImageObject",
            "url": "https://planet-green.com/wp-content/uploads/2017/04/horomitouge-7399-720x480.jpg",
            "width": "720",
            "height": "480"
        },
        {
            "@type": "ImageObject",
            "url": "https://planet-green.com/wp-content/uploads/2017/04/horomitouge-7418-720x480.jpg",
            "width": "720",
            "height": "480"
        },
        (略)
    ]
}</script>

そのSchema.orgなんですが、仕様についてネット上の情報が錯綜している上に、公式サイトの説明も曖昧で、いまいちよくわからない部分が多いのですよね。

例えば、記事タイトルはnameプロパティで指定すると書いてあるサイトもあれば、headlineプロパティで指定すると書いてあるサイトもあります。
Schema.org公式サイトでは簡素にnameはname、headlineはheadlineと書いてありますが言葉の定義についての説明が無いのです。

しかもgoogleまで錯綜していて、Search Console(webmasterツール)の 〔その他のリソース〕 にある 〔構造化データ マークアップ支援ツール〕 を使って画像タグのマークアップをしても、〔構造化データ テスト ツール〕を使ってチェックするとエラーになるという状態です。

そこで上記のPHP関数は、私が調べた範囲において最大公約数的な解釈をして実装しました。
間違いがありましたらコメントでご指摘していただけると幸いです。

コメント