FLV视频播放web项目实践教程

需积分: 9 0 下载量 93 浏览量 更新于2024-11-09 收藏 82.45MB RAR 举报
资源摘要信息:"video_flv_demo.rar是一个简单的web项目,演示了如何利用video.js和flv.js在jsp页面上播放flv格式的视频。该项目包含了前端开发中需要用到的相关库文件,包括video-js.css、video.min.js、flv.min.js以及videojs-flvjs.min.js。" 知识点详细说明: 1. FLV视频格式: FLV(Flash Video Format)是一种在互联网上广泛使用的视频格式,最初由Macromedia公司开发。FLV格式的视频文件体积较小,适合网络传输,因此在在线视频流媒体服务中非常流行。随着Adobe对Flash的支持下降,FLV格式的使用率有所减少,但仍然在一些老旧的系统和特定场景中被使用。 2. video.js: video.js是一个开源的HTML5视频播放器,它提供了一个易于定制的播放器界面,并且可以在不同的设备和浏览器上播放视频。video.js支持多种视频格式,包括但不限于HLS、DASH、MP4、WebM和FLV等。video.js使用JavaScript和CSS构建,可以方便地集成到Web项目中。 3. flv.js: flv.js是由B站开源的一个JavaScript库,它允许在不依赖Flash Player的情况下,在浏览器中播放FLV格式的视频。该库通过WebAssembly技术来实现FLV格式的解码,从而提高了视频播放的效率和兼容性。flv.js通常与video.js结合使用,以实现更加丰富的视频播放功能。 4. JSP页面: JSP(JavaServer Pages)是一种动态网页技术,允许开发者将Java代码嵌入到HTML页面中。在JSP页面中,可以编写Java代码片段来生成动态内容,实现Web应用程序的逻辑。JSP经常与Servlets一起使用,以提供后端处理和动态网页内容生成的能力。 5. Web项目结构: 一个典型的Web项目包括前端和后端两个部分。前端通常负责展示用户界面,而后端则处理业务逻辑、数据库交互等。在视频播放项目中,前端页面需要嵌入video.js和flv.js来实现视频播放功能。后端则负责提供视频文件的存储和传输服务。 6. 前端库文件: - video-js.css:这是video.js播放器的样式文件,用于美化播放器界面。 - video.min.js:这是video.js的核心JavaScript库文件,通过压缩版本以减少加载时间。 - flv.min.js:这是flv.js的压缩版本,用于实现FLV视频的播放。 - videojs-flvjs.min.js:这是video.js和flv.js结合使用的封装库文件,它简化了在video.js中使用flv.js的过程。 7. 实现FLV视频播放的关键步骤: - 引入必要的库文件到项目中。 - 在JSP页面中编写HTML和JavaScript代码,初始化video.js播放器。 - 使用flv.js库来扩展video.js播放器,支持FLV格式的视频源。 - 设置视频源地址,确保视频文件可以被正确地加载和播放。 通过上述知识点的介绍,可以看出"video_flv_demo.rar"这个压缩包包含了一个典型的Web视频播放项目结构,展示了一个简单的案例,用于在Web页面上播放FLV格式的视频。这个项目对于初学者来说是一个很好的实践材料,可以从中学习到如何结合不同的前端库来开发一个基本的视频播放功能。同时,它也展示了如何在不支持FLV播放的现代浏览器中,通过flv.js库来解决兼容性问题。

import cv2 import sys import os import time from PyQt5 import QtGui #重新导入 from PyQt5 import QtCore #重新导入 from showPic import Ui_MainWindow from PyQt5.QtCore import * from PyQt5.QtGui import * #导入的外面 from PyQt5.QtWidgets import * camera_path = 0 # 0:自带摄像头 1:外接摄像头 "xxx.mp4" "rtsp://admin:pwd@192.168.2.10/cam/..." capture = cv2.VideoCapture(camera_path) # 初始化播放器 流媒体 fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # XVID/DIVX MPEG MJPG X264 video_writer = cv2.VideoWriter("image/myself.mp4", fourcc, 25, (960, 540)) # 存放路径、、帧率fps、尺寸(且保证下面的frame也是这个尺寸) class videoShow(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.dir_path = r"E:\pycharm\new_subject\image/" self.pushButton_play.clicked.connect(self.play_video) self.pushButton_pause.clicked.connect(self.pause_video) def play_video(self): self.playing = True def pause_video(self): self.playing = False def timer_pic(self): image_name = self.dir_path + self.file_list[self.n] url = image_name pic_image = cv2.imread(url) pic_image = cv2.cvtColor(pic_image, cv2.COLOR_BGR2RGB) # 将BGR格式图像转换成RGB height, width = pic_image.shape[:2] pixMap = QImage(pic_image.data, width, height, width*3, QImage.Format_RGB888) # 将RGB格式图像转换为八位图 pixMap = QPixmap.fromImage(pixMap) ratio = max(width/self.label.width(), height/self.label.height()) pixMap.setDevicePixelRatio(ratio) # 根据图片比例显示 self.label.setAlignment(Qt.AlignCenter) # 设置居中 self.label.setPixmap(pixMap) if self.playing: flag, frame = capture.read() if flag is False: return frame = cv2.resize(frame, (960, 540)) video_writer.write(frame) cv2.namedWindow("video", 0) cv2.imshow("video", frame) key = cv2.waitKey(25) if key == 27: video_writer.release() cv2.destroyAllWindows() sys.exit(0) if __name__ == '__main__': app = QApplication(sys.argv) ui = videoShow() ui.show() sys.exit(app.exec_()) 优化这段代码,实现录制视频以及点击按钮实现录制、播放、暂停

2023-07-15 上传