發表文章

目前顯示的是 10月, 2017的文章

Twtich 技術

放起來,有空再看 https://blog.twitch.tv/live-video-transmuxing-transcoding-ffmpeg-vs-twitchtranscoder-part-ii-4973f475f8a3

Android 安裝,設定 紀錄

記錄一下,有些東西無法直接login帳號後還原 以後可能刷機也需要 Magisk module Art Optimization Bellota Font Enable Doze for GMS Magisk Module Single User M od Terminal Emulator Debloater (可用其他GUI app直接砍) 未測試 YouTube Vanced WiFi Bonding Xposed module App Settings 1.1.3xda download(只用來改locale 也許有別套) App Locale (改用AppOps+Xprivacy後,就不需要拔權限,只改locale就夠我用) AppOps 1.29beta10, 新版不能用 Glitchify Gravitybox Greenify MinMinGuard Play Store Changelog RootCloak (可用Magisk內建) TwitchNoAds Xprivacy Xprivacy in App Info Youtube AdAway YoutubeSwipeToSeek disable module when phone can't boot /data/data/de.robv.android.xposed.installer/conf/modules.list https://forum.xda-developers.com/xposed/howto-disable-xposed-modules-via-t3227175 F-Droid AdAway BusyBox Simple IRC

vlc同步播放檔案 ex: osu分開存的video和audio

https://superuser.com/questions/640044/play-two-videos-in-sync-as-well-as-having-seek-in-sync VLC可以在GUI裡面同步放多個media檔 open mutiple-flies ->show more options -> play another ..... 但是有些圖檔是video有聲音 (可能劣質?) 令有一個audio檔的 ,在拉完兩個檔後再參數最前面再加上 --no-sout-display-audio   第二個檔是用--input-slave=  放的 (不用改)

Android Magisk module uninstall

magisk module比xposed module危險,可能會無法開機,解法↓ Uninstall Magisk module offline/without Magisk? Use mount-magisk.zip found in collection of modules thread and delete the folder via twrp in /magisk Magisk Module Uninstaller Flash in recovery (TWRP) Go to TWRP's Terminal/ADB Shell (if you're not usinf twrp 3.x) Type uninmod_magisk 

OpenJDK 32bit設定 jar檔執行(Oracle不提供JDK9 32bit)

https://github.com/ojdkbuild/ojdkbuild https://github.com/ojdkbuild/ojdkbuild/releases   選一個x86的下載 想用32bit的原因在於,效能和64bit差異不大,可是ram用量差很多 64bit jre主要是為了解決ram不夠用的問題,不是效能 Oracle表明不出32bit,只有64bit 唯一解大概是這個了,其他家的OpenJDK都不出32bit Oracle JDK和OpenJDK差別好像就多了一些他們自己的private code 其他地方規格上是相容的 java command line option (找不到openjdk的,就用oracle jdk的來代替,大部份都通用) https://docs.oracle.com/javase/9/tools/java.htm#GUID-3B1CE181-CD30-4178-9602-230B800D4FAE__BABHDABI 設定方法 下載完後找任意地方解壓縮,設定環境變數後就能用了 https://imgur.com/a/Iu1bu 要設定JAVA_HOME的原因是,古老傳統吧,好像還是有Java軟體會去用這變數 設定jar檔關聯直接執行 參考AppVeyor修正 .sh檔的方法,想出下面的方法 https://github.com/alexkasko/openjdk-unofficial-builds/issues/27 在cmd下用管理者權限執行 assoc jar=jarfile ftype jarfile="C:\OpenJDK\jre\bin\javaw.exe" -jar "%1" %* 刪除關聯的方法,同樣要管理者 ftype jarfile= 可用我寫好的sciprt設定 (設完環境變數後,右鍵管理者執行,不用自己打指令,效果一樣) https://github.com/craftwar/scripts/raw/master/Windows/register%20openjdk.cmd

build OBS VS2017

這篇是記錄我編譯產生OBS Studio時的過程,如果你要找的是我做的OBS版本 http://craftwarblog.blogspot.com/2017/09/chatty-obs-by-craftwar.html nvenc的支援在750上,如果header用8.2版本,2018/11/12 OBS的nvenc會無法啟動,改成8.1就ok了 [NVENC encoder: 'streaming_h264'] Failed to open NVENC codec: Function not implemented 1080據說沒有問題,看來是ffmpeg沒做好能力的檢測   作者prebuild的dependencies檔常忘記更新 試著自己更新後發現一些問題 OBS會link到 libx264-*.dll FFmpeg也會link到 libx264-*.dll 如果只compile更新 libx264,就會變成OBS link到新的 FFmpeg官方版會用舊的 libx264 都需要重build才比較不會有問題 ffmpeg不能用 /GL ,否則會出錯 (Dead-code elimination MSVC問題) 即使下了 --disable-runtime-cpudetect,也會在最後失敗 https://trac.ffmpeg.org/ticket/2610 -FORCE:UNRESOLVED也沒辦法過,放棄/GL 因為 libavutil/cpu.c 判斷cpu的長這樣,應該要用 #if 直接濾掉 (x264是這樣做) 提問題的人也是這樣建議,結果ffmpeg拒絕修改,說這是M$的錯 static int get_cpu_flags(void) {     if (ARCH_AARCH64)         return ff_get_cpu_flags_aarch64();     if (ARCH_ARM)         return ff_get_cpu_flags_arm();     if (ARCH_PPC)         return ff_get_cpu_flags_ppc();     if (ARCH_X86)         retur

build x264 msys2 VS2017

參考資料 http://blog.csdn.net/lifei092/article/details/71687049 開VC shell後 msys64\msys2_shell.cmd -mingw64 -use-full-path CC=cl ./configure --prefix=build --disable-cli --enable-shared obs又沒更新prebuild binary,想用新版就自己google試看看了 msys2的更新 msys2需要安裝make, pkg-conf + [我的用法需要git] pacman -Syu 關掉terminal後 pacman -Su     configure的額外參數 compiler flag 多個include dir就 "-I a -I b" --extra-cflags="-Id:\packages\win64\include" https://msdn.microsoft.com/en-us/library/73f9s62w.aspx   :隔開每個目錄 (linker flag) --extra-ldflags="/LIBPATH:d:\packages\win64\lib"     mingw + msvc 會有一些問題 toolchain不完全相容 ./configure 吃的參數和環境變數,有些是mingw的,有些是msvc的,很麻煩    給configure的參數要用 -,不能用/ 會出錯

Android ze500kl random lose root?

在Magisk 16.6似乎有修正這個bug,原因我忘記了  ASUS_Z00ED = ZE500KL = Z00E 不懂為啥有這麼多編號.... 今天在等火車的時候,發現root又沒了 supersu和root checker都顯示找不到su binary 重開後,root沒回來,xposed的修改都沒了 抓完magisk想刷,想開進recovery沒按好進系統,root又回來了...wtf 10/25 睡醒再次發生,畫面上有goolge play更新的通知 關機後重開解決...大概是root方式有bug 決定換掉supersu用magisk看看 v14可以裝了,以前舊版刷進去都無效,繼續觀察中 magisk還是一樣會發生,電源鍵reboot後恢復 可能相關因素 xposed module update後沒重開 google play更新軟體,或本身 11/7 硬體重開恢復root 猜測跟google play更新有關,關掉instant app看看,反正沒在用

Google Apps Script

https://developers.google.com/apps-script/ 想寫某個東西,和某人討論後發現原來還有google可以用阿 在spreadsheet內的script可以publish as webapp後,就能從網頁上存取 function test() {   var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); } 由於權限必須設成固定某人,Nightbot之類的client才能匿名存取 擔心會不會有權限問題,如果他改了script後能存取我的東西 dev版本的code,要經過驗證身份才能使用,應該沒問題 經測試,Google Drive是令一項權限,所以沒問題,不會跑到spreadsheet外 function otherSheet(){  // Get any starred spreadsheets from Google Drive, then open the spreadsheets and log the name  // of the first sheet within each spreadsheet.  var files = DriveApp.searchFiles(      'starred = true and mimeType = "' + MimeType.GOOGLE_SHEETS + '"');  while (files.hasNext()) {    var spreadsheet = SpreadsheetApp.open(files.next());    var sheet = spreadsheet.getSheets()[0];    Logger.log(sheet.getName());  } }

Windows捷徑 給jar檔JVM參數, run jar file with jvm arguments

https://i.imgur.com/K13Xx1y.png 由regedit可找出windows shell對jar檔執行的命令 "C:\Program Files (x86)\Java\jre1.8.0_144\bin\javaw.exe" -jar "%1" %* 因為有%* 我猜測應該能接收到參數 對jar檔建立捷徑後,在目標後加入參數即可 for HotSpot ex: -XX:+AggressiveOpts -da -Xbatch 寫成cmd script直接javaw執行jar也可以,差別在於無法改圖示,除非再建一個捷徑 用 process explorer 可看出command line確實有改變,圖就不附了,懶 如果是包成.exe 檔的Java程式,要看那個程式怎麼設定,不要問我 或是改用jar版本的啟動方式

Twitch 運作機制 實況觀看和上傳的機制說明

圖片
2018/8/10 更新 https://blog.twitch.tv/twitch-engineering-an-introduction-and-overview-a23917b71a25 Twitch的說明+我的實測整理出的結果 實況主用OBS連到的Twitch ingest  server上傳資料 ingest server會把資料再上傳到Twitch(本部也許還有分流? Twitch沒說明)去做處理 Transcode成不同品質,品質source只需要transmux把rtmp轉成hls data center是指實體的硬體設施 (包含空調,網路,電,電腦) 觀眾看實況連到的server在twitch叫edge edge是一群server,不一定會連到哪一個,看同一實況的人也可能連到不同edge edge server address大概長這樣 video-edge-c2a244.lax03.hls.ttvnw.net  <-us video-edge-a24f84.sfo01.hls.ttvnw.net  <-us video-edge-da0b30.tpe01.hls.ttvnw.net <-tw 剛開始看的人都必需連到us去要資料 可能大台例外一開始就有分流 (簽約實況主? 保證有一定觀眾數) 如果tw區域有足夠多人在看,Twitch就會給tw區edge資料,做為分流 後面的人就會連到tw server去,不是一開始的us 一開始連us的人,會不會被自動轉到tw去? (不確定,我猜twitch應該有這技術) 觀眾看台用哪一個server跟實況主的設定無關 Twitch在台灣建置data center後 有人說台灣終於有Twitch server,不用連到國外去看了 基本上是對的,除了小台 (前面解釋過了) 實況主上傳到Twitch的資料,Twitch會處理後提供不同品質可以選擇 (re-encoding) 如果你的台沒這個功能,可能是觀眾數不夠Twitch沒提供 panter一定可以調畫質,affiliate只有優先使用權 https://help.twitch.tv/customer/portal/articles/2785927-joining-the-aff

Hinet Zyxel P874 VSDL modem, no IPv6?

https://imgur.com/a/I70GI http://interop.ipv6.org.tw/2010TaiwanIPv6ReadyLogoListPhase2.htm https://www.ipv6ready.org/?page=phase-2-tech-info 韌體版本: P874N7_TR069_20140730 前陣子進過P880的介面就有發現可設定IPv6 P874通過中華電信研究院的測試 IPv6 Ready 認證有Host/Router,理論上應該能開 我猜是沒寫Web介面? 只能用軟體開? 或是firmware根本沒這功能,測試只測硬體orz 不過IPv6後,還會拿到private IP,經過NAT再出去嗎? 直接出去就增加風險阿

Twitch 實況只聽聲音 (audio only mode)

官方的Twitch網頁是不支援的,但是手機app有這個功能 這就表示其實是有個stream只有聲音的 用Streamlink就能抓到這個audio only stream 資源用量會比平常低 (少掉畫面的部分) 作業中把別人台當bgm很好用的功能 Streamlink的使用方法參考,我之前寫的文 Chatty介紹及教學 Streamlink+VLC 同時觀看數個Twitch實況 或是用Android模擬器裝twitch app也可以辦到,只是系統負擔會比較大   最後的方法,在播放器中關掉畫面,減輕系統負擔只處理聲音 (流量不會減少,還是會全抓) ex: VLC

Qt and VS2017 32bit

圖片
據說VS2015 VS2017 ABI相容,所以Qt似乎不打算令外出2017的 要產生VS2017 32bit build Qt Creator內要改設定才能用到2015 要設定2017的compiler (應該要能自動抓才對?) AppVeyor的狀況 (目前還沒把 msvc2015放進VS2017的image,沒得用) Build started cd C:\Qt\5.9 dir Volume in drive C has no label. Volume Serial Number is 1CB8-D4AA Directory of C:\Qt\5.9 07/04/2017 01:52 PM <DIR> . 07/04/2017 01:52 PM <DIR> .. 07/04/2017 01:53 PM <DIR> msvc2017_64 07/04/2017 01:51 PM <DIR> winrt_armv7_msvc2017 07/04/2017 01:52 PM <DIR> winrt_x64_msvc2017 07/04/2017 01:52 PM <DIR> winrt_x86_msvc2017 0 File(s) 0 bytes 6 Dir(s) 27,699,412,992 bytes free

AppVeyor VS2017 vcvars

https://github.com/appveyor/ci/issues/1410#issuecomment-301512389 https://www.appveyor.com/docs/build-environment/#choosing-image-for-your-builds call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"   https://www.appveyor.com/docs/lang/cpp/

AppVeyor 設定

基本上就是appveyor.yml會override web介面的設定 可能是以web介面的一個tab為單位override? 或是只要有appveyor.yml就全無視? 2018/1/1,目前只有environment和notification兩邊都會有效,不覆蓋 行為可能會改,最保險還是都用同一邊避免試都沒結果 剛在build obs,就發現web改VS2017無效得從appveyor.yml中改 遠端rdp debug https://www.appveyor.com/docs/how-to/rdp-to-build-worker/ APPVEYOR_RDP_PASSWORD 設了後都無法登入 所以我都讓系統產生再copy,反正不是多重要的project,應該不會有人偷用搞我 APPVEYOR_SAVE_CACHE_ON_ERROR to true 失敗也會做cache 某些delpoy設定不同的project可以用 secure variable https://github.com/appveyor/ci/issues/2044#event-1435555904 升級VS2017的方法,下載新的安裝程式去更新 install:   - appveyor DownloadFile https://aka.ms/vs/15/release/vs_community.exe   - vs_community.exe update --wait --quiet --norestart --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community" 

KeePass 密碼管理器, password manager

https://keepass.info/ 先介紹密碼管理器的好處 對使用者來說,只要記一組密碼就能在不同網站使用不同密碼 對帳號攻擊者來說,他必需猜出你各網站所設密碼,難度大幅增加 想更安全可以再用2FA (Two-factor authentication) 就算密碼被猜出從新的地方要登入,還得要有你手上一組時效性密碼 用密碼管理器比讓瀏覽器記錄密碼安全 (瀏覽器密碼檔被拿到就全部洩漏了) 密碼管理器不像瀏覽器會直接連網,軟體被攻擊的可能較低 怕麻煩可只用密碼管理器產生密碼並存在瀏覽器 (每個網站用不同),也是比人工產生記憶安全 可以的話還是用密碼管理器自動輸入密碼安全一點 推薦KeePass完全open source,在安全性上比較可靠 (不怕軟體有後門) 可自動輸入密碼,多平台支援, 可用雲端空間備份 (需要安裝plugin) 密碼檔有加密被盜走無密碼要解開非常難 軟體本身也有保護,無法用簡單的方法竊取密碼 (process memory dump, generic keylogger) 雲端空間我使用已有dropbox (使用 plugin KeeAnywhere ) 讓PC/手機共用資料庫 KeeCloud看起來比較強大,但是搞不定設定,設定範例又德文orz Android上我用 KeePass2Android 如果你電腦被入侵強迫執行惡意程式,基本上已經不算你的電腦了 用任何密碼管理器都一樣可能被破解,這不是管理器主要針對的目標

OBS 確認 Garena 盜用程式碼

以前好像只是Garena允許盜版遊戲在平台上使用 (這樣好像只能叫盜版平台?) 現在Garena確定為盜版公司 簡單說明,OBS的license是GPLv2,Garena的競時通程式有使用OBS的程式碼 Garena必需把他的程式原始碼也開放出來 ,沒有就是違反 我以為OBS不想處理,原來是花時間在調查? (9/25~10/6) https://imgur.com/a/RWnjN https://obsproject.com/mantis/view.php?id=742 Fenrir (from OBS mantis) 確認Garena的GTV是修改包裝過的OBS,所以我以前用OBS實況LOL才會遇到的神奇bug 同樣的程式跑兩份造成衝突 (我真沒想過是這原因, wtf) 我回報的bug就關掉了 (這當然不算OBS的bug) https://github.com/jp9000/obs-studio/pull/1037 騰訊的人 businiaowyf (github上),想在OBS裡面的server list加入Garena的平台 然後被開發者notr1ch反問你們違反GPL的事www 騰訊不回應,所以就不讓Garena加入伺服器清單了 OBS的創作者Jim是個好人,他說他沒打算提告之類的

Twitch extension 記錄

使用者可自行選擇要不要啟動/給權限 限制要用web才能看到,第三方程式 ex: streamlink  就不行 可能有用/會用到的? Overlay只能用一個,panel可以同時用4個 Streamlabs Loyalty, Music, Polls & Games https://www.twitch.tv/ext/zfh2irvx2jb4s60f02jq0ajm8vwgka-1.0.12 https://streamlabs.com/dashboard#/twitch 點歌系統限soundcloud,不能保存成list 無法先看到目標詳細資訊,完全不實用 有忠誠度的點數系統可用 vote, giveaway都還算ok (沒用過沒比較對像) extension類別是overlay,限定twitch網頁使用 (app或其他方式無效) Youtube : Now Playing https://www.twitch.tv/ext/1ujqhg4p9u4y7xbkyuqe6aabw5r6n7-0.0.2 我改的OBS不需要這種東西就能顯示 Niconico! 把對話變成nico彈幕 (很吃觀眾的GPU) https://www.twitch.tv/ext/gh70y1spw727ohtgzbhc0hppvq9br2-0.2.0

Discord 的一些紀錄 使用經驗 設定, 訊息, 實況

圖片
https://stallman.org/discord.html GNU發起人 Richard Matthew Stallman 表示Discord會用你的使用資料賺錢 詳細自己看,懶得翻 訊息 https://imgur.com/a/mRm5q 1. 只有被點名(mention)會有通知 2. mute後channel不會有通知和提示 (點進channel還是能看到訊息) 3. mute的channel可以隱藏起來 4. mute的server,不會有通知,點進server有訊息的channel會變色提示 (message badge) 如果使用者狀態設 DND (do not disturb),全通知收不到 被點名時,按右上這個圖案可以顯示被點名的紀錄 有在實況的建議連結Twitch帳號,增加曝光率 打開stream mode,實況時會在使用者名單上顯示實況中 (變紫色+顯示實況標題) steam mode會修改通知狀態,讓你在實況時不被影響 (可以在設定中修改) Ctrl + / 會出現熱鍵圖,隱藏功能? <>包住的連結不會有preview https://support.discordapp.com/hc/en-us/articles/206342858--How-do-I-disable-auto-embed-   Discord內建的實況功能 測試discord stream發現: (2021.11.23) 實況主端的狀況 CPU用量增加約9%+,推測是software encoding (ffmpeg),看了一下dll,應該是用openh264,所以用OBS才能用到hw encoder效能會比較好,對遊戲的衝擊可能較小 觀眾的狀況 Discord server的位置和頻寬沒有實況平台好,較可能出現播放不順

Discord 抓遊戲的方法, 自訂遊戲名字, custom game name

圖片
有些人好像會因為這個功能,CPU被吃太多 跟WMI有關,細節不明 簡單說就是Discord會一直去掃瞄你電腦正在跑的程式 (用WMI) 這個功能會吃CPU,某些人會被吃到20~25% https://www.reddit.com/r/discordapp/comments/50p4wg/discord_not_cooperating_constant_wmi_activity/ If you have the know-how, you can try to debug it yourself. The exact WMI query we're running is: SELECT ProcessId,ExecutablePath,CommandLine FROM Win32_Process Get-WmiObject -Query "SELECT ProcessId,ExecutablePath,CommandLine FROM Win32_Process"     That command is Get-WmiObject -Query "SELECT ProcessId,ExecutablePath,CommandLine FROM Win32_Process" Which should run from a Powershell prompt.     加入Google Chrome或任何Discord不認識的程式 可以點名字作修改 (Discord認識的遊戲無法修改,所以我一直沒發現可以這樣用)     舊方法,原來不用這麼麻煩   顯示的遊戲名稱是window title 弄個可以改window title的程式,就可以騙Discord顯示你正在玩的遊戲了 修改名字後,如果沒變要在discord中刪除再 加入, 讓discord重抓就可以用 https://mega.nz/#!x4MWgCrT!yMkQ2LzQkR3GUgn6BOp2tW55bElodGPyKfGtWJO1amc

關掉Android chrome 空白分頁的推薦

http://www.androidpolice.com/2016/10/24/psa-can-disable-recommended-articles-chrome-54s-new-tab-page/ chrome://flags/#enable-ntp-popular-sites chrome://flags/#enable-ntp-snippets #enable-ntp-remote-suggestions  

用管理者權限執行OBS,不跳提示 (run OBS as Administrators without UAC prompt)

因為某些遊戲需要用管理者權限才能用game capture ex: Garena LOL (Riot版本就不用這麼麻煩) 其實只要inject-helper有管理者權限就可以inject,不用整個OBS (提高安全性) 有些遊戲進行中跳UAC會導致錯誤 (ex: Garena LOL),目前只能整個OBS都用管理者跑 就算不會出錯,每次都要跳UAC,不覺得麻煩嗎? 我有去OBS提這個建議 (我已經不打LOL了,沒啥興趣自己寫這個功能) 有興趣的人可以幫忙投票,票數高的功能會優先開發 https://ideas.obsproject.com/ideas/118/make-inject-helper-run-as-administrator-without-uac-prompt 提供一個方法利用排程來繞過UAC的提示 (比手動右鍵,選擇管理者執行,跳提示按確定方便) 其他繞過的方法,我不熟悉,需要安裝額外軟體或是設定比較麻煩 詳細步驟看圖片 https://imgur.com/a/ZW1ZK Taskschd.msc 開啟排程管理 範例捷徑檔,抓回去修改參數就能用了 (簡化上圖的最後一個步驟) 執行這個捷徑以管理者權限啟動OBS sample shortcut file(.lnk), download and modify (simplify last step in above picture) run this shortcut to launch OBS in administrator https://github.com/craftwar/scripts/raw/master/Windows/task scheduler no uac prompt.lnk