Skip to content

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.m3u8
http
// 直播模式,自动播放,静音模式
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.m3u8
Shell
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

参数名类型必填默认值枚举值说明
urlstring--视频直链
typestringautoauto,hls,flv,dash,normal视频类型
coverstring--封面直链
livebooleanfalsetrue,false直播模式
autoplaybooleanfalsetrue,false自动播放
hideplaybooleanfalsetrue,false隐藏控件
loopbooleanfalsetrue,false循环播放
langstringzh-cnen,zh-cn,zh-tw,ko-kr,de,ja,ru播放器语言
volumenumber0.70.0~1.0音量大小

ArtPlayer

参数名类型必填默认值枚举值说明
idstring--播放器唯一标识
urlstring--视频源地址
typestring-m3u8,flv,mpd指明视频格式
langstringzh-cnen,zh-cn播放器语言
posterstring--封面地址
themestring#f00-主题颜色
volumenumber0.70.0~1.0音量大小
islivebooleanfalsetrue,false直播模式
mutedbooleanfalsetrue,false静音模式
autoplaybooleanfalsetrue,false自动播放
autoplaybackbooleanfalsetrue,false自动回放,使用 idurl 做为唯一标识
hideplaybooleanfalsetrue,false隐藏播放控件
autominibooleanfalsetrue,false当播放器滚动到浏览器视口以外时,自动进入 迷你播放 模式
loopbooleanfalsetrue,false循环播放
flipbooleantruetrue,false是否显示视频翻转功能,目前只出现在 设置面板右键菜单
playbackratebooleantruetrue,false是否显示视频播放速度功能,会出现在 设置面板右键菜单
aspectratiobooleantruetrue,false是否显示视频长宽比功能,会出现在 设置面板右键菜单
settingbooleantruetrue,false是否在底部控制栏里显示 设置面板 的开关按钮
hotkeybooleantruetrue,false是否开启快捷键功能
pipbooleantruetrue,false是否在底部控制栏里显示 画中画 的开关按钮
mutexbooleantruetrue,false假如页面里同时存在多个播放器,是否只能让一个播放器播放
fullscreenbooleantruetrue,false是否在底部控制栏里显示播放器 窗口全屏 按钮
fullscreenwebbooleanfalsetrue,false是否在底部控制栏里显示播放器 网页全屏 按钮
miniprogressbarbooleanfalsetrue,false迷你进度条,只在播放器失去焦点后且正在播放时出现
playsinlinebooleantruetrue,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.mp4
json
{
  "code": 400,
  "msg": "视频地址无效"
}