飞牛影视客户端的后端项目 (此项目仅为试验项目,飞牛影视客户端并不依赖此项目)
作为飞牛影视客户端的后端服务,提供对视频的转码支持,使用 FFmpeg 对视频进行转码,支持HLS协议返回视频流,目前仅支持原画播放,后期会支持画质切换。
飞牛影视客户端项目:https://github.com/Jankin-Wu/fntv-client-multiplatform
- 检查 nas 中是否已经安装 JDK 17
java --version- 如果没有,需要安装 JDK 17
apt update
apt install -y openjdk-17-jdkgit clone https://github.com/Jankin-Wu/fntv-client-backend.git# 跳转到项目目录
cd fntv-client-backend
# 给脚本加上可执行权限
chmod +x gradlew
# 清理构建目录
./gradlew clean
# 打包并跳过测试
./gradlew bootJar -x test使用 docker run 命令启动容器,在容器重启后会丢失显卡驱动映射,所以这里只推荐使用 docker compose 自行构建镜像并启动容器
- 修改 docker-compose.yml 文件中的挂载路径
- 构建 docker 镜像
docker compose build如果使用 nvidia 显卡编解码:
-
在宿主机安装 NVIDIA Container Toolkit
参考:
安装 NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
Linux 使用 CUDA Docker 镜像加速视频转码](https://www.cnblogs.com/myzony/p/18270956/linux-cuda-docker-video-transcoding)
-
修改 docker-compose.nvidia.yml 文件中的挂载路径
-
构建镜像
docker compose -f docker-compose.nvidia.yml builddocker compose up -d# 如果nas里已经装了 FFmpeg,则跳过此步骤(飞牛OS中自带 FFmpeg)
sudo apt update && sudo apt install -y ffmpegjava -jar build/libs/fntv-client-backend-*.jar --spring.profiles.active=release| URL | 请求方法 | 参数说明 | 接口说明 |
|---|---|---|---|
| /v/media/{mediaGuid}/{fileName} | GET | mediaGuid:对应飞牛影视要播放的视频的guid fileName: m38u或ts的文件名称 |
提供给播放器使用的 HLS 协议接口 |
| /v/media/info/save | POST | 保存视频信息,具体见代码中的 MediaInfoSaveRequest | 在播放前需要调用这个接口将视频信息传递给后端,用于后续视频转码 |
| /v/media/play/info | POST | 播放参数,具体见代码中的 PlayRequest | 在播放前或修改播放参数后需要调用这个接口将播放参数传递给后端,返回 HLS 协议的 URL |