m3u8 视频播放器
m3u8 播放器支持播放网络上所有主流音视频格式文件。
一共有两种不同风格的播放器,分别是 Dplayer 和 ArtPlayer。
支持 m3u8(hls)、dash、flv、mp4 等主流音视频格式播放。
接口地址
http
https://api.nxvav.cn/api/m3u8/请求示例
http
// 直播模式,自动播放,音量大小(用户自行修改后无效、音量不为0时无法自动播放)
https://api.nxvav.cn/api/m3u8/?live=true&autoplay=true&volume=0&url=https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
// Flv格式
https://api.nxvav.cn/api/m3u8/?url=https://ghfast.top/https://raw.githubusercontent.com/nuoxi4n/Demo_Video/refs/heads/main/flv/RenJiPengYou.flv
// m3u8格式(hls)
https://api.nxvav.cn/api/m3u8/?url=https://ghfast.top/https://raw.githubusercontent.com/nuoxi4n/Demo_Video/refs/heads/main/hls/Merry_Christmas_Mr.Lawrence/Merry_Christmas_Mr.Lawrence.m3u8http
// 直播模式,自动播放,静音模式
https://api.nxvav.cn/api/m3u8/artplayer.php?islive=true&autoplay=true&muted=true&url=https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
// Flv格式
https://api.nxvav.cn/api/m3u8/artplayer.php?url=https://ghfast.top/https://raw.githubusercontent.com/nuoxi4n/Demo_Video/refs/heads/main/flv/RenJiPengYou.flv
// m3u8格式
https://api.nxvav.cn/api/m3u8/artplayer.php?url=https://ghfast.top/https://raw.githubusercontent.com/nuoxi4n/Demo_Video/refs/heads/main/hls/Merry_Christmas_Mr.Lawrence/Merry_Christmas_Mr.Lawrence.m3u8Shell
curl --location --request GET "https://api.nxvav.cn/api/m3u8"JavaScript
var requestOptions = {
method: 'GET',
redirect: 'follow'
};
fetch("https://api.nxvav.cn/api/m3u8", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));Java
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("https://api.nxvav.cn/api/m3u8")
.asString();Swift
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
var semaphore = DispatchSemaphore (value: 0)
var request = URLRequest(url: URL(string: "https://api.nxvav.cn/api/m3u8")!,timeoutInterval: Double.infinity)
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
semaphore.signal()
return
}
print(String(data: data, encoding: .utf8)!)
semaphore.signal()
}
task.resume()
semaphore.wait()Go
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.nxvav.cn/api/m3u8"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.nxvav.cn/api/m3u8',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;Python
import requests
url = "https://api.nxvav.cn/api/m3u8"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)C
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.nxvav.cn/api/m3u8");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
struct curl_slist *headers = NULL;
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);C#
var client = new RestClient("https://api.nxvav.cn/api/m3u8");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);Ruby
require "uri"
require "net/http"
url = URI("https://api.nxvav.cn/api/m3u8")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body请求参数
WARNING
如需要使用自动播放,必须开启 静音模式 或 音量大小为 0,更多信息请阅读 Autoplay Policy Changes
Dplayer
| 参数名 | 类型 | 必填 | 默认值 | 枚举值 | 说明 |
|---|---|---|---|---|---|
| url | string | 是 | - | - | 视频直链 |
| type | string | 否 | auto | auto,hls,flv,dash,normal | 视频类型 |
| cover | string | 否 | - | - | 封面直链 |
| live | boolean | 否 | false | true,false | 直播模式 |
| autoplay | boolean | 否 | false | true,false | 自动播放 |
| hideplay | boolean | 否 | false | true,false | 隐藏控件 |
| loop | boolean | 否 | false | true,false | 循环播放 |
| lang | string | 否 | zh-cn | en,zh-cn,zh-tw,ko-kr,de,ja,ru | 播放器语言 |
| volume | number | 否 | 0.7 | 0.0~1.0 | 音量大小 |
ArtPlayer
| 参数名 | 类型 | 必填 | 默认值 | 枚举值 | 说明 |
|---|---|---|---|---|---|
| id | string | 否 | - | - | 播放器唯一标识 |
| url | string | 是 | - | - | 视频源地址 |
| type | string | 否 | - | m3u8,flv,mpd | 指明视频格式 |
| lang | string | 否 | zh-cn | en,zh-cn | 播放器语言 |
| poster | string | 否 | - | - | 封面地址 |
| theme | string | 否 | #f00 | - | 主题颜色 |
| volume | number | 否 | 0.7 | 0.0~1.0 | 音量大小 |
| islive | boolean | 否 | false | true,false | 直播模式 |
| muted | boolean | 否 | false | true,false | 静音模式 |
| autoplay | boolean | 否 | false | true,false | 自动播放 |
| autoplayback | boolean | 否 | false | true,false | 自动回放,使用 id 或 url 做为唯一标识 |
| hideplay | boolean | 否 | false | true,false | 隐藏播放控件 |
| automini | boolean | 否 | false | true,false | 当播放器滚动到浏览器视口以外时,自动进入 迷你播放 模式 |
| loop | boolean | 否 | false | true,false | 循环播放 |
| flip | boolean | 否 | true | true,false | 是否显示视频翻转功能,目前只出现在 设置面板 和 右键菜单 里 |
| playbackrate | boolean | 否 | true | true,false | 是否显示视频播放速度功能,会出现在 设置面板 和 右键菜单 里 |
| aspectratio | boolean | 否 | true | true,false | 是否显示视频长宽比功能,会出现在 设置面板 和 右键菜单 里 |
| setting | boolean | 否 | true | true,false | 是否在底部控制栏里显示 设置面板 的开关按钮 |
| hotkey | boolean | 否 | true | true,false | 是否开启快捷键功能 |
| pip | boolean | 否 | true | true,false | 是否在底部控制栏里显示 画中画 的开关按钮 |
| mutex | boolean | 否 | true | true,false | 假如页面里同时存在多个播放器,是否只能让一个播放器播放 |
| fullscreen | boolean | 否 | true | true,false | 是否在底部控制栏里显示播放器 窗口全屏 按钮 |
| fullscreenweb | boolean | 否 | false | true,false | 是否在底部控制栏里显示播放器 网页全屏 按钮 |
| miniprogressbar | boolean | 否 | false | true,false | 迷你进度条,只在播放器失去焦点后且正在播放时出现 |
| playsinline | boolean | 否 | true | true,false | 在移动端是否允许在非全屏模式下播放视频 |
返回响应
基础数据
| 字段名 | 类型 | 说明 |
|---|---|---|
| - | text/html | 网页播放器 |
返回示例
text
Content-Type: text/html
Url: https://api.nxvav.cn/api/m3u8/?url=https://ghfast.top/https://raw.githubusercontent.com/nuoxi4n/Demo_Video/refs/heads/main/mp4/No_Doubt.mp4json
{
"code": 400,
"msg": "视频地址无效"
}