FilterRange で最終フレームまでを範囲に指定すると 1 フレーム水増しされる件
Leben ist vorbei \(^o^)/: FilterRange を読んで、自分が改造したもののことを思い出したので、もう一回、確認の意味で調べてみました。にーやんのブログ :: プチ更新情報に、この件についての記述があるので、約 4 年前のネタになります……。
検証
以下のようなスクリプトを作成します。
# ソース
ColorBars(320,240).Trim(0,9) # 10 フレームのみ
# フレーム番号の追加
ScriptClip("Subtitle(String(current_frame), size=120, align=5)")
# FilterRange
FilterRange(7, 9, "Invert()") # 最終フレームまで
FilterRange 適用前は

このようなクリップだったのが、FilterRange 適用後は

こうなります。やはり最後の 1 フレームが水増しされています。そして、水増しされたフレームは、フィルタ適用前のものです。
原因と対策
c3 = clip.trim(end + 1, 0)
オリジナルの FilterRange では、ここで end + 1 から 0(0 は最後までを意味する)を選択しているのですが、end が最終フレームの場合、c3 には最終フレームが入ります。
c = end == 0 ? c : c + c3
そして、end が最終フレームの番号と一致しても end == 0 の条件にはあてはまらないので、c に c3 (つまり最終フレーム)を結合したクリップを返します。これが 1 フレーム水増しされる原因です。
これを防ぐには、最低限、end が最終フレームの場合にも c のみを返すように条件を追加すればいいことになります。最終フレームかどうかの判定には、FrameCount() 関数を使用するとよいでしょう。
改造版
AviSynth Wiki - FilterRange に改造版をアップしました。以前、改造したものより、さらに手を加えてあります。もう少しうまく書けそうですな気もしますが、今日のところはこれで。
関連ページ
最近読んだ本: 新版C言語プログラミングレッスン 入門編
「新版Perl言語プログラミングレッスン入門編」がわかりやすかったので、同じ結城浩さん著の「新版C言語プログラミングレッスン 入門編」も読んでみました。
ソフトバンク クリエイティブ
2006-08-30
各章ごとに、
- 基本
- バリエーション
- ハイグレード
- クイズ/間違い探し
- 練習問題
といった構成になっていて、少しずつ丁寧に進んで行く感じです。
ただ、これまでに何冊か C 言語の入門書を読んでいたこともあって、若干、説明がまだるこしく感じることもありました。たとえば、冒頭のあたりにはセミコロンとコロンの区別なんて話も出てきていたりとか、ちょっと丁寧すぎると言えるかもしれません。
この「新版C言語プログラミングレッスン」には文法編もあります。そのためか、他の C 言語入門本には書かれていたことで、この入門編には載っていない項目もありました。static 変数、enum、マクロなどは、たしか書いていなかったと思います。もしかしたら、文法編で説明されているのかもしれません。機会があれば読んでみようと思います。
ソフトバンク クリエイティブ
2006-08-30
あまびき開発日誌 #32, #33
あまびき開発 32 日目 と 33 日目。
32 日目
微調整のみ。
- index.html に JavaScript がオフの場合や読み込みに時間がかかる場合に表示されるメッセージを追加。
- 画像の修正(ウィッシュリスト追加ボタンなど)。
33 日目
お取り置き機能の実装。
jQuery の clone() を使ってサムネイル画像とリンクボタンを複製し、お取り置き欄に append する。どの商品を複製対象にするかは、クリックした商品の ID から判断する。
お取り置き機能とは
- 気になった商品を検索結果画面右の「お取り置き欄」にクリップする機能。
- 再検索ボタンで検索画面に戻ってもお取り置きした商品はそのまま残る。
ただし、この時点では Cookie には未対応。このため、ブラウザを閉じると、お取り置きも消える。
この記事は、Amazon.co.jp 商品検索サイト「あまびき」の開発中につけていたメモを、ブログ用にまとめ直したものです。
ShowTimeCode 関数を更新。AviSynth Wiki へ移動。
ShowTimeCode - タイムコードを表示する関数を更新しました。
AviSynth Wiki 内に ShowTimeCode のページ(AviSynth Wiki - ShowTimeCode)を設けましたので、今後はそちらを参照してください。ブログのページもそのまま残しておきますが、スクリプトは AviSynth Wiki からのみ入手可能です。
なお今回の更新では、2ちゃんねる「お前らのショボイAvisynthスクリプト貼ってくださいpart2」の 253 さんにミリ秒と整数秒の計算がいい加減だった部分を修正していただいています。253 さんには改めて感謝申し上げます。
あまびき開発日誌 #31
あまびき開発 31 日目。
ボタンの追加
検索結果の各商品欄に Amazon.co.jp の商品ページへのリンクボタンと、Amazon.co.jp の「ウィッシュリスト」(現在の「ほしい物リスト」)に追加するためのボタンを追加した。
次の URL({ASIN} に追加する商品の ASIN が入る)にアクセスすれば、ウィッシュリストに追加できるらしい。Amazon の仕様変更で使えなくなる可能性がある、と思っておいた方がよさそうだけれど。
http://www.amazon.co.jp/gp/registry/add-item.html?ie=UTF8&type=wishlist&asin={ASIN}
サブウィンドを開く処理
上記のボタンをクリックしたときに同一ページで開くと検索結果が消えてしまうので、新しいウィンドウを開くようにする。
XHTML 1.0 の Strict では target="_blank" が使えないので、JavaScript の window.open で新しいウィンドウを開くようにする。cl.pocari.org - target="_blank" を使わないで新しいウィンドウでリンクを開く方法やスクリプトOFFでもちゃんと閲覧できるように サブウインドウを開く弊害と対策 - [ホームページ作成]All Aboutを参考にした。
でもキーボードショートカットで開こうとすると、やはりポップアップ扱いになる。このあたりは要検討。
Yahoo! ウェブ検索経由でもサムネイルを表示
Yahoo! ウェブ検索で検索した場合の結果にもサムネイル画像を表示するようにした。
画像の URL は、ASIN から推測。たとえば小さい画像は次の URL にアクセスすれば見られる({ASIN} に商品の ASIN が入る。「俺流amazonの作り方―Amazon Webサービス最新活用テクニック」p.114 より)。
http://images.amazon.com/images/P/{ASIN}.09._SCTHUMBZZZ_.jpg
もしこの URL に画像が存在しない場合には、hail2u.net - Weblog - Amazonの画像置換 #2の方法で「画像なし」画像を表示させる。もともとは日本の Amazon(09)に画像がない場合にアメリカ/カナダ(01)の画像に置換するものだが、画像がない場合に 1x1 の画像が返ってくるのは同じなので。
画像の拡大については、とりあえず見送り。
この記事は、Amazon.co.jp 商品検索サイト「あまびき」の開発中につけていたメモを、ブログ用にまとめ直したものです。





