# Video mở

> **TL;DR** — Với video không có bản quyền cần giữ, ví dụ clip fitness ngắn, Wandura có một đường nhẹ hơn: server của bạn lấy danh sách video bằng key của từng app, và app phát thẳng link MP4 bằng bất kỳ player thông thường nào. Không vé, không giấy phép Player SDK, không mã hoá, và app không phải viết code để Wandura nhận ra app. Link sống **1 giờ**; làm mới danh sách mỗi **45 phút**.

> **Dùng được khi kho riêng của tổ chức bạn đã được dựng xong.** Đối tác fitness lớn có thể có kho riêng thay cho đường này, với HLS cho clip từ 30 giây trở lên: [Kho video riêng](https://docs.wandura.ai/vi/v1/developers/concepts/own-space).

> **Warning:** Không dùng đường này cho phim drama hay bất cứ thứ gì có bản quyền cần giữ. Ai có link video mở đều phát hoặc tải về được, cho tới khi link hết hạn.

## Khi nào dùng
| Video mở | Mô hình chuẩn |
|---|---|
| Clip tập luyện, hướng dẫn hay demo không có bản quyền cần giữ | Phim drama và series |
| Nội dung bạn không ngại bị chia sẻ | Mọi thứ bán, cấp phép theo phim hoặc nằm sau paywall |

So sánh mọi mô hình: [Kiến trúc](https://docs.wandura.ai/vi/v1/developers/architecture#compare-the-two-models).

## Chạy thế nào
```mermaid
sequenceDiagram
  participant App as Your app
  participant Srv as Your server
  participant W as Wandura API
  participant CDN as Video CDN
  Srv->>W: GET /api/delivery/v1/videos (app key, videos:read)
  W-->>Srv: a page of videos with signed MP4 links
  Srv-->>App: links from your server's cache
  App->>CDN: play the MP4 link directly
  CDN-->>App: video
```

1. **Đăng ký từng app và tạo key cho nó.** Trên partner.wandura.ai → **Developers** → **Apps**, thêm từng app (tên, iOS bundle ID, Android package name), rồi tạo một key có **Stream open video (fitness…)** gắn với app đó. Mỗi app một key: danh tính của app nằm trong chữ ký của mọi link, và lưu lượng dữ liệu được tính cho app theo đó.
2. **Lấy danh sách** bằng `GET /api/delivery/v1/videos` trên server của bạn, đi hết mọi trang.
3. **Phát** từng link đúng như nhận được, bằng AVPlayer, ExoPlayer hoặc thẻ HTML `<video>`.
4. **Làm mới** trước `refresh_before` (45 phút sau response). App lấy link từ server của bạn khi cần và không bao giờ lưu lại.

Vòng quét, kèm code không bao giờ thay danh sách của bạn bằng một danh sách thiếu: [Đồng bộ video mở](https://docs.wandura.ai/vi/v1/developers/guides/open-video-sync).

## Hai endpoint
| Endpoint | Dùng để |
|---|---|
| [`GET /api/delivery/v1/videos`](https://docs.wandura.ai/vi/v1/developers/reference/videos-list) | Lấy cả danh mục, từng trang một. Đây là endpoint chính. |
| [`GET /api/delivery/v1/videos/{id}`](https://docs.wandura.ai/vi/v1/developers/reference/videos-get) | Lấy link mới cho một video bạn đã biết. Cùng hình dạng dòng. |

**Khuyến nghị:** lấy danh sách trên server, cache lại, trả link từ cache. Nếu bạn gọi endpoint một video mỗi lượt phát, khả năng phát của bạn phụ thuộc vào việc Wandura có phản hồi đúng lúc đó hay không (danh sách đã cache vẫn phát được 45 phút), và số request tăng theo lượng người xem. Wandura không chặn cách nào: endpoint một video có rate limit riêng, nên dùng nhiều ở đó không bao giờ làm nghẹt endpoint danh sách. Ngưỡng: [Hành vi chuẩn của API](https://docs.wandura.ai/vi/v1/developers/reference/behaviour#rate-limits).

## Luật cho link
1. **Link sống 1 giờ; làm mới trước `refresh_before`.** Đừng tự tính khoảng an toàn từ `expires_at`.
2. **App không bao giờ lưu link.** Link đã lưu sẽ lỗi `403` về sau, và chỉ thấy được trên thiết bị người xem.
3. **Không bao giờ sửa URL**, kể cả query string: chữ ký bao trùm cả phần đó.
4. **Mỗi app một key.** Link lấy bằng key của app A mà app B phát thì được tính cho A, và không sửa lại được.
5. **Link là quyền xem, không phải quyền sở hữu.** Đừng công khai link.
6. **`429` và `503` nghĩa là retry**, không phải "sai".

Một giờ là lựa chọn an toàn của Wandura, không phải giới hạn kỹ thuật; nếu làm mới mỗi 45 phút gây khó cho bạn, hãy nói với Wandura.

## Khác gì so với phim
- Không vé, không giá trị thiết bị, không giấy phép Player SDK.
- Lưu lượng được báo theo từng app dựa trên chính link; Wandura không đếm từng lượt phát. Nếu cần, hãy tự ghi lượt xem trong app.
- Quyền truy cập theo tổ chức: key của bạn chỉ thấy các bộ sưu tập được cấp cho bạn, sau khi đã publish.
- Thu hồi key của một app chỉ chặn danh sách mới cho app đó; link đã phát ra sẽ hết hạn trong vòng một giờ.

## Liên quan
- [Đồng bộ video mở](https://docs.wandura.ai/vi/v1/developers/guides/open-video-sync)
- [Liệt kê video mở](https://docs.wandura.ai/vi/v1/developers/reference/videos-list), [Lấy một video mở](https://docs.wandura.ai/vi/v1/developers/reference/videos-get)
