2011-02-01
_ ファイルサイズの大きなPDFを最適化する
ここんとこ、ひょうごんテック関係のチラシやらポスターやらをInkscapeで作っ てるわけですが、作成したPDFを送ったところ「ファイルサイズが大きすぎるの でなんとかなりませんか」と連絡が。
送ったファイルを見てみるとPDFなのに6MB〜8MBの大きさ。InkscapeのPDF書き出しって、 こんなサイズが大きくなったっけ? 基本的に文字と写真の切り貼りなので、そんなにサイズは大きくならないはずなのにおかしい。 けど、そうは言ってられないのでLinux上でPDFを最適化する方法を探してみた。
ということでググってみたら、Ghostscriptを使うとPDFの最適化ができるそう。
- ネタ元
- Ubuntu Tip:Howto reduce PDF file size from command line | Ubuntu Geek : http://www.ubuntugeek.com/ubuntu-tiphowto-reduce-adobe-acrobat-file-size-from-command-line.html
ネタ元から引用すると、こんな感じ。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=(出力ファイル名).pdf (オリジナルファイル名).pdf
ちょっとこれは長ったらしいので、Inkscapeからはpsで書きだしてラッパーの ps2pdfを使うほうがお手軽かも。
ps2pdf14 -dPDFSETTINGS=/default -sPAPERSIZE=a4 (オリジナルファイル名).ps (出力ファイル名).pdf
-dPDFSETTINGS=で指定できるPDFの最適化レベルは、ps2pdfのドキュメント から引用するとこんな感じ。
ps2pdf: PostScript-to-PDF converter: http://pages.cs.wisc.edu/~ghost/doc/cvs/Ps2pdf.htm
- /screen selects low-resolution output similar to the Acrobat Distiller "Screen Optimized" setting.
- /ebook selects medium-resolution output similar to the Acrobat Distiller "eBook" setting.
- /printer selects output similar to the Acrobat Distiller "Print Optimized" setting.
- /prepress selects output similar to Acrobat Distiller "Prepress Optimized" setting.
- /default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file.
用紙サイズの-sPAPERSIZEだけど、A4の場合は無しでもかまわないけど、それ以外の場合は指定しておいたほうが安全です。
それで最適化してみた結果。
$ ls -lah sahana* -rw-r--r-- 1 jun jun 270K 2011-02-02 18:14 sahana-default.pdf -rw-r--r-- 1 jun jun 478K 2011-02-02 18:14 sahana-prepress.pdf -rw-r--r-- 1 jun jun 6.2M 2011-02-02 18:11 sahana.pdf
6.2Mあったファイルが印刷屋に出すprepressでも480Kってどういうこと!?
比べてみても変わったところは見当たらないし画像の劣化もないし、とりあえ ずはファイルサイズが減ったということでよしとするか。
2011-02-09
_ OSC香川のことまとめてないね
さーせん。がんばります。
_ IEEE1394カメラとたった一行でUstream.tv高画質配信できた
ffmpegを使っての高画質配信は日経Linuxに載ってたことなので珍しいもんでもないけど、たった一行で高画質配信できたので見てくださいな。
RTMPでストリーミングしていると140秒ほどでffmpegが落ちるので実用では使えません。 ごめんなさい。
2012.2.12追記
衝撃の事実が判明しました。
「 □LinuxでUstream(ffmpegで高解像度配信!?完結編) | Linux Install Memo 」さんの情報によると、rtmpのflashverを flashver=FMLE/3.0
としていた部分を flashver=FME/3.0
とすれば、落ちること無く使えるそうです。
え…。orz
ということで、ここの記述も変更しました。
1. Ustream.tvからFlash Media Encoderの設定ファイルをダウンロードする
Ustream.tvにログインして「番組設定」の「その他の設定」を開き、 「詳細設定」の「Flash Media Encoder XML ファイル」からFlash Media Encoderの設定ファイルをダウンロードしておきます。
2. 自分の番組番号と番組に設定された文字列を確認する
エディタでustream.fme.(番組名).xmlを開いて、以下の個所を確認しておく。 文字コードはUTF-16LEです。
<output> <rtmp> <url>rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)</url> <backup_url></backup_url> <stream>(ランダムな文字列)offair</stream> </rtmp> </output>
3. IEEE1394でカメラをつないでコマンドを実行。
dvgrabのrawストリームをパイプでつないでffmpegに流しこんでます。
コマンドの説明をするとdvgrabはフォーマットをDV raw(-f raw)に設定してハイフンで標準出力に流します。 ffmpegではDVフォーマット(-f dv)をハイフンで標準入力からdvgrabのデータを受けます。
あとはFMEの設定ファイルを見ながら、解像度(-s 320x240)、フレームレート(-r 15)、オーディオサンプリングレート(-ar 22050)、オーディオビットレート(-ab 48k)、映像ビットレート(-b 300k)、出力フォーマットにflv(-f flv)を指定し、rtmpで出力します。 rtmpの指定はFMEの設定で確認した番組番号とランダムな文字列を指定すればOKです。
$ dvgrab -f raw - | ffmpeg -f dv -i - -s 320x240 -r 15 -ar 22050 -ab 48k -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FME/3.0\20(compatible;\20FMSc/1.0)'
4. Ustream.tvのライブ配信ページを開きます
Ustream.tvの「ライブ配信」ボタンを押して、「より高画質へ」ボタンが表示されなければ成功です。
失敗しているときは、「より高画質へ」ボタンが表示されています。
5. 感想
他のページでffmpegの高画質配信は重いと書いてるけど、dvgrabとffmpegを使っての配信は言うほど重くないよ。 ていうかwebcamstudioがパワーをバカ食いするので、それと混同しているような気がする…。
これの応用としては日経Linuxに載ってたようにwebcamstudioを使ってvloopbackの出力からffmpegにつないだり、音声にpulseを使ってミキシングしたりできますね。
(2011.2.10追記)
ffmpegに「-f alsa -i pulse」と追加すれば問題なくPulseで使えました。 ステレオで配信する場合は「-ac 2」(オーディオチャンネルを2)と追加します。
$ dvgrab -f raw - | ffmpeg -f dv -i - -s 320x240 -r 15 -f alsa -i pulse -ar 22050 -ab 48k -ac 2 -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FME/3.0\20(compatible;\20FMSc/1.0)'
h.264で配信する場合はオプションを「-vcodec libx264 -vpre medium」とつけます。vpreはx264のプリセットで、/usr/share/ffmpeg/以下にlibx264-*という形で置いてあるので、その名前を指定します。 にしても、さすがにh.264でエンコードさせると重たい…。
$ dvgrab -f raw - | ffmpeg -f dv -i - -s 320x240 -r 15 -f alsa -i pulse -ar 22050 -ab 48k -ac 2 -vcodec libx264 -vpre medium -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FME/3.0\20(compatible;\20FMSc/1.0)'
2011-02-11
_ ffmpegでUstream.tv高画質配信をするとffmpegが落ちる
昨日のOSC神戸の会議をUstreamで中継しようとしたけれど3分ぐらいで落ちてしまった。 で、原因を探してるのだけど、わからない。
なぜなんだ??
2011-02-14
_ GIMPで缶バッジを書く
某所のチラシに、マークの入った缶バッジを散りばめた感じのものをイメージして作ろうと思ったのですが、画像の権利関係などがめんどくさいのでボツにしました。 だけど、缶バッジの感じが意外といい感じなので書き方を書いておきます。
0. Flickrでバッジ画像を見て気持ちを盛り上げる
なんとなくこういう画像を見ていると気持ちが盛り上がる気がするので、見て気持ちを盛り上げます。ほかにはバッジの光や影の様子も確認します。(逆、逆!)
1. 缶バッジのベースを書く
GIMPを起動したら、メニューバー[ファイル]→[新しい画像]を選択して適当な大きさのキャンバスサイズを作成します。例では600x600の大きさで作りました。
メニューバー[レイヤー]→[レイヤーを追加]を選択して透明のレイヤーを追加します。デフォルトで透明レイヤーを作成するので、ダイアログが開いたらそのままOKボタンを押します。
ツールボックスの[楕円選択]を選び、縦横の同じ大きさで円(正円)を書きます。例ではツールオプションで「開始位置」150px,150px、「大きさ」300px,300px、「境界をぼかす」1〜2pxほどの円を作成しました。
次のグラデーションでバッジの形にグラデーションをかけたいので、[選択]→[選択範囲をパスに]でパスに選択範囲を保存しておきます。
あとは適当にバッジの中身をデザインします。例ではDebianパッケージttf-aenigmaに入ってるBloxフォントを使ってGIMPと書いてみました。 デザインが終わればバッジを画像を統合しておきます。(背景とは統合しないように)
2. グラデーションをかける
透明のレイヤーを追加して、レイヤーモードをオーバーレイに変更します。
バッジ画像の範囲が選択されているか確認して、色は前景色を黒もしくはグレー、背景色を白にし、ツールボックスの「ブレンド」を選択します。
バッジ中央あたりから左上(光が当たる方向)に向かってドラッグし、グラデーションをかけます。(スクリーンショット参照)
いい雰囲気にグラデーションをかけたならバッジのレイヤーを統合します。(ここでも背景とは統合しないように)
3. ベベルを追加する
メニューバーの[フィルタ]→[装飾]→[ベベルの追加]でベベルを追加します。 例では厚さを10にしましたが、様子を見て数を増減させてください。
4. ドロップシャドウをかける
メニューバーの[フィルタ]→[照明と投影]→[ドロップシャドウ]を選択してドロップシャドウをかけます。 例では「オフセット」を4、「ぼかし半径」を20、「不透明度」を40にしましたが、背景が淡い色のところで影を強くするのもウソっぽいし、影が見えづらいところでこの設定だと背景に影が埋もれてしまうので、これも様子を見ながら調整します。
以上で缶バッジ画像の書き方でした。
5. 本物っぽく見せる
4までで終わりなのですが、より本物っぽく見せたいよねということでジーンズ画像を用意してその上に重ねてみました。 ジーンズ画像は以下のJeans Texture 10を使いました。(このテクスチャ、無償ではあるけど自由ではないんだ。すまない)
背景画像を開いて、手順3までのドロップシャドウをかける前のバッジ画像レイヤーを背景画像にドラッグ・アンド・ドロップします。
バッジレイヤーができますが、このままでは浮いているので、バッジっぽく調整していきます。
ツールボックスの「拡大・縮小」「回転」を使って、背景のジーンズの比率に合うようにバッジレイヤーを調整します。
ドロップシャドウをかけます。4の設定では影が薄くて見えないので強めに、「オフセット」を8、「不透明度」を80にしています。
ということで、ジーンズにつけたバッジのイメージが完成しました。
それっぽく見えるでしょ?
2011-02-20
_ 告知兄やん
告知を二つばかし。
_ 今日は神戸勤労会館でテックカフェがあります
金曜土曜でいっぱいになるかと思われましたが、プラマイゼロな感じで空きができました。 14時から神戸市勤労会館です。
第12回 テックカフェ「災害時の救援情報共有に使える!ウェブツール“SAHANA”(サハナ)」 日時:2011年2月20日(日) 14:00~16:30(13:30受付開始) 場所:神戸市勤労会館 講習室307
- ひょうごんテック : 第12回テックカフェ 2011/2/20(日)開催のお知らせ: http://tcc117.org/hyogontech/archives/192.html
_ もう一つ、4月15・16日開催の神戸ITフェス/OSC神戸のチラシ作りました
派手なヤツと地味なヤツです。個人的には地味なほうが好きだけど、派手な方がウケがいいです。
_ 三つ目もあった。来週日曜には第44回関西Debian勉強会があります
くわしくはこちら。
- KansaiDebianMeeting20110227 - Debian Wiki: http://wiki.debian.org/KansaiDebianMeeting20110227