base on Synchronized viewing, theater, live streaming, video <div align="center">
<a href="https://github.com/synctv-org/docs"><img height="100px" alt="logo" src="https://cdn.jsdelivr.net/gh/synctv-org/docs@main/logo/logo.png"/></a>
<p><em>👫A program that allows you to watch movies/live broadcasts together remotely🍿</em></p>
<div>
<a href="https://goreportcard.com/report/github.com/synctv-org/synctv">
<img src="https://goreportcard.com/badge/github.com/synctv-org/synctv" alt="latest version" />
</a>
<a href="https://github.com/synctv-org/synctv/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/synctv-org/synctv" alt="License" />
</a>
<a href="https://github.com/synctv-org/synctv/actions?query=workflow%3Abuild">
<img src="https://img.shields.io/github/actions/workflow/status/synctv-org/synctv/build.yml?branch=main" alt="Build status" />
</a>
<a href="https://github.com/synctv-org/synctv/releases">
<img src="https://img.shields.io/github/release/synctv-org/synctv" alt="latest version" />
</a>
</div>
<div>
<a href="https://github.com/synctv-org/synctv/releases">
<img src="https://img.shields.io/github/downloads/synctv-org/synctv/total?color=%239F7AEA&logo=github" alt="Downloads" />
</a>
<a href="https://hub.docker.com/r/synctvorg/synctv">
<img src="https://img.shields.io/docker/pulls/synctvorg/synctv?color=%2348BB78&logo=docker&label=pulls" alt="Downloads" />
</a>
</div>
</div>
---
English | [中文](./README-CN.md)
# What is SyncTV?
SyncTV is a program that allows you to watch movies and live broadcasts together remotely. It provides features such as synchronized viewing, live streaming, and chat. With SyncTV, you can watch videos and live broadcasts with friends and family, no matter where they are.
SyncTV's synchronized viewing feature ensures that everyone watching the video is at the same point. This means that you can pause, fast forward, rewind, change playback speed, and other operations, and everyone else will be synchronized to the same point.
# Features
- [x] Synchronized viewing
- [x] Videos Sync
- [x] Live streaming
- [x] Theater
- [x] Chat
- [x] Bullet chat
- [x] Proxy
- [x] Videos proxy
- [x] Live proxy
- [x] Proxy cache
- [x] Parse video
- [x] Alist
- [x] Bilibili
- [x] Emby
- [x] Parse live
- [x] Bilibili
- [x] WebRTC online call
- [x] Audio
- [ ] Video
- [ ] Screen
---
# Demo
[https://demo.synctv.wiki](https://demo.synctv.wiki)
---
# Installation
## Binary
You can download the latest binary from [release page](https://github.com/synctv-org/synctv/releases) and install it manually.
## Script
You can use the script to install and run SyncTV.
```bash
sudo -v ; curl -fsSL https://raw.gitmirror.com/synctv-org/synctv/main/script/install.sh | sudo bash -s -- -v latest
```
## Docker
You can also use docker to install and run SyncTV.
```bash
docker run -d --name synctv -v /opt/synctv:/root/.synctv -p 8080:8080 synctvorg/synctv
```
## Docker compose
[docker-compose.yml](./script/docker-compose.yml)
---
# Run
`synctv server` to start the server
```bash
synctv server
# or
synctv server --data-dir ./
```
> Every time it starts, it will check for users with root permissions. If none are found, it will initialize a `root` user with the password `root`. Please change the username and password promptly.
>
> The user registration function requires the use of any `OAuth2` service, such as `Google`, `Github`, etc. For specific configuration, please refer to [documentation](https://docs.synctv.wiki/#/oauth2).
# Documentation
[https://docs.synctv.wiki](https://docs.synctv.wiki)
# Special sponsors
- [亚洲云](https://www.asiayun.com) supports the server for the [demo](https://demo.synctv.wiki) site.
- [LucasYuYu](https://github.com/LucasYuYu) ¥ 18.88
- [爱发电用户_5vDc](https://afdian.com/u/48fa38ce0e0211ef944d5254001e7c00) ¥ 228
- masha
- [T-rabbit](https://github.com/T-rabbit) ¥ 5
- 矿神SPK源 ¥ 100
# Contributors
Thanks goes to these wonderful people:
[![Contributors](https://contrib.nn.ci/api?repo=synctv-org/synctv&repo=synctv-org/synctv-web&repo=synctv-org/docs)](https://github.com/synctv-org/synctv/graphs/contributors)
# License
The `SyncTV` is open-source software licensed under the AGPL-3.0 license.
# Disclaimer
- This program is a free and open-source project. It aims to play video files on the internet, making it convenient for multiple people to watch videos and learn golang together.
- Please comply with relevant laws and regulations when using it, and do not abuse it.
- The program only plays video files/forwards traffic on the client-side and will not intercept, store, or tamper with any user data.
- Before using the program, you should understand and assume the corresponding risks, including but not limited to copyright disputes, legal restrictions, etc., which are not related to the program.
- If there is any infringement, please contact me via [email](mailto:
[email protected]), and it will be dealt with promptly.
# Discussion
- [Telegram](https://t.me/synctv)
", Assign "at most 3 tags" to the expected json: {"id":"6962","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"