namareco-0.4.3リリース

ダウンロード

変更点

  • 長時間配信の再生時間表示がおかしくなる件について修正
  • それと結局6時間配信でテストはしていません
    • うまくいかなかった場合どなたか教えてもらえるとありがたいです
  • 0.4.2でマージしてしまったアラート機能はそのままなのでRuby版は相変わらず導入が面倒です
    • すいませんがご注意ください

長時間配信の再生時間表示がおかしくなる件について

長時間配信の再生時間表示がおかしくなる件についてスレで有用な情報を頂いた
934さんどうもありがとうございました!

934 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/25(月) 20:52:38.03 ID:6KHGsd410
recoで長時間録画したファイルが再生ソフトなどで少ない再生時間表示になり
ちゃんと再生できないファイルを修復するソフトを作りました

長時間とは16777秒(約4時間40分)超えのことです

http://osflash.org/flv
ここのFLVの仕様を見るとTimestampの3byte分(0xFFFFFF=16777215㍉秒)を超えると
また0からはじまり、TimestampExtendedが1増えるのですが
recoだとこれが0に固定されていて再生時間がおかしくなります

この修復ソフトはTimestampExtendedだけを変更します
使用方法は壊れたファイルをドラッグアンドドロップするだけです
http://www1.axfc.net/uploader/Sc/so/227881.zip&key=nico

これで今まで6時間配信できちんとテストなんてしてないことがばればれになってしまったな
それとドキュメントはちゃんと読まないとダメだ


追記
952さんからパッチを頂いた
どうもありがとうございました!

952 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/25(月) 23:17:42.05 ID:NIjszGIz0 [2/2]
recoだとRtmp内のタイムスタンプは単調増加だから書き出すところで調整すれば終わりかな?
timestampextended の次の StreamId 3バイトは >>934 だと always 0 ってなってるけどrecoだと最後 1 になってるね何ぞ

diff --git a/scripts/flv.rb b/scripts/flv.rb
index 085e869..1e27913 100755
--- a/scripts/flv.rb
+++ b/scripts/flv.rb
@@ -16,8 +16,8 @@ class Flv
def output(type, length, length_str, timestamp, body)
@fd.print [type].pack("C*")
@fd.print length_str
- @fd.print decomp(timestamp, 3)
- @fd.print [0x00, 0x00, 0x00, 0x01].pack("C*")
+ @fd.print decomp(timestamp & 0xffffff, 3)
+ @fd.print [(timestamp >> 24) & 0xff , 0x00, 0x00, 0x00].pack("C*")
@fd.print body
@fd.print decomp(length + 11, 4)
end

ニコ生に対応したrtmpdumpがついに公開

ニコ生に対応したrtmpdumpがついに公開されたそうだ
Part6スレの373さんが作成

373 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/10(日) 18:24:26.43 ID:C6NFWQxn0
ttp://nht.r.ribbon.to/rtmpdump.zip
ニコ生の仕様に対応したrtmpdumpを作ってみました
今までの引数に-Nオプションを追加することで録画できます
-N [getplayerstatus/stream/contents_list/contentsのrtmp://から始まる文字列]

手動で録画するには最小引数だとこうなります
http://watch.live.nicovideo.jp/api/getplayerstatus?v=lv******** から
rtmpdump -o out.flv -vr "[getplayerstatus/rtmp/url]/[getplayerstatus/stream/id]" -C S:"[getplayerstatus/rtmp/ticket]" -N "[getplayerstatus/stream/contents_list/contentsのrtmp://から始まる文字列]"
     ↓
rtmpdump -o out.flv -vr "rtmp://*******.live.nicovideo.jp:1935/liveedge/live_******_**_*/lv********" -C S:"********:lv********:*:**********:****************"
-N "rtmp://********.live.nicovideo.jp:1935/publicorigin/**/,lv********?**********:**:****************"

Part5スレの名無しさんによれば

923 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/04/02(土) 14:51:22.22 ID:nreGK+Go0
>>907
今のrtmpdumpでnlplayNoticeを記述できる方法ってないですよね?
なんでnlplayNoticeで制限かけるようにしたのだろう
やっぱ録画対策か

調べてみたら去年から予見してた人がいてワロタw
># nlplaynoticeかNicoLivePlayNoticeってところかな、 
>dump対策に独自ライブラリを組み込んだか 
>8:05 PM May 14th, 2010 via Tween

ということなのでやはりrtmpdump自体に手を入れる必要があった模様


階層を遡ってみたところこの方は発掘ツールも作成されているようだ
http://nht.r.ribbon.to/
そういえば自分も似たようなツールを作りかけてたなあ

4/7の運営メンテナンスについてのまとめ

注意!現時点でこちらの制限は撤廃されているそうです
4/7の運営メンテナンスによってAPIの取得に制限がかかったそうだ
その制限というのはwatch/lv数字ページをGET後でないと
getplayerstatus APIが取得できずunknown_errorが返ってくるというもの
それに対し狼のけしからんなスレではこんな漢気溢れる対策が示されていた

32 名前:名無し募集中。。。[] 投稿日:2011/04/07(木) 11:47:16.73 0
http://www.dotup.org/uploda/www.dotup.org1505023.png
さすがにこの時間に作者はいないからimareco改造置いとくわ
バイナリエディタで上の部分を下のように書き換えればwin版も動くよ

その後運営によってこちらの制限は撤廃されたようだ


以下制限や規制に関する個人的な雑感
ver0.4.2からUser-Agent名として「namareco」とここのURLを名乗るようにした
将来User-Agent名でアクセスを弾かれるようになった場合は
その時点で開発の継続を諦めようと思う
これからもある程度自由にできる今の状態が続きますように

namareco-0.4.2(開発版)リリース

注意!リポジトリ操作を誤り開発中のコードをmasterブランチに取り込んでしまいました

  • とりあえず動作に特に問題ない方はアップデートしないことをお勧めします
    • 具体的にはこの辺とかのアラート機能がマージされてしまっています
    • 動作はそこまで不安定ではないと思いますが不要な人には不要なコードだと思います
    • またフルで動かすにはruby_gntpパッチを充ててruby_gntp2.rbとしてscripts以下に保存していただく必要があります
    • 他にはEastAsianWidth.txtもDLしていただいてnamareco.rbと同じフォルダに配置する必要があります
    • それとya2yamlもgem install ya2yamlしていただく必要があります
  • まあこのようにいろいろ面倒だと思います

ダウンロード

変更点

  • part5スレの893さんによる修正をマージ
    • 893さんどうもありがとうございました!
  • アラート機能を(誤って)マージ(してしまった)
    • GUI部にはGrowl for Windowsを利用しnamarecoはそこへ信号を飛ばすだけ
      • そのためネットワーク越しにもアラートを通知可能
    • 今回の機能を万一アップデートしてもconfig.yamlとか弄らなければ従来と同じように使えるようになってる(はず)
      • (=上に書いたような面倒なことをしなくてもそのまま使えるようになっているはず)
      • とはいえきちんとは検証していないので何か問題があるかもしれませんが
  • わこつ機能(上記のアラート機能の一部として実装)
    • 登録コミュの配信が開始されると「わこつ」(設定によって文言は可変)と挨拶する機能
    • こっそり某コミュで使ってみたが性能はいまいちでほとんど1ゲットはできなかった
      • (他のツールと思しきコメントに完敗していた)
  • cielchan機能(上記のアラート機能の一部として実装)
    • いわゆる席取り機能
    • ブラウザとアカウントを共有しないと意味がない(user_sessionが異なってしまうため)
  • imarecoなどのコマンドライン引数のURLの処理が間違っていたのを修正
    • watch/co形式なら問題なく使えていたようだがlv形式では使えていなかった模様
  • User-Agentで名前とURLを名乗るようにした

Firefox4対応について

  • Firefox4のクッキーを使ったニコ生ログインについて久しぶりにブログを更新
  • うまくいかないのはSQlite3のバージョンが原因のようだ
    • ちなみに手元でテストしたところ以下のようなエラーが出た

E, [2011-03-24T00:10:40.578125 #744] ERROR -- : #

  • 最新のdllとdefファイルをSQlite3ダウンロードリンクから落とし差し替えたところログインできるようになったようだ
    • cielchanでのみテスト
    • ログイン機能は共通のもの(libnama)を利用しているので多分namarecoでもうまくいくはず
  • 謝辞
    • この記事は@sakuramiuさんから頂いた情報を元に書きました(というかほぼそれがすべてです)
    • 改めてどうもありがとうございました
  • 久しぶりにブログを書いたらはてな記法をだいぶ忘れていることに気づいた・・・
  • それから常時稼動させていたサーバを節電のために地震以来止めています
    • こんなツールを作ってた人間が何をいまさら言うかという感じですができることからやろうかなと

覚書

  • namareco
    • Ruby1.9対応
    • FMEデバッグ
    • 映像・音声・コメント取得のオプション化
      • 事情により実装しないことにした
    • logを/dev/nullに捨てる(保存しない)オプション
    • REOPEN_LIVEオプションマージ
    • 壊れたXMLファイルが出力される
    • 60秒タイムアウトバグ
お。これはハートビートがらみっぽいな RT @sea_show: . @koizuka なんだか大会議以降ときどきあるんですが、放送開始60秒前後で放送が切断されることがたまにあるんですーががが
  • コメント転送ツール
  • nicoagent.rbのOpera対応
  • User-Agentに連絡先を追加
ニコニコにAPIやらクロールやらでアクセスしてるプログラムは、User-Agentに連絡先(あるいは、それに繋がる情報)入れて欲しいな〜