【ニコニコ】自動ローカル保存プロクシ NicoCache24
■ このスレッドは過去ログ倉庫に格納されています
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
スレ立て時に↑をコピペして3行で書き込んでください
■テンプレートはこちらからコピー:https://www65.atwiki.jp/nicocachenlwiki/pages/23.html
ニコニコ動画のキャッシュを自動的に保存して
二回目以降はローカルから再生することで
ニコニコ動画の回線に負担をかけることもなく再生できるソフトのスレ。
ページにスクリプトを埋め込んで実行したり、見た目を書き換えることもできる。
一度通常画質でローカルに保存すれば
エコノミーモード時間帯でも常に通常画質で再生することができる。
Java で作られており Windows / MacOSX / Linux / Solarisで動作する。
https://adoptopenjdk.net/
■関連サイト
NicoCache_nl wiki (新)
ttps://www65.atwiki.jp/nicocachenlwiki/
■前スレ
【ニコニコ】自動ローカル保存プロクシ NicoCache23
https://egg.5ch.net/test/read.cgi/software/1541715924/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured ■NicoCache関連ファイル置き場 避難所2
ttp://nicocache.jpn.org/
《NicoCache_nl+mod+mod》
■NicoCache_nlのトラブルシューティング
NicoCache_nlについて質問する前に確認すべき事項のまとめ
ttps://www65.atwiki.jp/nicocachenlwiki/pages/18.html
■GUI起動について
Readme.txtの「GUI起動対応」参照
ショートカットなどでコンソールに接続せずにNicoCache_nl.jarを起動
《NicoCache全般》
■繋がらない時は
ブラウザのキャッシュ削除、ブラウザ再起動、NicoCache再起動、PC再起動
アンチウイルスソフト一時無効を試す
NicoCacheGUI.bat起動してもNicoCacheが起動しない場合はNicoCacheGUI.property削除と
繋がりにくい、挙動がおかしい場合のthcache.bin削除を試してみること。
特にノートンはファイアウォール等の設定を見直す必要があるらしい ■質問する場合は
今使っているものが最新日付の差分かどうか確認してください。
また、スレッドの過去ログを検索してみてください。同様の問題が報告されているかもしれません。
それでも解決しない場合は、フィルタ・拡張を一つずつ外してみて原因となっているモノの特定をお願いします。
また、最低限動作環境は書いてください。特にJavaScript系の不具合はブラウザ依存の事も多いので、再現確認すらできない事もあります。
開発者はすべてのフィルタ・拡張を入れているわけではありません。開発者ほど他の人が作ったものをあまり使っていない事が多いものです。
nc003.7z等アップローダのアーカイブ番号のみで報告すると内容が分からないのでスルーする可能性が高いです。
元の書き込みに安価を貼るのが確実です。
質問した後で自己解決した場合、自己解決した内容も責任をもって書き込んでください。
「どう解決したのか?」を書くことで、同様の問題に困っている人の参考になります。 ■質問用テンプレ
≪動作環境≫
【OS・Java・本体】(ログウインドウの最初の二行をコピペ)
【ブラウザとバージョン】Google Chrome 00/Mozilla Firefox 00/Opera 00/Safari 00etc...
【使用プレイヤー】GINZA/公式HTML5/ZenzaWatch
【FlashPlayerのバージョン】(GINZAの場合)Adobe Flash 00.0.0.000
≪NicoCache環境≫
【拡張の状態】すべて外した、もしくはコレコレを利用している等
【プロキシ】全て通過、デフォルト設定のproxy.pacを利用している、もしくはカスタム設定のpac
【その他】(wrapperやオミトロンを使用しているなら特に)
≪質問/障害内容と検証状況≫
【事象・質問内容】
(具体的に、詳細に。ログウィンドウの表示も含めて)
(言葉での説明が難しければ、画像ファイルを用いたり、デスクトップキャプチャーソフトで動画を撮影して説明を試みるのも効果的だろう。)
【検証済の内容】
(NicoCache_nlwiki(新)のトラブルシューティングを全て試したか否か)
【特記事項】
一般会員、プレミアム会員、ブラウザの拡張機能の利用状態等、関係ありそうなことないこと
他のブラウザでの動作状況
NicoCacheを使わない場合の動作状況
wrapper、オミトロンを利用している場合、停止した時の動作状況
利用ソフトのデフォルト状態(拡張を一切外した場合)の動作状況
注意:
・本体やJava、FlashPlayerなどアップデート可能なものは、質問の前に必ずアップデートしてください
・NicoCache_nlについてのトラブルは>>2のトラブルシューティングを試してみてください
・一般的でない環境での質問の場合、検証出来る環境を持っている人がいるとは限りません。 ロダのログは解決してもう必要ないから消してといいと思うけど アプロダの避難所2に行ってからミラーへのリンクをクリックすると404だ フィルタまとめ#117うpしました
https://nicocache.jpn.org/download.php?id=151&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
主な変更点
wr_BackgroundHTML5.cssの背景画像 jpg→avif
READMEの画像 png→avif
wr.cssの更新MylistButton.css,MylistButton.jsの更新
expired_isDummuReloaderの削除 フィルタまとめ#118うpしました
https://nicocache.jpn.org/download.php?id=154&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- pc.jsとup_nv.jsでのコメント取得方法を新方式に完全移行
- pc.jsのトラッカーにmouseenterすると時間が表示されるようになった
- pc.jsの音量にプリセットを配置した
- pc.jsからMinimumVolumeを廃止
- up.jsでリンクをアイコンに
- コメントリストと動画リストのタブスイッチでマイリストボタン・ニコニ広告ボタン・Likeボタン・カスタムマイリストボタンが消えるようにした(wr_MylistUadLikeButtonToggle.js)
- チャンネル動画がwindow.customCommon.retryによって失敗しづらくなった 更新ありがとうございます。有り難く使わせて頂きます ん~、popThumb_FA.txt が有効だと、動画番号(orタイトル)のポップアップが効か無くなってるなぁ
これ無効化した場合は、nlの方のポップアップは出るので、htmlの書き換えは出来てるっぽいけど、jsが対応しきれなくなった???
って所までは切り分け出来たけど、どのファイルのどこがどうなって動かなくなってるのかさっぱりww 12 名前:名無しさん@おーぷん[sage] 投稿日:23/04/13(木) 08:38:38 ID:p3ow
3DSのサービス終了でAPIが廃止されたのが原因なので、 popThumb_FA_個人設定2.txt から api.ce. を使っている
・popThumb_FA:個人設定3
・popThumb_FA:個人設定4
を削除すればまだ動きました。
popThumb_FA_個人設定.txt で
popThumb.use_VideoArrayAPI = false;
popThumb.use_VideoArrayAPI_so = false;
になっていることも要確認。 さんくす
無事表示された
どこの板?と思って探してみつけたけど、存在すら知らなかった場所だったw
別にスレあったのかぁ・・・ HLS対応は互換性をどうするか悩んでましたが改修作業に取りかかってます。
廃止日には間に合わせますのでもう少しお待ちを。 (* ・ω・) 頑張れビーーーム
/ つ>>>>>>>>>>>>>
しー し nd0158 NicoCache_nl+150304mod+230704mod (eR)
[機能追加]
・ニコニコの仕様変更(HTTP方式廃止)に伴いHLSに対応
[nlFilter]
・シリーズページで動作しなくなっていたのを修正
・05_topBarFilter.txt でコンソールにエラーメッセージが出ていたのを修正
まだ調整したいところがありますが時間切れっぽいのでひとまず。
HLS形式のキャッシュはsm00000000[720p,192]_XXXX.hlsという形式のディレクトリに記録します。
mp4やflvのキャッシュはHLSでは使用することができないので、
存在していてもキャッシュを用いずそのままサーバに取りに行きます。
ただし、.mp4キャッシュがある場合、新たに.hlsをキャッシュしないようになっています。
新たに.hlsをキャッシュさせるためにはキャッシュ削除を行ってください。 >>24
ありがとうございます。お疲れ様です。ん?ということは.mp4キャッシュを別で用意しても今回以降は意味を成さないってことか…それは困るな。。。有料動画の期限切れキャッシュ使用の裏技も使えなくなるのか。。 いやmp4とhlsの変換やhlsを新たにキャッシュすればいいのか
どうにかなりませんかね 自前で用意した公式アニメ動画も見れないってこと?
それは困るな。 >>27
一応ffmpegでhlsに変換すれば良いのかなと思いますけど、膨大なキャッシュを変換する手間と時間を思うと…🙃 hlsに変換するってのがよく分からんな。
ストリーミングがどうのこうのってのはググって分かったんだが
ということは配信サーバーみたいなのを用意する必要があるのか? まあ、キャッシュとして保存出来るってことは何か変換する方法があるんだろうな。 mp4キャッシュを無駄にはしたくないのでmp4キャッシュを利用してHLSに応答する方法をなんとか考えたいところです。
mp4からリアルタイムでhls配信を行う有償の製品は存在するので不可能というわけではなさそうなんですが、なかなか難しいです。
flv2mp4のように再生開始まで少し変換に時間がかかる非リアルタイムな方式では実装できますが、mp4キャッシュを持っているすべての動画の再生が遅くなるのはキャッシュとして無意味で、それなら再キャッシュしたほうがいいからね……
さしあたって、ffmpegを使った手動での変換方法は後ほど案内します。 動画プレイヤーにmp4で再生する機能を無理やり埋め込むとかそんな方法ないかな? ちょっとした不具合の修正パッチとせっかくなので2年くらい前に試みたHLS対応など上げました
nd0159 >>24
お疲れ様です。
キャッシュは出来ましたが、mp4への変換手段次第ですね。
ffmpegの使い方、お待ちしています。
うちの環境では、MP4化するのにTMPGVMW6が一番まともでしたが頭2秒の音が途切れてしまいました。
他の方法もいくつか試しましたが、tsが切り替わるタイミングで音飛びするようです。
再生だけならMPC-HCで何の不具合無く出来るのですが・・・(^^; すみません。 15_thumbInfoFilter(基本).txt は今回のバージョンに入っている物は削除して以前の22/04/17版をご利用ください。
/seriesのページはもう無いかと思ってフィルタを消してしまいましたが、チャンネル動画でまだ使われていました。
手動での変換方法ですが、
.hlsキャッシュディレクトリの中に解像度の一致しているキャッシュのmaster.m3u8ファイルをコピー(正しく作るならbandwidthの計算が必要ですが1個しかないので間違っていても動く)して、 1/ts/ ディレクトリを作ってその中で
ffmpeg -i mp4ファイル -c:v copy -c:a copy -f hls -hls_time 6 -hls_playlist_type vod -start_number 1 -hls_segment_filename "%d.ts" playlist.m3u8
で動くものができましたが、この方法だと音声が途切れたりする方いるんでしょうか。
VLCで直接再生しようとすると最初に音声が詰まりますが、FirefoxとChromiumでは問題なく再生できました。
>>33
切れ目を記録して一つのtsファイルに連結するの興味深いですね。
でも今後の仕様変更で音声のストリームを分離する予定がありそう(json内にseparated_audio_streamの項目)なので残念ながらその時に対応できなくなりそうです。
(tsファイルを直下ではなく1/ts/に置いた理由はこれ)
バグ修正パッチは取り込ませていただきます。ありがとうございます。 >>35
え?シリーズは廃止とかじゃないよね?(心配) ていうかなかなか面倒臭くておしっこちびっちゃいそう! >>36
一般ユーザのシリーズのURLが /series から /user/ユーザ番号/series に変わったので
新しいページ用のフィルタを作ってうっかり古いほうを消してしまいましたというだけで廃止の気配はありません hlsからMP4への変換は、こんな感じですかね
-- hls2mp4.cmd ---
set f_name=%~n1
set f_path=%~dp1
cd /d "%f_path%%f_name%.hls\1\ts\"
ffmpeg -i playlist.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc output.mp4
move "%f_path%%f_name%.hls\1\ts\output.mp4" "%f_path%%f_name%.mp4"
--- end --- (ffmpegは、パス指定してください)
.hlsのフォルダD&Dでバッチファイルの引数で渡せば、同じ場所にmp4を作ります。
出力に漢字を含むファイル名を指定すると、文字化けするっていうね(笑)
いくつか試して見ましたが、上記のバッチで変換は問題なさそうです
ffmpegコマンド引数自体は、ネット検索で見つけたそのままですが(笑) カンマが区切り扱いされてたので、スペース文字含んでないフォルダ名だと動かないのか
そうか・・久々に作ったからカンマの特別扱い忘れてたなぁ・・・ 時間があったらchatgptにmp4→hlsの変換ffmpegコマンド考えてもらおかな >>41
>>35さんが書いてるコマンドが、それじゃないかな? >>42
もうちょっとスペースやら複数ドラッグ・アンド・ドロップなんかを含んだ包括的なやつがほしいのよ、だから考えてもらう >>43
--- mp42hls.vbs ---
option explicit
dim objArgs,targetmp4,objFS,objShell
dim fs,f,i,d_name
Set objArgs = Wscript.Arguments
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objShell = Wscript.CreateObject("WScript.shell")
for i=0 to objArgs.count -1
mp42hls(i)
next
WScript.Quit
Function mp42hls(j)
targetmp4 = objArgs(j)
set fs = WScript.CreateObject("scripting.filesystemobject")
if fs.FolderExists(targetmp4) then
'folder
exit Function
end if
d_name =fs.GetParentFolderName(targetmp4) & "\" & fs.GetBaseName(targetmp4)
objFS.CreateFolder(d_name & ".hls")
objFS.CreateFolder(d_name & ".hls\1")
objFS.CreateFolder(d_name & ".hls\1\ts")
objShell.CurrentDirectory = d_name & ".hls\1\ts"
objShell.Run "m:\nico\ffmpeg -i """ & targetmp4 & """ -c:v copy -c:a copy -f hls -hls_time 6 -hls_playlist_type vod -start_number 1 -hls_segment_filename ""%d.ts"" playlist.m3u8",1,true
End Function
ffmpegのフォルダだけ、自分の環境に合わせてくださいな
サンデープログラマが作るVBSなんて、こんなもんだwたったこれだけのコードでも汚いw おまけ
--- hls2mp4.cmd ---
@echo off
:start
for %%_1 in (*.hls) do (
set f_name=%~n_1%
set f_path=%~dp_1%
cd /d "%f_path%%f_name%.hls\1\ts\"
m:\nico\ffmpeg -i playlist.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc output.mp4
cd /d %~dp0
move "%f_path%%f_name%.hls\1\ts\output.mp4" "%f_path%%f_name%.mp4"
)
これは昨日作った奴。
同じフォルダにあるhlsを無差別で全てmp4に変えるヤツ。
VBSにすれば同じ様に、複数D&Dとか色々対応出来るけど、どうせ一括で変えるので、めんどくさかったw あ、>>45の、バグ持ちの方だった
こっちだ
@echo off
setlocal EnableDelayedExpansion
:start
for /d %%A in (s*.hls) do (
set f_name=%%~nA
set f_path=%%~dpA
cd /d "!f_path!!f_name!.hls\1\ts\"
m:\nico\ffmpeg -i playlist.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc output.mp4
cd /d %~dp0
move "!f_path!!f_name!.hls\1\ts\output.mp4" "!f_path!!f_name!.mp4"
) >>44-46
あ、あんっ、はい、いま何も試せない環境だけど、取り敢えずありがとうございます @echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
set file=%%a
set file=!file:"=!
ffmpeg -i "!file!" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls "!file:.mp4=.m3u8!"
)
か若しくは(↑bing gpt-4製)
@echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
set file=%%a
set file=!file:"=!
ffmpeg -i "!file!" -c:v copy -c:a copy -f hls -hls_time 6 -hls_playlist_type vod -start_number 1 -hls_segment_filename "%d.ts" playlist.m3u8
)
になるのかな?(>>35のコマンドをそのまま拝借)
ただ本当に今手元にWindowsがないので試せないけど… ちなみにプロンプトも貼っておきます
Windowsのバッチファイルでffmpegでmp4ファイルをhlsに変換するプログラムを組んでください。但し以下の機能も有するとします。
・複数ファイルの同時ドラッグアンドドロップ対応。
・半角スペースや全角スペースを含むファイル名対応。 ChatGPTに適当に作らせたスクリプトを動作確認もせずにそのまま貼るのやめてくれ 少なくともそのスクリプト
ファイル名\1\ts\のディレクトリに配置してないでしょ >>50
スミマセン、もうしません!
どうせ動作確認できるの数ヶ月後だから先に貼り付けて後でやればいいかなって思っちゃった >>48
デバッグはしてなくて、コード読んだだけなので間違ってるかもだけど。
まず、
・D&Dに対応してなくて、カレントフォルダのファイルをmp4に限らず無差別に処理しようとしている
・ディレクトリの作成、及びその中に作成しようとしていない
・set file=!file:"=! の行が多分、エラー?(文字列操作っぽいが?)
ぐらいかなぁ。
無差別なら、>>46ので十分だと思うよ。
ちな、ちょっと余分な処理は入ってるけど、vbsで書いた物は、作ってある。 違った。
>>46のは、hls 2 mp4 だw
>>44のだね。
46のvbs版も作ってはあるんだけどね。 難しいことは分からないけど、>>24の説明を見る限り最早.mp4や.flvはキャッシュフォルダに置いても意味がない、
むしろそのまま置いとくとhlsのキャッシュが作られないので置かない方が良い、って理解で良い?
とりあえず現状のキャッシュファイルは全部どっかに退避すればいいのかな んー?普通の動画はキャッシュ使ってくれないっぽいけど、「有効期限切れの購入済み動画」は見れる…
ログにも「Local Flv:」って出てるからキャッシュ使えてるっぽい
どういうこっちゃ
教えてエロい人 >>57
純粋にJavaScriptで実現してるから
同じこと普通の動画でやろうと思ったらNicoCache側の対応ないと難しいかな
(無差別にmp4キャッシュ使うように強制もできるけど、それは望まない形だろうし) 俺の都合だけを言うと、過去動画のキャッシュと自前で用意した動画だけ再生できればいい。
もはやニコ動に新規でキャッシュしたい動画などないからな。 >>24の更新を掛けてビルドしたけども、キャッシュされる気配がないけど皆出来ているということ…?
ログウィンドウには
Ignoring auto-bitrate stream: sm~
と無視してますアピールだけが無情に残されている >>24
今更だけど いっつもありがとうございます! >>60
画質が自動になっているとキャッシュしません。再生中に画質が切り替わるようだとキャッシュしても仕方ないので。
1080pとか720pとか固定してください。 >>58
mp4のキャッシュ使うことを望まない人なんているんですか?
それをやるとhlsはキャッシュすることもキャッシュを使うことも一切できなくなるということ?
むずかしい… >>62
わー、そんな単純な原因だったのですね。キャッシュ出来ました、ありがとうございました。 option explicit
dim objArgs,targetmp4,objFS,objShell,objShell2,objFolder,objFile,fn,i,j,f_name,folderName
Set objArgs = Wscript.Arguments
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objShell = Wscript.CreateObject("WScript.shell")
Set objShell2 = WScript.CreateObject("Shell.Application")
for i=0 to objArgs.count -1
hls2mp4(i)
next
WScript.Quit
Function hls2mp4(j)
targetmp4 = objArgs(j)
if objFS.FolderExists(targetmp4) then
Set fn = objFS.GetFolder(targetmp4) 'ファイルの日付取得
f_name = Replace(targetmp4, ".hls", ".mp4")
objShell.CurrentDirectory = targetmp4 & "\1\ts"
objShell.Run "m:\nico\ffmpeg -i playlist.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc output.mp4",1,true
objFS.MoveFile "output.mp4" , f_name
if objFS.FileExists(f_name) then
folderName = Replace(f_name , objFS.GetFile(f_name).Name , "") 'ここから
objShell.CurrentDirectory = folderName
Set objFolder = objShell2.NameSpace(folderName)
Set objFile = objFolder.ParseName(replace(f_name,folderName,""))
objFile.ModifyDate = fn.DateLastModified 'ここまでファイルの日付設定
'objFS.DeleteFolder targetmp4,true
end if
end if
End Function
hls2mp4のvbs版 D&Dで複数処理可能。キャッシュしたのを編集とかで2次利用する人向け
hlsフォルダ削除は任意(コメント外して) ffmpegの場所は各自指定 日付はhlsフォルダに合わせるようにしている 最新版に乗り換えたらシークバーがグレーアウトしてしまった
ここ半年以上設定弄った記憶が殆ど無いのでどこが再生ページに影響あるのかすらわからなくなってる
とりあえずショートカットキーは効く、
ピクチャーインピクチャーだと表示されるのでnlFiltersフォルダの中身弄りまくるしかない 可能ならhlsのキャッシュをmp4に自動変換して
再生時にはmp4を使って欲しいなぁ 一般会員が高画質で見れる時間でもhlsのキャッシュができない
プレミアムじゃないと1080や720にはできないようだな
プレミアムにするか悩むところ >>68
と思ったら最後まで動画を再生すればキャッシュが完了になった
キャッシュ管理画面で動画の容量が全く変化がなかったし、
コントローラーのCachingもNan%で変化がなかったら勘違いしてしまった
お騒がせしました >>66
自分は逆に最新版に切り替えたらシークバーとか「~秒送る・戻す」の部分復活したわ talk jp にプログラミングカテゴリあんのかしら fechだとmp4キャッシュできるんだけどどういうことなんだぜ? あっちのURL貼っとくね。ドメイン弾かれたので、ドメイン以降
/boards/software/1675038388 >>73
プレイヤーはmp4対応を廃止しましたが、配信サーバからはまだ機能が削除されていないようで。
そのうちアナウンス無しで配信サーバ側からも消えると思います。 >>76
なるほど
fechでhlsキャッシュするにはどうしたらいいのだ fetcher作者さんが対応してくれないと無理かと思いますよ 最新版のnicocache_nlの挙動について教えてください
1,動画を視聴してhlsキャッシュを取得する
2,取得したhlsキャッシュフォルダを削除(移動)する
3,再度同じ動画を再生するとニコ動エラーメッセージで「通信エラーが発生しました」と表示され再生が止まる
既に取得しているhlsキャッシュフォルダがそのまま存在すれば2度目以降も問題なく動画が再生されますが、該当動画のhlsキャッシュフォルダが存在しない状態での2度目の動画再生でエラーを回避する方法があれば教えてください >>80
自己レス失礼します
上記現象ですが、nicocache_nlコマンドプロンプトを再起動してデータを初期化することでエラーが出なくなりました
スレ汚しすみませんでした fetcher作者さんのhlsキャッシュ対応の更新来てますね
ありがとうございます 久々に拡張機能コンパイルやったらExtensionsAutoBuildがファイル名が無効のエラー吐いて使えなかった
まあ普通にbuildに放り込んでコンパイルできたからいいんだけど nd0162 NicoCache_nl+150304mod+230717mod (eR)
[不具合修正]
・HLSキャッシュを削除すると壊れたキャッシュが生成されるのを修正 (>80)
・HLSキャッシュが壊れていたときにメッセージを表示
・画質が自動になっているときのメッセージをわかりやすく修正
・nd0159を一部マージ (>33)
・キャッシュディレクトリ読み込み時のリソースリークを修正
・JSONで\u005cが含まれているとエラーになる問題の修正
・popThumb.jsで公式動画のポップアップを許可
>>80
報告ありがとうございました。
HLSをキャッシュ(途中まで・最後まで問わず)した後、
再起動せずにHLSキャッシュを削除して再度キャッシュすると
一部のファイルが欠けた状態の壊れたキャッシュが生成されるバグがありました。
気づかないうちに変なキャッシュが混ざっているという事態になるとまずいので皆様早急に適用を推奨します。
発生条件は、HLSを途中まであるいは最後までキャッシュした後、
再起動せずにそのHLSキャッシュを削除して再度キャッシュすることです。
どこまでキャッシュ済みかという情報がクリアされず、
一部のファイルが欠けたままキャッシュが完了状態になってしまいます。 HLSのキャッシュ中に動画キャッシュの一覧 https://www.nicovideo.jp/cache/ を開こうとするとエラーで開けないようです
キャッシュしてない時は正常に表示されます
以下はNicoCacheのコンソールに出るエラーです
failed to process: https://www.nicovideo.jp/cache/
java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.util.concurrent.ConcurrentHashMap.get(Object)" is null
at dareka.processor.impl.CacheManager.getTempListAsJson(CacheManager.java:1738)
at dareka.processor.impl.CacheManager.getFlvListAjax(CacheManager.java:1617)
at dareka.processor.impl.CacheManager.getFlvList(CacheManager.java:1606)
at dareka.processor.impl.CacheManager.getFlvList(CacheManager.java:1531)
at dareka.processor.impl.CacheDirProcessor.onRequest(CacheDirProcessor.java:211)
at dareka.ConnectionManager.processAPairOfMessages(ConnectionManager.java:314)
at dareka.ConnectionManager.run(ConnectionManager.java:66)
at dareka.Server.handleTlsLoopback(Server.java:339)
at dareka.Main.handleTlsLoopback(Main.java:310)
at dareka.processor.MitmResource.transferTo(MitmResource.java:26)
at dareka.ConnectionManager.useResource(ConnectionManager.java:517)
at dareka.ConnectionManager.processAPairOfMessages(ConnectionManager.java:335)
at dareka.ConnectionManager.run(ConnectionManager.java:66)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:831) セグメントを一切分割しないhlsファイル作ると
再生時に強制キャッシュプリロード的なことができるぽいね(シークバーがすべて真っ白になる)
まぁ1GBのファイルだと動画の再生に10秒近くかかるんで
実用的じゃないけど...... >>44さんの方法でmp4→hlsに変換しても
master.m3u8がないとNicoCacheで再生してくれませんが
いい感じに生成する方法ありませんかね?
解像度はファイル名見れば設定はできそうですが、
FRAME-RATEの設定が... 非dmcキャッシュを変換してNicoCacheに読み込ませるには
ファイル名に解像度とオーディオビットレートをつけてdmcキャッシュぽい名前にかえる必要があるみたいだけど
smxxxx[360p,256]_タイトル.hls
解像度 512x384
ビットレート 252800bps
という微妙な値の場合は なにを入れるべきか... 下手に値を入れるより 個人用にNicoCacheのソースいじって
dmcの命名規則ではないhlsがあればそっちを優先したほうがいい気がしてきた >>90
一度、mp4の方を待避しといて、同じ動画をキャッシュさせて見れば、
その辺の変則的な解像度の命名規則は拾えるかも?
その辺のファイル名、実際内部で使ってるかなぁ。
smxxxxxx_ か、smxxxxxx[ の頭でしか見てない気もしないでもないんだけど
後で試して見るわ 基本smなんちゃら(数字)しか見てないと思う
smなんちゃらだけにするとスマイルモード
smなんちゃらに画質の名前付けて複数個存在するとdmcモードになると思う 動画リストでhlsでキャッシュした物の色が白(キャッシュ無し)のままなのは仕様でしょうか?
PCの環境とかのせい?
https://i.imgur.com/WZ18BB7.png >>95
画質を自動以外にして、最後までキャッシュすればいける キャッシュは出来てます using cache:…hls
https://i.imgur.com/JNoSEjW.jpg
ただ動画リストは白文字のままでサムネに[C]マークが付かないなーと ん〜、キャッシュされたhlsのmaster.m3u8の内容が分からん。例えば、
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4724190,AVERAGE-BANDWIDTH=3101741,RESOLUTION=1920x1080,FRAME-RATE=60.000
って記述してあって、PROGRAM-IDは、1固定でいいとして、RESOLUTIONと、FRAME-RATEは動画から拾えるとして、
BANDWIDTH=4724190,AVERAGE-BANDWIDTH=3101741
この2つがどこの数値なのか。
この動画を、mp4化してみると、動画の平均ビットレート2189kbpsなのね。
音声は179kbpsだけど、キャッシュのフォルダ名の所は192なので、まぁ、近い数字が入ってるだけなんだろうけど。
はてさて、どうしようか。
(前に上げた mp4hls を弄ってm3u8 作ろうとしてる。だれかプログラマーな人作ってwww) 動画のページ開く → hlsフォルダが作成される(数秒だけキャッシュ) → 再生せずにPC終了
→ 翌日、同じページを開く → キャッシュフォルダが継続される場合と、稀に新たに作られる場合がある
nltmp_smxxxxxxxx[1080p,192]yyyyyyyy_タイトル.hls
このyyyyyyyyの所の数値が違って作られ、再生終わってキャッシュが終わると、新しく作った方だけが
nltmp_が外れて完了し、前日に作られた古いフォルダは放置される。
ここ数日で1,2個を確認。
多分投稿者が動画の差し替えをやった物だと思われます。
PCの再起動(nlの再起動でも多分同じ?)のタイミングで動画差し替えが発生すると、
キャッシュフォルダで古いのが残ってしまうっぽいですね。 >>99
個人的に作ったやつなんでバグあるかもだけど(javaファイル)
https://pastebin.com/0Rv9xYXs
ライブラリにjackson-databindが必要
inputフォルダにNicoCacheのCacheフォルダ
outputフォルダに空のフォルダを作成して指定
DMCキャッシュの場合はファイル名そのまま流用
非DMCキャッシュの場合はNicoCacheの強制読み込みさせるために、フォルダ名に[4320p,1024]を設定
BANDWIDTHは現状適当でいいらしいので0を設定 mp42hls.vbs をアップロードしました。up165
master.m3u8 を作成するようにしましたが、本来作られる物より簡略可されているので、正常に動くかどうかは不明です。
また、unicodeを含むフォルダ、ファイル名だと誤動作するので、その場合はファイル名を変更してください。 コマンドプロンプトからffmpegとffprobeのコマンドが使えるように、
ffmpegのあるフォルダを環境変数に設定しといて
windows以外での動作は非推奨(多分ディレクトリ関係でバグる) >>101
投稿2秒差www
ああ、非DMCも有りましたね。あと、DMCでも、解像度・映像・音声の3つ書いて有るパターンもありますね
master.m3u8 自体は、hls化するときに同時にffmpegで作れる事は分かったので、
ファイルの移動と内部のパスの変更を入れたぐらいですね。 >>104
ほんまや 握手🤝
ffmpegでmasterファイル自動生成できるんですね
こっちのファイルも対応すべきか
vbsの方に任せるべきか... >>34にhlsをMPC-HCで再生できるとあったけれど、うちでは途切れ途切れでの再生しか無理だった
お盆にでも>>39とか>>46を試させてもらおうかな nlMovieFetcherで取得動画の画質の決め打ちできないのかな
欲しいのは360pなのに高画質キャンペーンのせいで1080pになる
スマホのテザリング回線使ってるから無駄に高画質なのはいらないのに 期限切れの公式動画がno method:soXXXXXXXXとなって再生できないな
no method:fetch〜みたいなのはコンパイルしていなかったりと原因はわかったのだけど、これに関してはどうすればいいのか
以前はシークバーが動かせなくてもコントローラの方で再生したりはできたのだが >>108
ちょっと追記すると6月あたりまでの公式動画はまだその方法で見ることができるけど、
8月あたりからの公式動画は無理という感じ .hlsになってからの期限切れ公式動画はno method:so〜で動画の再生に失敗してるね 【PC版ニコニコ動画】今後の動画視聴ページについて検討をはじめました&ニコニコ市場の機能提供終了のお知らせ
https://blog.nicovideo.jp/niconews/201081.html >>109
https://www.nicovideo.jp/cache/[動画ID]/auto/movie
がキャッシュがあっても常に404 Not Foundを返すからですね
このエラーが直らない限りこちらは手も足も出ません >>109
別の方法として、mp4に変換してそのキャッシュを使わせれば見れるかもしれません。まだプレイヤーがmp4の再生機能を切り捨ててなければですが(関係ないのかな?よく分からない。.tsの中身がmp4なら問題ないが)mp4であれば404を返すことは多分無いと思うので 完全に成功したかはわからないけれどmp4なら動画にあるシークバーは使えないけれど再生は可能っぽいな
mp4の再生機能が生きてる間は変換すればこちらで見ることはできそうだ
>>111を見る限りそれも長くはなさそうだけれど mp4の再生機能まで切り捨てられてしまったらローカルでコメ付きで再生するしかないですね。
【commeon】コメント再生機能付き動画プレイヤー【ローカルでも再生可能】 – 忘却まとめ
https://bookyakuno.com/commeon/ nicocache.jpn.org/second
からファイルがダウンロードできない。
具体的に言うと最初のトップページと2メージ目前半は大丈夫なんだけどAllや2ページ目後半以降はファイルをダウンロードしようとするとトップページ(1ページ)に戻される。firefoxだけどedgeでも確認した。これって俺だけ?正確に確認するとnc0363から駄目、ダウンロードできない。リンクをコピーしても駄目
あとインスペクタ見るとUncaught TypeError発生してるけど何か関係あるのかな あとnicocache.jpn.org/second/hofu
がnot found. あーリンクすべきなのは/second/hofuじゃなくて/hofuなのか
/secondに貼られてる避難所のリンク先間違ってるね >>116-118
ご報告ありがとうございます
避難所2 復旧しました
>nc0363より古いファイルがダウンロードできない
避難所2内の避難所へのリンクを修正
>避難所3設置した際にディレクトリ構成変更しましたが、リンク修正忘れていました、申し訳ないです フィルタまとめ#120うpしました
https://nicocache.jpn.org/download.php?id=168&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- wr.cssの調整
- wr_MylistUadLikeButtonToggle.jsからカスタムマイリストボタンを削除(位置が変わった為)
- トラッカーと音量コントローラがビデオタグを取得するタイミングがずれる為pc.jsに手動ボタン設置
- 再生速度200倍までサポート
- CustomMylistManager.htmlを調整
- CustomMylistManager.jsを修正
- MylistButton.jsを修正
- MylistLibrary.jsを単純化し機能を削ぎ落とした
- カスタムマイリストのエクスポートデータの互換性はありません、lz-stringで解凍して[{"id":1,"vid":"meta"},{"id":2,"vid":"smxxxxxxx"},]の形式でテキストファイルに平文に書けばインポート可能です フィルタまとめ#120.1うpしました
- up.jsから不要部分削除、キャッシュ情報太字化 フィルタまとめ#121うpしました
https://nicocache.jpn.org/download.php?id=171&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- CustomMylistManager.html(.js)の更新
- マイリスト管理モードでも手入力で動画IDを入力することでマイリスト登録出来るようになった
- 上までスクロールするボタン追加
- 未だに削除が実装不能なのでIndexedDBから不要な動画は直接削除してください fetchでcacheが済んでるのに動画を開くとhlsのキャッシュがはじまるからなんでだと思ったら、IDとキャッシュがはじまるIDが違う
so42839803 fetchでcacheが済んでるのに動画を開くとhlsのキャッシュがはじまるからなんでだと思ったら、IDとキャッシュがはじまるIDが違う
so42839803 >>123
それ、他の動画でも起きてて、元の番号をURLに入れても、同じ動画(コメントも同じ)が出てくるので、
ニコ動内部で、管理番号が変わっただけじゃないですかね? >>123
それ、他の動画でも起きてて、元の番号をURLに入れても、同じ動画(コメントも同じ)が出てくるので、
ニコ動内部で、管理番号が変わっただけじゃないですかね? フィルタまとめ#123うpしました
https://nicocache.jpn.org/download.php?id=173&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- common.js,pc,js,expired_sourceChanger.jsの更新
- pc.jsにsourceNothing2実行ボタンを実装
- https://www.nicovideo.jp/cache/videoid/auto/movie/ (videoid/master.m3u8も含めて)が404 Not Foundになる対策として、
- /local/CustomCache/(動画ID)/にキャッシュを置くことで期限切れの公式動画を再生出来るようになった
- 作動しない場合はsourceNothing2ボタンを押してください (´・`)v-。o○ヾ(||´ロ`)o=3ゲホゲホ ◆2TK8xdazzp3dさん~https://www.nicovideo.jp/cache/[動画ID]/auto/movieのエラー直してけれ~ フィルタまとめ#124うpしました
https://nicocache.jpn.org/download.php?id=177&key=631f904d23f05602d2545b87e65689f8d202289c27b4cb0f5cd670e5b9a49dd6
- (主な変更点)
- /local/CustomCache/(動画ID)/から/local/CustomCache/(動画ID).hls/に変更(NicoCacheとmp42hls.vbsの仕様に合わせた)
- 一括でフォルダをリネームする場合FlexibleRenamerがおすすめ
- 高度なリネームにチェックを入れて正規表現、検索欄に「(.*)」、置換欄に「\1\.hls」で一括リネームできます
- mp4の再生にも柔軟に対応 /local/CustomCache/(動画ID).mp4という風に置いてください。 sm42900000 以降の動画がキャッシュされないっぽい? 詳しく調べたら、
sm42961000 ok
sm42968001 ng
sm42968200 ok
sm42968201 ng
sm42968210 ng
sm42968220 ng
sm42968230 ng
sm42968240 ng
sm42968300 ng
sm42969200 ng
って感じで、実際はもっと細かく調べてるけど書くのがめんどくさいw
数字によって区切られてるわけでは無さそうで、11月に入ってからが不安定っぽいんだけど、同症状の人、居ます? sm42977683 初めNG。キャッシュクリア等しているうちに何らかの拍子で1回だけOKとなるも、その後は何をしてもNG
sm42980139 NG 配信サーバーが*.dmc.nicoから、delivery.domand.nicovideo.jp/~
に変わったからかな。
javaの、hlscachingProcess.javaの先頭にそれらしき記述は見つけたものの、ここだけ見てもどう変更していいものやら・・って所と、今までの物と、今後とで両方対応しなきゃいけないとなると、どう変えていいのか分からないので、分かる人待ちかな?って所。 正規表現でURL見てるところは、nlMovieFetcher.java の中にも見つけど、見つけるのが精一杯で、javaわからん(^^;
他にも全部で4つのファイルの中に有るのは検索で見つけたけど、さっぱりだなぁ。
URLに動画IDが無くなってるところも影響してそう。 アニメの公式配信、本日分から全部新サーバーに移行したかな いつの間にかキャッシュできてない!って思ってたらそういうことか nd0178 NicoCache_nl+150304mod+231111mod (eR)
[不具合修正]
・ニコニコの仕様変更で追加されたAmazonの配信システムを利用しないようにするワークアラウンドを追加
・HLS動画で動画ページのIDと動画データのIDが異なる場合に追跡できなくなっていたのを修正
しばらく離れていてあまり状況把握できてないんですが、動かなくなったのでとりあえず緊急対応版です。
ただ、新たに導入されたAmazonのシステムを使った配信システムはすべての動画が暗号化されていて雲行きが怪しいです。 >>140
ありがとうございます。
でも、例えばキャッシュが存在しても
https://www.nicovideo.jp/cache/so41635862/auto/movie
にアクセスすると404 Not Foundになる不具合が直っていません。
何卒よろしくお願いいたします。
…これ不具合ですよね? >>140
対応ありがとうございます。システムメッセージで旧サーバーを読んでる事を確認しました。
新しい配信サーバーはAmazon系列ですか。全て暗号化されると、色々都合が悪いですね。
あと、できたらでいいのですが、hlsでキャッシュした物を、
汎用性高めるのにmp4化してるのですが、cacheを再起動しないと、キャッシュ済となってくれません。
格納フォルダの移動先検索に、フォルダ移動だけでなく、mp4化したものも検索対象にしていただけると助かります。
再起動でキャッシュ済と表示されるので、些細な事ではありますが。
(「キャッシュ」という意図からは少し外れてしまうのが問題ではありますが) 新しめの動画全く取れなかったのが気が付いたら今日は取れてるな
何があったのか・・・ >>131
名前は「(動画ID)(動画タイトルとか).hls」ではダメで必ず「(動画ID).hls」なのか
リネーム不要になればCustomCacheをジャンクションとかでキャッシュフォルダにリンクするだけで済んで便利だと思うんだけど…難しいのかな はい。難しいです。私のプログラミングスキルでは"動画タイトルとか"の部分をどう取り除けば良いのか分かりません。助けてください。 nicocacheに正規表現でタイトルからsm番号取得する処理あるから それを流用してみては NicoCache_nl\src\dareka\processor\impl\CacheDirProcessor.java
の
(([a-z]{2}[0-9]+)(?:low)?(?:\\[\\w+(?:,\\d+)?,\\d+\\]\\w*\\.(?:flv|mp4|hls))?)
ですかね… まずキャッシュファイル一覧を取得後、一覧から正規表現パターンにマッチするファイルを抽出してURLを指定して再生するという形になるかと思いますがどう考えてもJavaScriptオンリーでFirefoxでも動く形でかつ自動で読み込まれる形にはできないですね。
Chrome限定でFile APIを利用すれば一応可能かと思いますが、再生するたびにディレクトリを選択してアップロードしてもらう必要があります(セキュリティリスク上の措置)。
自分は火狐使いなのでこれはキツイですね…
現状は今の処理が(リネームは必要ですが)ベストソリューションかと思います。
なにか他に良い方法があれば提案願います。 ファイル名一覧をJSONで書いてCustomCacheに置いてもらえれば可能かも知れない。例えばCustomCache/cacheFilesName.jsonとか
そうすればFile APIも必要ない ■ このスレッドは過去ログ倉庫に格納されています