「wmv」を含む日記 RSS

はてなキーワード: wmvとは

2017-09-29

https://anond.hatelabo.jp/20170929144126

はいはい、Vegas買ってなくてスミマセンでしたね。自分も、ffmpegよく知らないけど、普通に読めば30分ぐらいでできると思ったのに、まさか最後画像を拡縮して全画面表示で5秒表示するだけのことが、6時間かかっても出来ないとは思わなかった。

本当に、iMovieでやった方が楽かも。だけど、中間ファイルwmvで出力したので、iMovieが読み込んでくれず。

そして、このJustSystemsの糞ソフトAVCHD出力もちゃんとできなくて、確実に高解像度出力できるフォーマットwmvだけ、と来た。

簡単なことしか出来ないのはいいが、複雑なことをやるための手段が全部封じられているというのがつらい。

https://anond.hatelabo.jp/20170929131047

共感なんてしなくていいから、ffmpeg -i vid1.wmv -i vid2.wmv -i vid3.wmv -loop 1 -t 5 -i abc.jpgで-filter_complex使って全部の動画を-target ntsc-dvd形式で出力する方法教えて。

JustSystemsの感動かんたん!フォトムービー8に結婚式台無しにされた

感動かんたん!フォトムービー8というソフトウェアがある。新婦エンジニアでもなんでもないので、できるだけ簡単ソフトを選んだ。

http://www.justsystems.com/jp/products/photomovie/

1)「写真2枚以上を一つの画面に入れる」という非常に簡単なことが、1つの映像の中で15回しか出来ない欠陥商品なのに、パッケージにもAmazonにも書いていない詐欺ソフトウェア

サポートセンター電話をしたら、そういう仕様だと説明された。パッケージにも説明書にもどこにも、そういう仕様だと書いていないことも認めた。)

2)動画最後に「ありがとうございました」という画像を、「切らずに全画面に」入れることが出来ない。スライドショーソフトなのに全画面が出来ないとか…これまた詐欺ソフト

3)仕方がないから3つの動画に分割して作り、「ありがとうございました」画像も作って映像化、最後ffmpegで全連結しようとするがうまくいかない。

前提:式場はDVDしか受け付けない

3−1)3つの動画の単純連結はエンコードありなら出来る

3−2)動画の連結を再エンコードなしでやろうと失敗する。

3−2−1)NTSCに使われているDVD規格は、単純なファイル連結が動画連結になり、mpgファイル普通に再生できるのだが、DVDオーサリングで失敗する。

3−2−2)再エンコードなしのアプローチで「ありがとうございました」画像映像化を行って、接続するしかない…

結婚式は今週末。迫る時間JustSystemsが我々の結婚式破壊した。

  • 追記

できた!できたぞぉぉぉぉぉ!!!映像を3つくっつけて最後に「ありがとうございました」を5秒間表示させるのに、6〜8時間かかったわ。

このソフトで唯一マトモに出力できる高解像度動画形式wmvを3つ(vid1.wmv, vid2.wmv, vid3.wmv)連結して、最後に「ありがとうございました」画像image.jpgをくっつけ、NSTC形式DVD16:9にしてそのままオーサリングソフトで焼けるようにするためのffmpegオプションの設定の仕方がとうとうわかった!

ffmpeg -i vid1.wmv -i vid2.wmv -i vid3.wmv -loop 1 -t 5 -i image.jpg -f lavfi -t 5 -i anullsrc=channel_layout=stereo:sample_rate=48000 -filter_complex "[3:0]scale=1280x720,setsar=1:1[v2],[0:1][0:0][1:1][1:0][2:1][2:0][v2][4:0]concat=n=4:v=1:a=1[v3][a3]" -map '[v3]' -map '[a3]' -shortest -target ntsc-dvd output.mpg

ここで技術力がないとか、計画が悪いとか、ハゲとか(ハゲではない)、バカとか罵詈雑言を浴びせられるだけで無能感高まっていたが、どうして、最初からffmpeg名前を出しているのに、上のコマンドぐらいパッと送ってくれる人間がいないのか。みんな、そんなに悪意に満ちているのか。

まぁ、映像専門のエンジニアにしてみれば「ばーか、6時間もかからないよ」というところなんだろうけど、映像専門じゃないんでスミマセンね。

つまづいたのは、

イ)concat filterがv=1,a=1を設定した時、[vid1のvideo stream][vid1のaudio stream][vid2のvideo stream][vid2のaudio stream]という形でビデオと音声のstreamを交互に並べていけないといかないところ

ロ)concat filterが必ずaudio stream指定して動く形になっているため、無音のaudio streamをanullsrcで作ってやらないといけないところ

ハ)anullsrcは無限時間無音声を生成し続けるので、通常は-shortestを指定して時間制限するのだが、anullsrcとconcat filterを組み合わせる時は、-shortestを指定しても無限時間音声生成が止まらないところ。なぜかわからないが、-t 5で直接5秒間指定して音声を切ったわ。

というわけで、「感動かんたん!フォトムービー8」を使って結婚式ムービーを作るためには、これだけの知識必要になるので、パッケージに書いておいてください。じゃないと、詐欺だと思います。まる。

2015-12-11

LinuxMintを使って数ヶ月

何の問題もない。エロゲギャルゲ乙女ゲーができないくらいか。

ニコニコ動画の視聴にも問題ない(Flashも動く。けど新バージョンリリースはもうないらしい)

MinecraftJavaベースなので問題ない。MODも今のところ全部動いている。(Buildcraft, IC2_experimental, Thermal Expansion, etc.)

・家で文書作るときもとりあえずLbreofficeで下書きして会社で整形する。

アップデート勝手再起動されない(これされるとほんとに殺意が芽生える)

・起動と終了が早い。でもスタンバイモードから復旧したときにたまにマウスの左クリックが効かない。

USBメモリプリンタスキャナ、だいたいのデバイス認識してくれる。

かゆいところに手が届く系のソフト自炊した画像をまとめてスマホ画面サイズPDFにしてくれるやつとか)は少ない。

Chromiumさえ入れてしまえばLINEも動く。

JAVA, Chromium, Flash全部がSynaptic(ウィンドウズでいう「プログラム機能」)でインストールできる。昔apt-getで出来なかったことでもわりとできるようになってる。

Linux Mint指定されたレポジトリの追加さえすればIME日本語環境の構築が簡単。このやりかたの方がMozc単体でインストールするよりも安定性が高い(気がする)。

MATEもCinnamonも使いやすい。スタートメニューボタンがあってWindowsからの移行もわりと簡単。

・Cinnamonのほうがウィンドウマネージャーとしての機能は優秀(画面のスナップで四隅にタイリングできたりデスクトップの切り替えが直感的)だけど如何せん重い。動作が一瞬遅れる。ノートや一昔前のスペックならMATE妥当だし、MATEとCinnamonに大きな操作上の違いはない。

Linux Mintに限らず、LinuxGUI独立しているので、Cinnamon版をインストールして自分に合わなくてもSynapticでMATEインストールすれば良い。

ギャルゲエロゲLinuxの相性については、Wineエミュレータを使う上でいいものと悪いものがあるけども、次に当てはまる奴が動かない可能性高い

・Livemaker製

WMV再生するもの

3Dに凝ったもの

逆に、2Dベースだったり、ライブラリ依存しないようなタイプだと動く? でもしょっぱな動いてても途中で急に詰むこともあるので、エロゲはおとなしくWin機でしたほうが良い。

2015-11-08

屍者の帝国

 伊藤計劃はディティールの作家だった。

 はっきり言ってしまえば、虐殺器官トリックハーモニーアイディアも、SF観点からするとさして目新しいものではない凡庸ものだ。

 にも関わらず、「夭逝天才作家」として祭り上げられる以前から○○おじさんを含むめんどくさい連中に評価されている理由は何かと考えると、ディティールの積み上げる圧倒的なリアリティにあるのだと思う。

 虐殺器官に出てくる心理マスキング処理、ハーモニーに出てくるアマゾンめいた個人評価スター、これらは今現在からの延長線上の未来として演算される現実的もので、一部の組織企業内では既に現実のものとして実装されているものであろう。

 彼の死から早6年、彼の最後作品である屍者の帝国が、Project itohの最初映像作品として公開される、それも彼が最も愛した映画という形をとってだ。

 6年間、それはあまりにも長い時間でした。僕らの好きだった計劃さんは、どうしようもなくめんどくさい(そして愛すべき)はてダ映画おじさんという存在から、いつの間にかに「夭逝天才作家」という世間を騒がすアイドルになっていてProject itohなるもの始動してしまう始末。

 それでも、それでも、Projectに苦虫を噛み潰したような表情で立ちすくむ○○おじさんたちも、御大小説映像化されることには公開される前は素直に喜んで胸のときめきを抑えきれなかったはず、そう公開される前は。なんなんですか、いざ公開されたとなればハダリーたんのおっぱいとか階差機関に対する言及はあれども映画のものに対しては皆口をつぐみ挙句の果てに「地獄はここにあるんですよ」と指差す始末。

 はっきり言おう、○○おじさんたちは生前の計劃さんから何も学んでいないと。

 映画批評っていうのはレビューではない。もっと体系的だし、少なくともウェブに溢れる「面白い」「つまらない」といった感想程度のゴシップではない。

 批評とはそんなくだらないおしゃべりではなく、もっと体系的で、ボリュームのある読みものだ。もっと厳密にいえば「〜が描写できていない」「キャラクターが弱い」「人間が描けていない」とかいった印象批評規範批評の粗雑な合体であってはいけない。厳密な意味での「批評」は、その映画から思いもよらなかったヴィジョンをひねり出すことができる、面白い読み物だ。

 だから、こいつは映画批評じゃない。まさに印象批評的で、規範批評的で、それはすべて、ぼくが紹介する映画を魅力的に見せるためにとった戦略だ。

 面白い映画面白かった、という。

 このページでいろいろ書いていることは、結局そういうことだ。

「おかえり、フライデー

 人間は死亡すると、生前に比べて21g体重が減少することが確認されている。それが霊素の重さ、いわば魂の重さだ。我々は魂が抜けた肉体に擬似霊素をインストールすることによって死者を蘇らせる。

 原作は我らが伊藤計劃、そして円城塔。といってもたった30枚の遺稿は映画化にあたってオミットされている。メディアミックスなるもの今日当たり前のものになりつつあるのに、なぜかこと映画化に関しては地雷であるという評価が当然のものになりつつある、特にマンガアニメ原作付きのものに関しては顕著だ。本作もその類に漏れず、○○おじさん達から大変な不評を買ってしまっているが、伊藤作品映像化という観点からすれば私は十二分に楽しむことができる傑作だと思った。

 原作付き映画に何を期待するかは人によってそれぞれ違うが、原作ストーリー通りに話が展開するだとか、セリフを忠実に再現するだとか、冒頭の30枚を残すだとか、少なくとも私はそういったことには重みを置かない。小説には文字の、映画には映像の文法がそれぞれあるのだから、単に忠実に再現するだけでは翻訳として成り立たないし、少なくともメディアミックスとしての価値はない。それは原作ファンを称するクラスタに向けた言い訳に過ぎず、怠惰姿勢だと思う。

 文字とはすなわち情報であり、映像もすなわち情報である。その違いがどこにあるかというとtxtファイルwmvファイルの容量を比べるまでもなく、圧倒的な情報量にある。つまり同じシーンを描写するにあっても、映像化のためには不足する情報を画面に徹底的に描き込まなければならない。では不足する情報をどこから補ってくるかといえばやはり原作であるのだが、単に帰納演算に基づいて情報を付加すると、あたかjpeg画像を拡大したように荒く違和感を感じるものになってしまう。そこで映像化にあたっては、原作を入念に読み込み世界観理解したうえで、原作存在しなかった情報を加えることでディティールを明確にする。一方でその情報量が過剰であるが故に、人は文字を3時間追うことができても、映像を3時間観ることは困難なのもまた事実現実的には予算だとか尺の問題だが)。そこで行われるのは物語圧縮である。先に述べた情報の付加と異なり、如何に情報量を減らさずに短い時間に収めるか、如何にディティールを残したまま圧縮できるかが肝になる。

 こうして完成した映像作品は、個々人の頭の中に存在する「原作」とは違ったものとなっているので、ほぼ確実に違和感を与えることになる、場合によってはそれが不評の原因になるかもしれない。だが、ここであえて言わせてもらえば、その違和感こそがメディアミックスとしての醍醐味であって、映画を見る楽しみの観点であろうと。

 私はかつて植民地だった地域によくある上海租界のような場所が好きだ。それは現実宗主国建築物を現地にある材料で模したまがい物に過ぎないのだけれども、望郷の念からか過剰に演出されたそれらの建物は本物のフランスイギリス建物より本物らしく見える。例えるなら歌舞伎女形女性より女らしいようなものだ。

 映像化された屍者の帝国に、私は原作より原作らしいもの、あるいは書かれることがなかった、この世界線には存在しない真の原作面影を感じることができたと思う。

 ボンベイにたむろする屍者の労働者、○○おじさんにも大好評だった圧倒的なディティールの階差機関、白く荒涼としたカザフスタン目黒雅叙園相撲浮世絵ジャパン映像化に際して付加された情報量についてだけでも映画として申し分ない。かつて彼が愛していた世界観型の映画のように、産業革命時代に屍者技術なるもの存在した場合どんな世の中になるかというSF観点なif、たったひとつの嘘による世界構築がなされている。

 「あなたにもう一度逢いたかった、聞かせて欲しかった、あなた言葉の続きを。」

原作ではフライデー円城塔で、ワトソン伊藤計劃にあたる。彼が残したテキストを読み足りない情報を補って、作家伊藤計劃脳内にエミュレートして続編を書くという行為を考えれば当然の配役である小説エピローグで、彼岸に渡ったワトソンを思ってフライデーは自らの意思を持ち動き出す。一方、映画ではその立場が逆転して、ワトソン円城塔フライデー伊藤計劃にあたり、旅の目的伊藤計劃の復活である映画の文法としては旅の目的明確化だが、○○おじさんにとっての不評の元凶となる改変だ。BLノイタミナだとdisる気持ちもわからなくはないけど、ヴィクター書記を手に入れて伊藤計劃を復活させるという話が映像化第一弾として公開されることに意味を感じる。

 冒頭にも書いたが伊藤計劃小説は言ってしまえばそんなでもないし、同じようなものを書ける人は出てくる。けど、彼の映画批評のような愛と薀蓄に溢れた文書を書ける人はもう出てこないような気がする。それでも彼がもし生きていればこの映画をどう評論しただろうか、死んだ彼がこの映画を見たらどう評論しただろうか。

 あなたはここにいるわ、そう思えるような文書をみんなもっと書いて欲しい。

2015-02-21

ハッキング極意3】ブラックハッカーになれ。そして世界を変えろ

アノニマスの坊や達、こんばんは

僕だよ。

前回の記事

【ハッキング極意2】武器を持て

ハッカーになりたい君たちの要望に応えるべく再び黄泉の国から舞い戻ってきたよ。

ハッカー…素晴らしい響きだ。

皆それになりたいと思う。

ハッカーになりたいという若い子は恐らくクラッカーみたいなのになりたがっているだろう。

そう裏の世界活躍するブラックハッカーだ。

中高生くらいならばなりたいと思っても、どうなるのか誰も教えてくれない。

親切な人たちが教えてくれるYahoo知恵袋などで『ハッカーになりたいです』とか書くとどうだ?

貴方のいっているのはクラッカーですね?ハッカーとは別物ですよ」

違法なことはいけません。通報しました。」

など、どうでもいい説教をされてしまう。

清く正しい中学生がなんだか気を利かせて、「ホワイトハッカーになりたいです」とか「ハッカーになりたいです違法行為しません」

などなど、変に気を使っている。

若いんだから夢見させろや。

ブラックハッカーになろう!!

そうだ!なろう!!裏の世界人間になろう!!そして世界を変えるんだ!!

ハッカーの種類。

ハッカーと言っても色々居るわけだ。

撮り鉄とか葬式鉄とか、ウィルスをばらまくハッカーとか、脆弱性を見つけて小銭稼ぐハッカーとか、OS作るハッカーとか、セキュリティポリシー精読して炎上させるハッカーとかね。

おっと…ウィルスかい専門用語つかってしまったね。

一般人には聞き慣れない言葉だろう。

ウィルスというのは細胞を持たないが遺伝子をもつ最小の生物なのだが、細胞を持たないため非生物とも言われている構造体だ。非生物らしく結晶化もできる。

宿主となる細胞に増殖をしていく。

そのウィルスコンピュータ世界に入り込み進化したものコンピュータウィルスと言われていて、生命の謎を握る存在なのだ

こう言われてもピンとこないだろうから、君たちにわかやすいモノで表現するとすると

まり電光超人グリッドマン』に出てくる怪獣のようなものだと思ってくれればいい。

ブラックハッカー

ハッカーと言われている人たちは大体ブラックハッカーだ。

ブラック、そう闇と言われるハッカーたちは自分自分所属する集団のために違法行為を厭わない連中だ。

ダースベーダーのようなアンチヒーローだ!

プログラマスキルによってその仕事スピード20倍にも40倍にも開きが出ると言われている。

その特A級ハッカーウィザードと言われるが、そのとおり魔導士のような不思議な力を使う。

ブラックハッカー魔法

ブラックハッカー特に魔法が得意と言われている。

工数が3人月だとしよう。3人ハッカーがいる。

しかし謎の力の仕様変更により納期は変わらず工数が9人月になった。

にもかかわらずだ納期は間に合い、しかも!稼働時間も3人月しか計上されていない。

これは何処かのタイミングで時を止めていると言われている。

たまに勤務管理システム上は有休になっているが、入館ログには出勤の形跡があることがある。

これは休み仕事の状態が重なり合っている量子力学的な状態を不思議な力で作り出しているのだ。

量子コンピュータは0の状態と1の状態が一つのビットで同時に表現できると言われているが、ブラックハッカーはすでに人間の身でありながら実現しているのだ。

事実量子コンピュータブラックハッカーの脳を再現する形で実現しようとしている。

量子コンピュータを作っている企業下請けに大量のブラックハッカーが居るのもそういうわけだ。

ウィルスをばらまくハッカーもいると言ったがブラックハッカーもその能力を持っている。

例えばインフルエンザエボラ出血熱などを持って出勤するのも彼ら得意技の一つだ。

また、違法行為も厭わない。

どんな違法行為をやっているかは良い子の皆が真似をしてしまっては困るのでとてもここでは言えないがね…

ブラックハッカーたちの活躍

ブラックハッカーたちは暗黒の存在とは言え我々の社会には無くてはならないものになってしまっている。

闇が深い金融業界や、日本国政府もこのブラックハッカーに頼らざるえなくなっているのだ。

おそらくマイナンバーではブラックハッカーのそうそうたる面々が集うことになるだろう。

ブラックハッカーになるには

どうだろう。

ブラックハッカーになりたくなったか

なる方法は簡単だ。

僕はブラックハッカーだと宣言し、入社をすればすぐになれる。

読者から質問コーナー

さて、今日は前回のコメントに付いていた

「神はXをつかうのか?」という質問について答えようと思う。

良い質問だ。

これは教義に関わるかなりナイーブ問題なんだ。

でも、いつだったか1000年位前の公会議で神はXを使うという事になったんだよ。

なぜXを使うことになったのか

裏の人間は黒い画面を好み、黒い画面でいろいろやろうと思っていた。

だが、次第に艦これもやりたくなってきた。

そのうち艦これやりたさに信仰を捨てWindowsに走るものや、過激派組織APPLEに見を投じる者も出てきた。

しか信仰心の篤い者達は我慢したBashでなんとかやろうと我慢した。

VimTwitterをやったり、Wgetテキストサイトを見たりしていた。

だが、XVIDEOSの誘惑には勝てなかったのだ。

その当時のハッカーたちはLinuxでもXVIDEOSを見るシステムを開発しようとした。

それが『XVIDEOS Window System』つまりXだ。

Xは黒い画面とXVIDEOSの間から妥協として生まれたが、そのうちそれでも良いかという空気になりXは流行った。

Xを使うものは我慢していた艦これもやり始めたのだが、

なんとDMMに登録するとAV動画も見れるサービスがあることをしることになった。

Linuxでは艦これは出来てもDMM動画を見ることは出来ない。

悪しきWMVで公開されてDRMがかかっているし、ストリーミングも何故か映らないのだ!!

XVIDEOSの細切れで続きが何処にあるかわからないAVよりも、有料だけども安心して見れるDMMのほうが良いというものが増え

Windowsに逃げてしまう者が増えてしまった。

そうやってLinux信者数を減らしてしまい今では生きる場所裏社会のみになってしまったのさ。

そういう経緯があるので、神はXを使っていることになっている。

新作

http://anond.hatelabo.jp/20150224002209

2014-12-02

正直avisynthの良さが分からない

正確に言えば、aviutlで事足りる。

でも一流(笑)エンコ屋に言わせれば

avisynth最初組み込みがメンドいだけで

後はスムーズかつスピーディーエンコ出来るらしい。

らしいと言われて自分もとりあえずこれを導入。

だが、体感的に見るとコード組み込み、組み換えがメンド臭いんで

それらを記憶する事が出来、またプラグインの新版が常に流用できるutlの方が

簡単でラクちんなのが分かった。

その点synthは.txt→.avsにしてaviutlで開くだけで操作自体は単純なのだ

動作の確認がやり難い分、結局通さないでutlのみの操作がやり易いなという印象だ。

エンコ屋はsynthを過大評価するが、結局劣化エンコになるのだからutlもsynthも大して変わらないのが現状だし、

スピードは結局個人スペック(PC)に頼るほかない。

core-iシリーズなら3から5程度で30分の番組を300MBないし400MBでエンコードするなら、何もプラグインを通さない素エンコ

2~3時間程度で済む。無論2パスコード~3パス無難プリセットもfasterないしfastでやってみても構わないが画質を固定化するならmedium妥当

といったようにエンコードする。

尤もavisynthに出番が全くないわけじゃない。

例えば入力プラグインが通じないwmvファイルエンコードする際には、役立つツールだ。

今はL-SMASH殆どプラグインを網羅できるものの、たまに通さなファイルがある。

そんな場合にはsynthを用いる事になる。

だが、wmvファイルは元々Windows Media Videoでコーデック問題なのだ

から専用コーデックを導入すれば済むのだが、それを導入するには色々手順を踏むのでメンド臭い

そういう時にsynthが活用されるのかな、というイメージとして見ると良い。

どっちにしても手間を惜しむのならsynthを使うメリットはほぼ皆無だ。

こうした特例でもない限りは使う必要性を感じない。

しろaviutlでどうしても困難な場合しか用いる事はない。

一流(笑)は何かとsynthの有用性を有難がるが、観賞用でもない限りデメリット殆ど生じない。

それこそ流布してるコーデックプラグインを駆使すれば済む話といえる。

2010-05-08

http://anond.hatelabo.jp/20100508093218

いくらでもあるでしょ。

HTMLでもいいし、JPEGGIFPNGMPEGWMVMP3Javaアプレットと、表現手段はいくらでもある。

それよりもFlashが優れているのは単にAdobe(Macromedia)の努力の賜であって、寡占状態は別に不当な結果じゃないでしょ。

もしユーザー不利益な行動を取るようになったら、さっさとFlashから別の規格に乗り換えればいい。

2010-01-06

http://anond.hatelabo.jp/20100106194851

360ゲーム中に使用できる動画フォーマットMPEG2h.264WMVの三種類だったはず。

それ以外にもあるかもしれんけど、仮にそうだとしても動画部分はビットレート(画質)を落とすとかしない限りデータは殆ど縮まらんだろうな。


http://anond.hatelabo.jp/20100106194652

HDDインストールするにしても、どっちにしても起動する時はトレイに対応するディスクが入ってないといけないからディスク入れ換えは不可避なわけで、結局は無意味じゃないか?

2009-12-07

動画ダウンロードサイトの一覧

みるみる動画

動画によってはXMLデータコピーペーストDLに少し手間がかかるが、

多くの動画に対応(※DLできない動画も多い)。

実際にどれだけの動画サイトDLできるかは謎。

時間帯によって重い。


Vid-DL

動画によってはXMLデータコピーペーストDLに少し手間がかかるが、

多くの動画に対応(※DLできない動画も多い)。

実際にどれだけの動画サイトDLできるかは謎。


GET WMV

Yourfilehost動画に的を当てたサイト

Yourfilehost動画WMVDLできる。

また、最近DLされたリストが表示され以外に使える。

夜はちょっと重い。


にこびで

ニコニコ動画に的を当てたサイト。その他、Veoh等あり。

DLランキングもついており、ニコ動に関しては情報が充実している。

また、サイト検索カテゴリ別に分けられている。

ニコ動に関してはおkかと。


DownloadEden

Youtube,Veoh,SayMove,YourfilehostDLできる。

Ajaxライクなサイトで、すべて1クリックDLできる(余計なXMLデータコピペがいらない)。

Youtubeの画質を選択してDLできるのが使える。




自分メモも兼ねてます。

2009-11-26

いい加減にしてくれ…

HTMLコーディングプログラムだとか

Windows Media Player for Mac は、WMVMP4リアルタイムエンコして表示してるんだとか

2008-10-18

real street angels から mechanize を使って動画を取ってきてEmacsで見てみるよ

せっかく書いたから匿名でのせてみるよ

使い方は

  • 動画を取ってきたいよ
    • config.yamlユーザとかを設定するよ
    • ids.txt に取ってきたいIDを書くよ
    • sangels.bat を実行するよ
  • Emacs動画を見たいよ
    • sangels.el を load するよ
    • M-x sangels だよ

必要なものを gem で取ってくるにはこうすればいいよ

  • gem install -r log4r
  • gem install -r -v 0.6 hpricot
  • gem install -r mechanize

長すぎてelispが消えたから続きがあるよ

sangels.bat - 起動用バッチファイル

@echo off
setlocal
set WD=%~dp0
cd /d %WD%

ruby get_movies.rb
ruby get_images.rb
ruby create_m3u.rb

ruby

config.yaml - 設定ファイル
user: ユーザID
password: パスワード
ids_file: ids.txt
done_file: ids_done.txt
movies_dir: movies

log4r_config:
  pre_config:
    global: INFO
  loggers:
    - name: app
      type: Log4r::Logger
      level: INFO
      outputters:
        - STDOUT
        - FILE
  outputters:
    - name: STDOUT
      type: Log4r::StdoutOutputter
      formatter:
        type: Log4r::PatternFormatter
        pattern: "%d [%l] %C - %M"
        date_pattern: "%H:%M:%S"
    - name: FILE
      type: Log4r::FileOutputter 
      filename: "#{LOGDIR}/sangels.log"
      formatter:
        type: Log4r::PatternFormatter
        pattern: "%d [%l] %C - %M"
        date_pattern: "%Y-%m-%d %H:%M:%S"
get_movies.rb
require 'fileutils'
require 'logger'
require 'mechanize'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"
require "#{BASEDIR}/sangels"

$config = load_config(BASEDIR)
prepare_logger(BASEDIR)
$log = new_logger("get_movies")
WWW::Mechanize.log = new_logger("mechanize")
WGet.log = $log

class IDFile
  def initialize(file)
    @file = file
    unless File.exist?(@file)
      Fileutils.touch(@file)
    end
  end

  def ids(contains_comment = nil)
    File.open(@file) {|io|
      io.to_a.map {|x|
        x.chomp
      }.select {|x|
        if x.empty?
          nil
        elsif contains_comment
          true
        else
          not /^\s*\#/ =~ x
        end
      }
    }
  end

  def add(id)
    ids = ids(true)
    unless ids.any? {|x| x == id}
      write(ids + [id])
    end
  end

  def delete(id)
    ids = ids(true)
    if ids.any? {|x| x == id}
      write(ids - [id])
    end
  end

  def write(ids)
    File.open(@file, "w") {|io|
      ids.each {|x| io.puts x}
    }
  end
end


$log.info("BEGIN #{$0} ================")
exit_code = 0
begin
  ids_file = IDFile.new($config.ids_file)
  done_file = IDFile.new($config.done_file)
  movies_dir = $config.movies_dir
  wget = WGet.new

  sangels = SAngels.new
  sangels.login($config.user, $config.password)
  ids_file.ids.each {|id|
    begin
      movies = sangels.movies(id)
    rescue SAngels::Movies::InvalidMoviesError
      $log.warn("invalid movie id: #{id}")
      next
    end
    dir = File.expand_path(id, movies_dir)
    movies.each {|link|
      wget.retrieve(link.href, dir)
    }
    expected = movies.movie_links.map{|x| File.basename(x.href)}
    actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)}
    if (expected - actual).empty?
      done_file.add(id)
      ids_file.delete(id)
    end
  }
rescue => e
  $log.error(e)
  exit_code = 1
end

$log.info("END #{$0} (#{exit_code}) ================")
exit exit_code
get_images.rb
require 'fileutils'
require 'logger'
require 'mechanize'
require 'ostruct'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"
require "#{BASEDIR}/sangels"

$config = load_config(BASEDIR)
prepare_logger(BASEDIR)
$log = new_logger("get_images")
WWW::Mechanize.log = new_logger("mechanize")
WGet.log = $log

$log.info("BEGIN #{$0} ================")
exit_code = 0
begin
  movies_dir = $config.movies_dir
  sangels = SAngels.new
  sangels.login($config.user, $config.password)
  thumbnails = sangels.thumbnails

  Dir.glob("#{movies_dir}/*").each {|dir|
    next unless File.directory? dir
    id = File.basename(dir)

    url = thumbnails.url(id)
    unless url
      $log.warn("#{id} is not found")
      next
    end
    path = File.expand_path("00_thumbnail#{File.extname(url)}", dir)
    next if File.exist? path

    $log.info("retrieving #{url}")
    thumbnail = thumbnails.get_file(id)
    File.open(path, "wb") {|io| io.write(thumbnail)}
  }
rescue => e
  $log.error(e)
  exit_code = 1
end

$log.info("END #{$0} (#{exit_code}) ================")
exit exit_code
create_m3u.rb
BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"

$config = load_config(BASEDIR)
movies_dir = $config.movies_dir
Dir.glob("#{movies_dir}/*") {|dir|
  next unless File.directory? dir
  name = File.basename(dir)
  files = Dir.glob("#{dir}/*.wmv").sort

  File.open("#{movies_dir}/#{name}.m3u", "w") {|io|
    files.each {|file|
      io.puts "#{name}/#{File.basename(file)}"
    }
  }

  File.open("#{dir}/00_movies.m3u", "w") {|io|
    files.each {|file|
      io.puts "#{File.basename(file)}"
    }
  }
}
sangels.rb
require 'mechanize'
require 'hpricot'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"

class SAngels
  HOST = "real2.s-angels.com"
  LOGIN_URL = "http://#{HOST}/member/"
  INFO_URL = "http://#{HOST}/teigaku/item.php"
  THUMBNAILS_URL = "http://#{HOST}/teigaku/"
  THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/"

  def initialize()
    @agent = WWW::Mechanize.new
  end

  def login(user, password)
    login_form = @agent.get(LOGIN_URL).forms.find {|form|
      form.fields.any? {|field| field.name == "frmLoginid"}
    }
    login_form.frmLoginid = user
    login_form.frmPw = password
    @agent.submit(login_form)
  end

  def movies(id, no_validate = nil)
    Movies.new(@agent, id, !no_validate)
  end

  def thumbnails
    Thumbnails.new(@agent)
  end

  class Thumbnails
    def initialize(agent)
      @agent = agent
      doc = Hpricot(@agent.get_file(THUMBNAILS_URL))
      elems = doc.search("div[@class=realthum]/a")
      @links = Hash(
        elems.map {|elem|
          href = elem["href"]
          id = $1 if /ID=(.+)/ =~ href
          url = elem.search("img")[0]["src"]
          [id, url]
        })
    end

    def get_file(id)
      @agent.get_file(url(id))
    end

    def url(id)
      @links[id]
    end

    def exist?(id)
      url(id)
    end
  end

  class Movies
    class InvalidMoviesError < StandardError
    end

    def initialize(agent, id, no_validate)
      @agent = agent
      @id = id
      if !no_validate &amp;&amp; !valid?
        raise InvalidMoviesError
      end
    end

    def info_page_url
      "#{INFO_URL}?ID=#{@id}"
    end

    def info_page
      @agent.get(info_page_url)
    end

    def movies_page
      @agent.click(info_page.links.find {|link| /P=10/ =~ link.href})
    end

    def movie_links
      movies_page.links.select {|link|
        /wmv$/ =~ link.href
      }.sort {|a, b|
        File.basename(a.href) <=> File.basename(b.href)
      }
    end

    def valid?
      info_page.uri.to_s == info_page_url
    end

    def each(&amp;block)
      orig_links = movie_links
      orig_links.each {|orig_link|
        link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)}
        block.call(link)
      }
    end
  end
end
util.rb
require 'log4r'
require 'log4r/yamlconfigurator'
require 'singleton'
require 'fileutils'
require 'ostruct'

def Hash(a)
  Hash[*a.flatten]
end

def load_config(basedir)
  OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)})
end

def new_logger(name)
  Log4r::Logger.new("app::#{name}")
end

def prepare_logger(basedir, logdir = nil)
  logdir ||= basedir
  Log4r::YamlConfigurator["LOGDIR"] = logdir
  Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml")
end

class NullObject
  include Singleton
  def method_missing(message, *arg)
    NullObject.singleton
  end
end

class WGet
  class << self
    attr_accessor :log
    def initialize
      super
      @log = NullObject.singleton
    end
  end
  
  def log
    self.class.log
  end

  def retrieve(url, dir)
    FileUtils.mkdir_p(dir)
    file = File.expand_path(File.basename(url), dir)
    if File.exist?(file)
      log.info("already retrieved #{url}")
      return true
    end

    tmp = "#{file}.part"
    log.info("retrieving #{url}")
    ret = system("wget", "-c", "-O", tmp, url)
    if ret
      log.info("retrieving succeeded #{url}")
      File.rename(tmp, file)
    else
      if $? == 0x020000 # Ctrl-C
        exit($?)
      else
        log.error("retrieving failure #{url} (#{$?})")
      end
    end
    return ret
  end
end

2008-09-22

17歳男子が伝授する「YourFileHostの見方」

http://anond.hatelabo.jp/20080919184855

17歳男子オススメする!「"イイ"YourFileHostまとめサイトのまとめ」

 

予想以上のブクマ数と予想以下のトラックバック数に開いた口がふさがらない元増田です。 

さて、お礼といっちゃあれですが、もし「YourFileHostがうまく再生できなくてハァハァできない!」という方のためのエントリー

うまく再生できないというのは、下記のようなメッセージが出てきてしまう状態のことです。

To Continue Please Log In Or Register For A Free Account.

私自身、詳しいことはよく知らないんですが、どうやら日本からのアクセスが過多なのでアクセスを制限するために、動画連続3回以上見ると表示されてしまうメッセージのようです。

これを表示させずにハァハァしつづけたいのであれば…

WEBブラウザの設定で「言語」を「日本語」から「英語」に変更する

InternetExplorer系であればツール→インターネットオプションから、FireFoxならツール→オプションから、Operaならツール→設定から、WEBブラウザデフォ言語を設定することができます。(SafariとかNetScapeとかはインスコしてないのでよく知りません)

これを英語に変えることであたかも英語圏からアクセスしているように見せかけるというわけですね。

ただ、言語英語に変えると英語に対応している国内サイトの一部が英語で表示されてしまうことがあります。日本語で閲覧するためには言語設定を日本語に戻さなければいけません。しょっちゅうハァハァしたい場合、これはとても面倒。

そこですね、私は普段よく使うIEFireFox日本語のままにし、Operaハァハァ専用ブラウザとしOperaだけを英語に設定しています。まぁこんなこともできるということで参考に。

ダウンロードして動画プレイヤー再生する

YOUTUBEニコニコ動画と同じように動画だけを抽出しちゃうことができます。Vid-DLhttp://tinyurl.com/256tcf)などを使うと簡単です。

ただし、ダウンロードできるのはflvファイルのみ(だと思う)です。WindowsMediaPlayerやクイックタイムなどでは再生できません。これらでも再生できるwmvとかに変換(http://tinyurl.com/2sv47x)するのもいいですが、私はflvwmvなども再生できるGOMプレイヤーってのをおすすめします。無料ダウンロードできる(http://tinyurl.com/y8g3pj)ので知らなかった!という人はぜひ使ってみてください。 

GOMプレイヤーなら、動画投稿可の携帯用掲示板などからダウンロードした地鶏エロ動画(3g2や3gpなど)も再生できるので便利です。

2008-04-09

YourFileHost の簡単な FLV 保存方法

YourFileHost で動画再生している時に下の文字をアドレスバーコピペして、Enterキー押すと簡単にflvファイル落とせるね!

javascript:if(document.body.innerHTML.match(/<param\sname=\"movie\"(.*?)%2526cid%253D(.*?)%2526(.*?)%2526cdnkey%253D(.*?)%2526/)){location.href="http://cdn.yourfilehost.com/unit1/flash8/"+RegExp.$2.substr(0,2)+"/"+RegExp.$2+".flv?key="+decodeURIComponent(RegExp.$4)}else{alert("Failed");}

ブックマークURLに登録して再生中にそのブックマーク開くと、同じように落とせるしこっちの方が簡単だね。

ブックマークレットってやつだね。

ま、全部試してないけど、これとかは落とせたね。

http://www.yourfilehost.com/media.php?cat=video&file=one_night_stand.wmv

2007-06-22

http://anond.hatelabo.jp/20070622161805

drm掛けた状態でwmvnyに流せばいいんじゃない?

普段は認証をスルーにしておいて、一定数出回ったら認証とめるの。

以後再生しようとすればdrmに掛かるからいくらダウンロードされても困らん。

2007-06-12

http://anond.hatelabo.jp/20070612171051

そうなの?

物凄く苦労した記憶があって、もうだめだーと討ち死にした。

movかなんかで動画ができあがって、

エンコードをしなくちゃならなくて、

wmvにしたら音声はどっかいっちゃうわ、

字幕つけるのにaviにしなくちゃだめだわ、

すごいあれこれソフトを転々とした。

オリジナル動画をとりたいよー。

増田おすすめソフトはなんだい?

2007-05-06

linuxユーザのためのエロ動画DLツール3

http://anond.hatelabo.jp/20070429211930

ファイルurlコピペしといてそこから読み込むようにしたんだぜ?

頭の"h"を補完するようにしたんだぜ?

例えばhoge.txtとして次のような内容にしておく。

ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_001.wmv
ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_002.wmv
ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_003.wmv

こっちはbukkonuki.rbとして保存。

require 'rubygems'
require 'scrapi'
require 'open-uri'

def get_yourfilehost_src(uri)
  yourfilehost_src = Scraper.define do
    process "embed", :src => "@src"
    result :src
  end
  yourfilehost_match = /vidlink\=(.*?)&amp;/
  
  return yourfilehost_match.match(yourfilehost_src.scrape(URI.parse(uri)))[1]
end

def completion_uri(arg)
  if arg =~ /^h/
    uri = arg
  else
    uri = 'h' + arg
  end
  
  return uri
end

def expansion_list()
  $*.each do |files|
    File::open(files) do |file|
      file.each {|line| system 'wget', get_yourfilehost_src(completion_uri(line)) }
    end
  end
end

expansion_list()

#$*.each do |arg|
#  system 'wget', get_yourfilehost_src(completion_uri(arg))
#end

使うときは

ruby bukkonuki.rb hoge.txt

って感じで頼むぜ。

そうするとhoge_001.wmv,hoge_002.wmv,hoge_003.wmvDLされてくるんだぜ?

2007-03-25

linuxユーザのためのエロ動画DLツール

yourfilehostぶっこぬき

http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv

こんなのからhogehoge.wmvダウンロードするためのrubyスクリプト

これをbukkonuki.rbとして保存する

require 'rubygems'
require 'scrapi'
require 'open-uri'

yourfilehost_src = Scraper.define do
  process "embed", :src => "@src"
  result :src
end

ARGV.each do |uri|
  p system "wget", yourfilehost_src.scrape(URI.parse(uri))
end

こんな感じで使うとDLしてくる

ruby bukkonuki.rb "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv"

複数指定してもDLしてくる

ruby bukkonuki.rb "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv1" "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv2"

ruby初心者には大変だった。

半日かかったぞ…ふざけやがって

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん