简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】

这篇具有很好参考价值的文章主要介绍了简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

做个家用版本的家庭影院,通过这个服务器可以给电脑,平板,手机等设备提供直接播放电影的作用,通过离线下载电影放入目录里就是就可以给全家提供电影播放了,通过浏览器就是可以访问电脑里面的视频,实现简单的家庭版本服务了。

一、优化后的前端代码

1.0最终代码:【前端以这个为主;后端不变】

解决滚动条不能滚动的问题,本次带有一个滚动条,可以滚动播放列表资源;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        #container {
            display: flex;
            flex-direction: row;
            height: 50vh; /* 设置容器高度为视窗高度 */


        }


        /* 视频播放器样式 */
        /*#videoPlayer {*/
        /*    display: flex;*/
        /*    flex-direction: row;*/
        /*}*/

        #video {
            flex: 1;
        }

        /* 播放列表样式 */
        .playlist {
            list-style: none;
            padding: 0;
            width: 200px;

            margin-left: 20px;
            overflow-y: auto; /* 当列表超过容器高度时显示滚动条 */
            height: 100%; /* 设置播放列表高度为容器高度 */

        }

        .playlist-item {
            cursor: pointer;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
            margin-bottom: 10px;

        }

        .playlist-item:last-child {
            margin-bottom: 0;
        }

        .playlist-item.active {
            background-color: #f5f5f5;
        }
        li{
            display: block;
        }
    </style>
</head>
<body>

<div id="container">

<!--    <video id="video" width="420" height="340" controls="controls" src="http://10.72.1.241:8080/GetFile/a1.mp4"-->
    <video id="video" width="420" height="340" controls="controls" src="http://10.72.1.241:8080/GetFile/a1.mp4"
           type="video/ogg"></video></br>

    <ul id="playlist" class="playlist">
        {{range $index,$v := .names}}

        <li class="playlist-item" onclick="changeVideo('{{$v }}', '{{$v }}')">{{$v }}</li><br>
<!--        <li class="playlist-item" onclick="changeVideo('video2.mp4', 'Video 2')">视频 2</li>-->
<!--        <li class="playlist-item" onclick="changeVideo('video3.mp4', 'Video 3')">视频 3</li>-->
        {{end}}
    </ul>

</div>

<script>
    var video = document.getElementById('video');
    var playlistItems = Array.from(document.getElementsByClassName('playlist-item'));

    function changeVideo(source, title) {
        video.src ="http://10.72.1.241:8080/GetFile/" + source;
        // video.play();

        // 更新选中状态和标题
        playlistItems.forEach(function(item) {
            item.classList.remove('active');
        });
        event.target.classList.add('active');
        document.title = title;
    }
</script>
</body>
</html>

 演示截图:

简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】,golang语言实战代码,音视频,服务器,前端,golang程序应用,golang


 可以有播放资源的滚动播放条了;

到此基本结束了,这个前端不在优化了,最终版本







=================================

1.1前端代码[参考不作为实际使用]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 视频播放器样式 */
        #videoPlayer {
            display: flex;
        }

        #video {
            flex: 1;
        }

        /* 播放列表样式 */
        .playlist {
            list-style: none;
            padding: 0;
            width: 200px;
            margin-left: 20px;
        }

        .playlist-item {
            cursor: pointer;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
            margin-bottom: 10px;

        }

        .playlist-item:last-child {
            margin-bottom: 0;
        }

        .playlist-item.active {
            background-color: #f5f5f5;
        }
        li{
            display: block;
        }
    </style>
</head>
<body>
<div id="videoPlayer">
<!--    <video id="video" width="420" height="340" controls></video>-->
    <video id="video" width="420" height="340" controls="controls" src="http://10.72.1.241:8080/GetFile/a1.mp4"
           type="video/ogg"></video></br>

    <ul id="playlist" class="playlist">
        {{range $index,$v := .names}}

        <li class="playlist-item" onclick="changeVideo('{{$v }}', '{{$v }}')">{{$v }}</li><br>
<!--        <li class="playlist-item" onclick="changeVideo('video2.mp4', 'Video 2')">视频 2</li>-->
<!--        <li class="playlist-item" onclick="changeVideo('video3.mp4', 'Video 3')">视频 3</li>-->
        {{end}}
    </ul>

</div>

<script>
    var video = document.getElementById('video');
    var playlistItems = Array.from(document.getElementsByClassName('playlist-item'));

    function changeVideo(source, title) {
        video.src ="http://10.72.1.241:8080/GetFile/" + source;
        // video.play();

        // 更新选中状态和标题
        playlistItems.forEach(function(item) {
            item.classList.remove('active');
        });
        event.target.classList.add('active');
        document.title = title;
    }
</script>
</body>
</html>

1.2前端样式,播放器的最终样式;

简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】,golang语言实战代码,音视频,服务器,前端,golang程序应用,golang

二、后端代码

2.1后端代码

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
	"path"
	"strings"

	"github.com/gin-gonic/gin"
)

// 这个代码在windows,linux中都是可以使用,这里重点关注的就是
//
//	videos := fmt.Sprintf("%s/%s", ml, "videos") 这样设置  windows linux都是可以使用
//
// 实现遍历程序的当前目录videos下的文件
func ListDir() ([]string, error) {
	ml, _ := os.Getwd()
	videos := fmt.Sprintf("%s/%s", ml, "videos")

	infos, err := ioutil.ReadDir(videos)
	if err != nil {
		return nil, err
	}
	names := make([]string, len(infos))
	for i, info := range infos {
		//获取文件名 确认以*MP4结尾的放入切片中
		filename := info.Name()
		if strings.HasSuffix(filename, ".mp4") {
			//if filename
			names[i] = info.Name()
		}

	}
	return names, nil
}

func ListDirllinux() ([]string, error) {
	ml, _ := os.Getwd()
	videos := fmt.Sprintf("%s//%s", ml, "videos")

	infos, err := ioutil.ReadDir(videos)
	if err != nil {
		return nil, err
	}
	names := make([]string, len(infos))
	for i, info := range infos {
		//获取文件名 确认以*MP4结尾的放入切片中
		filename := info.Name()
		if strings.HasSuffix(filename, ".mp4") {
			//if filename
			names[i] = info.Name()
		}

	}
	return names, nil
}

// 文件下载功能实现
func DowFile(c *gin.Context) {
	//通过动态路由方式获取文件名,以实现下载不同文件的功能
	name := c.Param("name")
	//拼接路径,如果没有这一步,则默认在当前路径下寻找
	filename := path.Join("./videos", name)
	//响应一个文件
	c.File(filename)
	return
}

func main() {
	r := gin.Default()
	r.LoadHTMLGlob("templates/*")
	// 初始化默认静态资源
	r.StaticFS("/videos", http.Dir("./videos"))
	//windows 和linux下的路径稍微不同
	names, _ := ListDir()
	//names, _ := ListDirllinux()

	r.GET("/index", func(c *gin.Context) {

		//c.HTML(http.StatusOK, "index.html", gin.H{"names": names})
		c.HTML(http.StatusOK, "newindexV1.html", gin.H{"names": names})
	})
	r.GET("/GetFile/:name", DowFile)
	//r.Run()
	r.Run("0.0.0.0:8080")
}

 2.2后端代码组成样式

简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】,golang语言实战代码,音视频,服务器,前端,golang程序应用,golang

 三、代码经历过程

简单版本视频播放服务器V2
https://blog.csdn.net/wtt234/article/details/131752840

简单版本视频播放服务器V1
https://blog.csdn.net/wtt234/article/details/131708946


简单播放器的打包过程,在不同平台如何打包事项
https://blog.csdn.net/wtt234/article/details/131728078

 到这里经过几次修改基本完成了一个简单的视频服务,为家庭使用可以的,前端界面也优化了多个版本,以及打包过程文章来源地址https://www.toymoban.com/news/detail-577125.html

到了这里,关于简单版本视频播放服务器V3-前端优化-播放器在左,列表在右侧【推荐】【完成】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker部署SRS实时视频服务器,rtmp推流,用WebRTC播放

    SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181 大家可以先去gitub上面看使用说明,地址是:v4_CN_Home · ossrs/srs Wiki · GitHub 然后我们通过docker去启动SRS,这些文档里面都有,就不用多说了,然后我们可以用rtmp推流 用WebRTC播放,首先要支持WebRTC我们需要

    2023年04月11日
    浏览(63)
  • 基于javacv(推流),nginx(流媒体服务器),VCL(播放器)搭建直播视频

    目录 1.获取RTSP地址 2.搭建流媒体服务器 2.1下载资源 下载nginx  下载rtmp组件  启动nginx 测试工具(由于java代码调试问题,所以这里先下载一个转码推流的工具,其中javacv的原理也是它)可忽略  下载VLC(测试视频是否成功)  2.2测试向流媒体服务器推流 3.转码  4.查看监控数

    2024年02月06日
    浏览(85)
  • 使用EasyDarwin + ffmpeg 搭建流媒体服务器,实现多台智能电视同步播放宣传视频

    近期单位用户提出需求,需要在单位内部的9台安卓智能电视(小米电视)上同步播放用户提供的宣传视频,希望能够做到所有电视音视频同步播放(电视均位于食堂内部,使用内置扬声器,各电视间音频延迟不同会导致混响) 。 由于电视在安装时只预留了电源线,使用HDM

    2024年02月10日
    浏览(79)
  • Android 内置RTSP/RTMP服务器,实现局域网内视频推流与播放

    工作中有一个需求,在同一个局域网内, 需要将Android平板端(车机)上的摄像头上的画面,实时传输到手机上进行播放。 对于这个需求,我们想到了用 RTSP/RTMP 进行推流,然后在手机端拉流进行播放。 这个技术方案的主要技术点有 平板端内置 RTSP/RTMP 服务器 平板端获取摄像头

    2023年04月27日
    浏览(94)
  • Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放

    开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放: 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_srs按需拉流_霸道流氓气质的博客-CSDN博客 上面讲了ZLMediaKit的使用流

    2024年02月11日
    浏览(66)
  • 使用jsmpeg低延时播放rtsp视频流(注:该方式在websocket服务器搭建好的情况下使用)

    注:本文仅在局域网下验证 1、安装jsmpeg     使用npm方式安装(注:此方式安装无法进行二次开发) npm install jsmpeg -s  2、播放与使用 (1)引入方式(npm方式安装) import  JSMpeg from \\\'jsmpeg\\\' (2)引入方式(使用源码方式) import JSMpeg from \\\'xx/jsmpeg.min.js\\\'         //from后面的引用

    2024年02月09日
    浏览(54)
  • 【网络编程】实现一个简单多线程版本TCP服务器(附源码)

    accept 函数是在服务器端用于接受客户端连接请求的函数,它在监听套接字上等待客户端的连接,并在有新的连接请求到来时创建一个新的套接字用于与该客户端通信。 下面是 accept 函数的详细介绍以及各个参数的意义: sockfd: 是服务器监听套接字的文件描述符,通常是使用

    2024年02月13日
    浏览(53)
  • 关于前端vue打包项目以及静态网站部署项目到阿里云ECS云服务器初学简单教程

    准备工作: 1.首先进入https://ecs.console.aliyun.com/ 领取或者购买一台简单的ECS云服务器。 进入网站注册登录后拉到页面最下面或者顶部搜索免费云服务器领取立即试用 ,当然富哥花钱买一台服务器也行。   创建完了以后可以进入云服务ECS工作台,然后就是以下界面   点击右边

    2024年02月04日
    浏览(73)
  • RH1288V3 - 初识物理服务器

    如果你拥有一台物理服务器(不是云服务器) 个人比较推荐你用物理服务器,虽然性能会比云要来的差,但是不用每月交钱上。云服务固然方便,但是几个核的性能和一点存储,想做一个动漫网站固然要很多mp4这种影视资源,云服务器真是没有任何优势。二者,物理服务器可以

    2024年02月11日
    浏览(72)
  • Python模拟MQTT v3.1.1服务器

    示例代码 运行结果 解决办法: 降低websockets版本 新报错: 解决办法 : 根据错误信息,看起来问题出在您的MQTT服务器配置中缺少了\\\"listeners\\\"配置项。您可以在实例化Broker对象时,提供一个有效的配置,包括\\\"listeners\\\"配置项。 参考:《mqtt 客户端和服务端搭建及基本使用详解》

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包