[{"data":1,"prerenderedAt":346},["ShallowReactive",2],{"repo-sourin-app-sourin-en":3,"i18n-sourin-app-sourin-en":343},{"mirrorPool":4,"detail":13,"relatedProjects":227},[5,9],{"key":6,"label":7,"base":8,"type":6},"github","mirror.github","https:\u002F\u002Fgithub.com\u002F",{"key":10,"label":11,"base":12,"type":10},"auto-proxy","mirror.autoProxy","https:\u002F\u002Fgithub.xxlab.tech\u002F",{"owner":14,"repo":15,"repoId":16,"repoUrl":17,"starCount":18,"language":19,"description":20,"languages":21,"screenshots":29,"homepage":30,"pushedAt":31,"ownerAvatar":32,"ownerName":30,"ownerBio":30,"lastSyncTime":33,"lastReleaseTime":34,"tags":35,"license":36,"category":37,"subgroup":38,"releases":39},"sourin-app","sourin",1409797858,"https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin",3,"Dart","源影 —— 跨端视频聚合客户端（Flutter + Rust）。Windows \u002F macOS \u002F Android \u002F Android TV。业务逻辑全在 Rust，Flutter 只做 UI，走 dart:ffi 直连。",{"Dart":22,"Rust":23,"C++":24,"HTML":25,"PowerShell":25,"JavaScript":26,"TypeScript":27,"Python":27,"CMake":27,"NSIS":27,"Kotlin":27,"Swift":28,"C":28},84.6,13,1.2,0.3,0.2,0.1,0,[],"","2026-10-18","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F340043237?v=4","2026-10-18T12:06:28.645547+00:00","2026-10-18T00:58:47Z",[],"MIT","media","视频下载工具",[40,67,102,139,165,190],{"tag":41,"publishAt":34,"semVer":42,"prerelease":45,"assets":46},"v1.4.0-rc2",[43,44,28],1,4,true,[47,52,57,62],{"fileName":48,"sizeMb":49,"sha256":50,"downloadCount":28,"originUrl":51},"sourin-macos-v1.4.0-rc2.dmg",47.84,"bffc19c2e420150d9234e1f4352e00fbf2211fc7f2760330950a3481fea77c7a","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc2\u002Fsourin-macos-v1.4.0-rc2.dmg",{"fileName":53,"sizeMb":54,"sha256":55,"downloadCount":28,"originUrl":56},"sourin-macos-v1.4.0-rc2.zip",41.96,"65b8f3b0566d6d88a2f6790ca79afad1a42d38cc823d97db46357e194296a120","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc2\u002Fsourin-macos-v1.4.0-rc2.zip",{"fileName":58,"sizeMb":59,"sha256":60,"downloadCount":43,"originUrl":61},"Sourin-Setup-1.4.0-rc2.exe",27.55,"f1d48946beb1b7865d36c9524ef7af856a805f0b384e837a5c3e441d8108a1e8","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc2\u002FSourin-Setup-1.4.0-rc2.exe",{"fileName":63,"sizeMb":64,"sha256":65,"downloadCount":28,"originUrl":66},"sourin-windows-v1.4.0-rc2.zip",38.6,"9a1bf94f756e51e80503a127516c28696eb8f4489701edace4152375f4e09fe4","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc2\u002Fsourin-windows-v1.4.0-rc2.zip",{"tag":68,"publishAt":69,"semVer":70,"prerelease":45,"assets":71},"v1.4.0-rc1","2026-10-16T23:37:44Z",[43,44,28],[72,77,82,87,92,97],{"fileName":73,"sizeMb":74,"sha256":75,"downloadCount":18,"originUrl":76},"sourin-android-arm64-v1.4.0-rc1.apk",43.78,"f019baac286acbc002eb3d3e0202212ba7c9141c1ea3f6ec4ef4b08c67985835","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc1\u002Fsourin-android-arm64-v1.4.0-rc1.apk",{"fileName":78,"sizeMb":79,"sha256":80,"downloadCount":28,"originUrl":81},"sourin-android-armv7-v1.4.0-rc1.apk",38.11,"b0de97f21171ac5116ef01f29226b0b21f65f9f4059b162710cdb6cdea209e7d","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc1\u002Fsourin-android-armv7-v1.4.0-rc1.apk",{"fileName":83,"sizeMb":84,"sha256":85,"downloadCount":28,"originUrl":86},"sourin-macos-v1.4.0-rc1.dmg",47.41,"ba0a3d3a4470ee4c79eab1cbf82c96c5da93f9839d4b181c7d4d83637ff5ea1e","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc1\u002Fsourin-macos-v1.4.0-rc1.dmg",{"fileName":88,"sizeMb":89,"sha256":90,"downloadCount":28,"originUrl":91},"sourin-macos-v1.4.0-rc1.zip",41.58,"3ed5360620d345df558e06bf2ac88339e3619f3a56eec030a25af8c519b8f1fe","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc1\u002Fsourin-macos-v1.4.0-rc1.zip",{"fileName":93,"sizeMb":94,"sha256":95,"downloadCount":43,"originUrl":96},"Sourin-Setup-1.4.0-rc1.exe",27.4,"534360cc89959f1f5ce62e354d7a231e7fb29a54935b0b383947516d74db1905","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc1\u002FSourin-Setup-1.4.0-rc1.exe",{"fileName":98,"sizeMb":99,"sha256":100,"downloadCount":28,"originUrl":101},"sourin-windows-v1.4.0-rc1.zip",38.39,"e512b22f65b7f391277019f62829e24f90b5933e087687fa6aa7bc176304b305","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.4.0-rc1\u002Fsourin-windows-v1.4.0-rc1.zip",{"tag":103,"publishAt":104,"semVer":105,"prerelease":106,"assets":107},"v1.3.0","2026-10-16T07:00:06Z",[43,18,28],false,[108,113,119,124,129,134],{"fileName":109,"sizeMb":110,"sha256":111,"downloadCount":28,"originUrl":112},"sourin-android-arm64-v1.3.0.apk",43.59,"60d0ffd7f447982f28c687680bcad8598ec526f4396bcdce1de03ce724adb5ea","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fsourin-android-arm64-v1.3.0.apk",{"fileName":114,"sizeMb":115,"sha256":116,"downloadCount":117,"originUrl":118},"sourin-android-armv7-v1.3.0.apk",37.93,"c5083b303e534fb8133744cec77533a5017b52f2081f5b3eba97ceb991417b6f",2,"https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fsourin-android-armv7-v1.3.0.apk",{"fileName":120,"sizeMb":121,"sha256":122,"downloadCount":43,"originUrl":123},"sourin-macos-v1.3.0.dmg",47.4,"f3b2406c8df9c7c53aa722c32c38482860218f27a61d6cb911df86d8e7192574","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fsourin-macos-v1.3.0.dmg",{"fileName":125,"sizeMb":126,"sha256":127,"downloadCount":43,"originUrl":128},"sourin-macos-v1.3.0.zip",41.44,"c72ae01146c72312264bf9916fec7ca68f78b4a4c186ba56998edc3d6cbb9b11","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fsourin-macos-v1.3.0.zip",{"fileName":130,"sizeMb":131,"sha256":132,"downloadCount":18,"originUrl":133},"Sourin-Setup-1.3.0.exe",27.34,"a69ac548375d91cfdda4aeb29bf1f0df87a15e8b92fdab0177241da65cdaa9d8","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.3.0\u002FSourin-Setup-1.3.0.exe",{"fileName":135,"sizeMb":136,"sha256":137,"downloadCount":43,"originUrl":138},"sourin-windows-v1.3.0.zip",38.29,"1df45cfe4828b0749642d685837b17ea806bbf3a993e6cae97daa41aee650ea1","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.3.0\u002Fsourin-windows-v1.3.0.zip",{"tag":140,"publishAt":141,"semVer":142,"prerelease":106,"assets":143},"v1.2.0","2026-10-14T10:25:02Z",[43,117,28],[144,149,154,159],{"fileName":145,"sizeMb":146,"sha256":147,"downloadCount":43,"originUrl":148},"sourin-macos-v1.2.0.dmg",47.14,"e3ee631588d4093a57a9632e73a59a00fbeebc4f55664adc156bbc473cce538a","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.2.0\u002Fsourin-macos-v1.2.0.dmg",{"fileName":150,"sizeMb":151,"sha256":152,"downloadCount":43,"originUrl":153},"sourin-macos-v1.2.0.zip",41.36,"397641aa1434f6f4c9a0f9bc06ff9fdcc58ed26fb87e40eaa3119e26f2f7dde8","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.2.0\u002Fsourin-macos-v1.2.0.zip",{"fileName":155,"sizeMb":156,"sha256":157,"downloadCount":18,"originUrl":158},"Sourin-Setup-1.2.0.exe",27.31,"f7c42a62c810a1149ef026d48fe41afe800ff590f39f23ba48c98c662772fd72","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.2.0\u002FSourin-Setup-1.2.0.exe",{"fileName":160,"sizeMb":161,"sha256":162,"downloadCount":163,"originUrl":164},"sourin-windows-v1.2.0.zip",38.25,"dbb0ace3105aae83c28a87e70c803db8bf0b54b8e73922f3681af85c301ab51a",8,"https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.2.0\u002Fsourin-windows-v1.2.0.zip",{"tag":166,"publishAt":167,"semVer":168,"prerelease":106,"assets":169},"v1.1.0","2026-10-13T11:05:15Z",[43,43,28],[170,175,180,185],{"fileName":171,"sizeMb":172,"sha256":173,"downloadCount":28,"originUrl":174},"sourin-android-arm64-v1.1.0.apk",43.51,"f908e4badd4b6a8393cb4ec14764319075335e041133bce7aebd361a56e923d0","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fsourin-android-arm64-v1.1.0.apk",{"fileName":176,"sizeMb":177,"sha256":178,"downloadCount":28,"originUrl":179},"sourin-android-armv7-v1.1.0.apk",37.81,"25231b9f2eb56c60cf2288c2beafdfc309d86754278b541c6764a41ea88729b8","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fsourin-android-armv7-v1.1.0.apk",{"fileName":181,"sizeMb":182,"sha256":183,"downloadCount":28,"originUrl":184},"sourin-macos-v1.1.0.dmg",47.06,"ee4b80f7f16434587d9aabedf7dc8bee0e0b1fe337a80a3fe8071e86e95ec98a","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fsourin-macos-v1.1.0.dmg",{"fileName":186,"sizeMb":187,"sha256":188,"downloadCount":28,"originUrl":189},"sourin-macos-v1.1.0.zip",41.31,"e2dcecd4635b627fd3479f1b68b1fa08665ce9b969f290a5c5456a4cf3c2445c","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Fsourin-macos-v1.1.0.zip",{"tag":191,"publishAt":192,"semVer":193,"prerelease":106,"assets":194},"v1.0.0","2026-10-08T17:01:53Z",[43,28,28],[195,200,206,211,216,222],{"fileName":196,"sizeMb":197,"sha256":198,"downloadCount":44,"originUrl":199},"sourin-android-arm64-v1.0.0.apk",44.24,"16b46dbababe56684e89b9f13100e5b8a4029a8d945c98cc0e332dd5cc5ed627","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.0.0\u002Fsourin-android-arm64-v1.0.0.apk",{"fileName":201,"sizeMb":202,"sha256":203,"downloadCount":204,"originUrl":205},"sourin-android-armv7-v1.0.0.apk",38.61,"9e23dd6826549d212ec04459dfa05b6a9e9925bbfecafcad5bb67fb0b7c3c4d1",6,"https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.0.0\u002Fsourin-android-armv7-v1.0.0.apk",{"fileName":207,"sizeMb":208,"sha256":209,"downloadCount":18,"originUrl":210},"sourin-macos-v1.0.0.dmg",47.88,"7897a60c2b0c140aa70ea98cc0600588a86c7de7fe828c05de0f6e4d93d5cd73","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.0.0\u002Fsourin-macos-v1.0.0.dmg",{"fileName":212,"sizeMb":213,"sha256":214,"downloadCount":43,"originUrl":215},"sourin-macos-v1.0.0.zip",42.05,"62ca3e8d1f175bd6fd5bff0a09be079799d1bb7bd042b1d14caac7a57017b424","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.0.0\u002Fsourin-macos-v1.0.0.zip",{"fileName":217,"sizeMb":218,"sha256":219,"downloadCount":220,"originUrl":221},"Sourin-Setup-1.0.0.exe",27.86,"c64285b6d55cb82aa4adda0fd7ccb887f28a9f512a1b8e0dbcafedf4df51e6ca",5,"https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.0.0\u002FSourin-Setup-1.0.0.exe",{"fileName":223,"sizeMb":224,"sha256":225,"downloadCount":18,"originUrl":226},"sourin-windows-v1.0.0.zip",39.06,"34caa2d8bf1888683bfcd5aed330b0662d7b0f965d01fe48e7caaf4d1aad5e41","https:\u002F\u002Fgithub.com\u002Fsourin-app\u002Fsourin\u002Freleases\u002Fdownload\u002Fv1.0.0\u002Fsourin-windows-v1.0.0.zip",[228,250,269,286,299,315],{"owner":229,"repo":229,"repoId":230,"category":37,"subgroup":38,"language":231,"tags":232,"starCount":239,"ownerUid":240,"latestTag":241,"platforms":242,"lastReleaseTime":247,"downloadCount":248,"description":249},"yt-dlp",307260205,"Python",[233,234,235,236,237,238,229],"cli","downloader","python","sponsorblock","youtube-dl","youtube-downloader",195413,79589310,"2026.08.19",[243,244,245,246],"windows","mac","linux","other","2026-08-19T23:48:43Z",2975603,"A feature-rich command-line audio\u002Fvideo downloader supporting thousands of sites, actively maintained as a fork of youtube-dl.",{"owner":251,"repo":252,"repoId":253,"category":254,"subgroup":38,"language":255,"tags":256,"starCount":262,"ownerUid":263,"latestTag":264,"platforms":265,"lastReleaseTime":266,"downloadCount":267,"description":268},"JunkFood02","Seal",481797111,"tools","Kotlin",[257,258,259,260,261,237,238,229],"android","f-droid","jetpack-compose","kotlin","material-design",29430,69683722,"v2.0.0-alpha.5",[257],"2024-11-29T15:46:57Z",140564,"An Android video\u002Faudio downloader based on yt-dlp, supporting content download from numerous video platforms with features including metadata embedding, aria2c acceleration, playlist downloading, and Material Design 3 UI.",{"owner":270,"repo":271,"repoId":272,"category":37,"subgroup":38,"language":255,"tags":273,"starCount":279,"ownerUid":280,"latestTag":281,"platforms":282,"lastReleaseTime":283,"downloadCount":284,"description":285},"deniscerri","ytdlnis",497133950,[257,274,234,260,261,275,276,277,237,238,229,278],"audio","mp3","video","youtube","yt-dlp-gui",10653,64997243,"v1.9.1",[257],"2026-10-18T15:03:36Z",22804,"A full-featured Android audio\u002Fvideo downloader based on yt-dlp, supporting over 1,000 websites, for Android 7.0 and above.",{"owner":287,"repo":288,"repoId":289,"category":37,"subgroup":38,"language":290,"tags":291,"starCount":292,"ownerUid":293,"latestTag":294,"platforms":295,"lastReleaseTime":296,"downloadCount":297,"description":298},"iodefog","VipVideo",126031317,"Objective-C",[],5870,4490832,"1.1.7",[243,244],"2026-09-29T04:00:20Z",702,"VIP Video is an aggregator app for Mac and Windows that collects common TV, video, and music sources and plays them through third-party parsing routes.",{"owner":300,"repo":300,"repoId":301,"category":254,"subgroup":38,"language":302,"tags":303,"starCount":309,"ownerUid":310,"latestTag":103,"platforms":311,"lastReleaseTime":312,"downloadCount":313,"description":314},"biliup",116561419,"Rust",[304,305,306,307,308,277],"bilibili","douyin","douyu","huya","twitch",5517,102303510,[243,244,245,246],"2026-10-18T17:10:16Z",158,"Biliup is an automatic live stream recording, uploading, and Twitch\u002FYouTube channel migration tool. It features built-in parsing for 19 live streaming platforms, command-line Bilibili uploading, video downloading, and stream-while-upload with zero disk writes, with a visual WebUI and 24×7 unattended multi-streamer operation.",{"owner":316,"repo":317,"repoId":318,"category":37,"subgroup":38,"language":231,"tags":319,"starCount":336,"ownerUid":337,"latestTag":338,"platforms":339,"lastReleaseTime":340,"downloadCount":341,"description":342},"CharlesPikachu","videodl",140395644,[320,321,304,322,323,305,324,325,326,327,328,329,330,331,332,333,334,277,335,237],"acfun","baidu","cntv","crawler","kuaishou","mgtv","migu","pear","pipixia","quanmin","ted","tieba","tiktok","video-downloader","weibo","youtube-api",2970,36195560,"checkvideodldaily",[245],"2026-04-08T15:33:16Z",1266,"A lightweight, pure-Python video downloader for Windows, macOS and Linux that parses and downloads videos from platforms such as Douyin, Kuaishou, Xiaohongshu, Bilibili, TikTok and YouTube via CLI or Python API, solving cross-platform high-quality video acquisition and batch downloading",{"description":344,"readmeHtml":345},"Sourin is a cross-platform video aggregation client: a Flutter UI driven by Rust business logic over dart:ffi, running on Windows, macOS, Android and Android TV, unifying multiple content sources into one app for unified search, playback and download.","\u003Ch2 id=\"project-overview\">Project Overview\u003C\u002Fh2>\u003Cp>Sourin is a cross-platform video aggregation client that merges many content sources (built-in sites, third-party plugins, Bilibili, Emby\u002FJellyfin, IPTV live, CCTV) into a single interface for unified search, favorites, follow-up, playback and download.\u003C\u002Fp>\n\u003Cp>The UI is Flutter; all business logic lives in Rust and talks to it directly over dart:ffi with no IPC layer. The playback core switched to media_kit + libmpv (bundling full FFmpeg), solving the original HEVC black-screen issue on Windows at the root.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Item\u003C\u002Fth>\n\u003Cth>Value\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Platform\u003C\u002Ftd>\n\u003Ctd>Windows, macOS, Android, Android TV\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Stack\u003C\u002Ftd>\n\u003Ctd>Flutter + Rust, direct dart:ffi\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Playback core\u003C\u002Ftd>\n\u003Ctd>libmpv (media_kit), d3d11va \u002F MediaCodec HW decode\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>License\u003C\u002Ftd>\n\u003Ctd>MIT\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cblockquote>\n\u003Cp>All your video sources in one interface, with a Rust core for unified search, playback and download where HEVC plays reliably.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"key-features\">Key Features\u003C\u002Fh2>\u003Cul>\n\u003Cli>\u003Cstrong>Multi-source aggregation\u003C\u002Fstrong>: built-in sites, third-party plugins, declarative JSON sources and direct TVBox links, unified into one source list\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cross-source search\u003C\u002Fstrong>: one query fans out to all sources, streaming results in without waiting for the slowest\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cross-source switch\u003C\u002Fstrong>: the same show plays from another source, ranked by title similarity with progress migrated\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Playback\u003C\u002Fstrong>: HEVC\u002FH.264\u002FAV1, ASS\u002FSRT subtitles, Bilibili danmaku and custom danmaku servers, with speed, opacity and density all adjustable\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Full-file download\u003C\u002Fstrong>: stitches all HLS segments into one file, one folder per show\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cast &amp; remote\u003C\u002Fstrong>: DLNA cast to a TV that rewrites embedded m3u8 URLs, phone pairing as a remote\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cloud sync\u003C\u002Fstrong>: WebDAV backup\u002Frestore sharing favorites, history and progress across devices\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Desktop integration\u003C\u002Fstrong>: tray icon, custom title bar, window geometry memory, picture-in-picture window\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"target-audience\">Target Audience\u003C\u002Fh2>\u003Cul>\n\u003Cli>Aggregation enthusiasts who want to manage many video sources in one place\u003C\u002Fli>\n\u003Cli>Heavy users who need favorites and progress synced across devices\u003C\u002Fli>\n\u003Cli>TV users who watch on Android TV or big-screen casting\u003C\u002Fli>\n\u003Cli>Developers who add sources via small JS plugins\u003C\u002Fli>\n\u003Cli>Media fans who care about HEVC and subtitle format compatibility\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"quick-start\">Quick Start\u003C\u002Fh2>\u003Col>\n\u003Cli>Clone the repo and set up the Flutter and Rust toolchain per the README build section\u003C\u002Fli>\n\u003Cli>Build the Rust core first: \u003Ccode>cd rust\u002Fsourin_core &amp;&amp; cargo build --release\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Then build the target platform: \u003Ccode>flutter build windows --release -t lib\u002Fshell.dart\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>In Settings \u002F Sources, paste a plugin JS, add a TVBox URL, or configure Emby\u002FBilibili login to add sources\u003C\u002Fli>\n\u003Cli>In development, set \u003Ccode>DATA_DIR_OVERRIDE\u003C\u002Fcode> to a temp dir so real favorites and progress are not touched\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"core-advantages\">Core Advantages\u003C\u002Fh2>\u003Cul>\n\u003Cli>\u003Cstrong>Direct FFI\u003C\u002Fstrong>: all logic in Rust, Flutter UI only, reusing 81% of the original Rust code\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Stable decoding\u003C\u002Fstrong>: libmpv ships FFmpeg independent of system decoders, so HEVC, AC3 and DTS all play\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Plugin sandbox\u003C\u002Fstrong>: JS plugins run in a QuickJS sandbox; paste source code to add new content sources\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Migratable data\u003C\u002Fstrong>: shares the same data directory as the original, so favorites, history, progress and plugins carry over\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"system-requirements\">System Requirements\u003C\u002Fh2>\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Item\u003C\u002Fth>\n\u003Cth>Requirement\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>OS\u003C\u002Ftd>\n\u003Ctd>Windows, macOS, Android, Android TV\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Build tools\u003C\u002Ftd>\n\u003Ctd>Flutter (Dart VM must allow JIT), Rust toolchain with cargo\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Playback core\u003C\u002Ftd>\n\u003Ctd>libmpv (media_kit), d3d11va \u002F MediaCodec HW decode\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"notes\">Notes\u003C\u002Fh2>\u003Cul>\n\u003Cli>\u003Cstrong>HEVC black screen\u003C\u002Fstrong>: if it occurs, set the hardware decode mode to \u003Ccode>no\u003C\u002Fcode> for software decoding, or check \u003Ccode>[PLAY]\u003C\u002Fcode> lines in the logs\u003C\u002Fli>\n\u003Cli>\u003Cstrong>DRM streams\u003C\u002Fstrong>: some sources (notably CCTV) are DRM-encrypted, audio-only playback, the UI states this explicitly and it is not a bug\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Plugin data\u003C\u002Fstrong>: plugin private cache lives in \u003Ccode>plugins\u002F.data\u002F\u003C\u002Fcode> and may hold credentials, protect it\u003C\u002Fli>\n\u003C\u002Ful>\n",1792450978113]