python+hls授权加密m3u8和二进制ts切片访问播放视频示例代码
代码语言:python
所属分类:其他
代码描述:python+hls授权加密m3u8和二进制ts切片访问播放视频示例代码,通过FFmpeg将MP4视频预先切片并用AES-128加密为HLS流。用户访问时需输入密码,后端验证通过后颁发一个有时效性的安全Token。前端hls.js播放器在请求解密密钥时,必须携带此Token。服务器在验证Token有效后才提供密钥,从而实现对视频内容的授权访问。播放器在浏览器内存中实时解密视频数据,确保了整个播放流程的安全性。
代码标签: python hls 授权 加密 m3u8 二进制 ts 切片 访问 播放 视频 示例 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import os
import subprocess
from flask import Flask, jsonify, request, send_from_directory, abort, Response
from itsdangerous import URLSafeTimedSerializer, SignatureExpired, BadTimeSignature
# --- 配置 ---
INPUT_VIDEO_PATH = "input_video.mp4"
OUTPUT_FOLDER = "video_output"
KEY_FILENAME = "enc.key"
PLAYLIST_NAME = "playlist.m3u8"
CORRECT_PASSWORD = "your-strong-password" # !!! 在生产环境中请使用更复杂的密码 !!!
TOKEN_EXPIRATION_SECONDS = 3600 # Token有效期1小时
# --- Flask 应用设置 ---
app = Flask(__name__)
# !!! 在生产环境中请务必修改为一个随机且保密的字符串 !!!
app.config['SECRET_KEY'] = 'a-super-secret-key-that-you-should-change'
# --- HTML 模板内嵌 ---
# 将前端HTML/JS/CSS代码直接放入Python字符串中
HTML_TEMPLATE = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>安全HLS视频播放器</title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f2f5; }
.container { text-align: center; padding: 40px; background-color: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); }
#password-form { display: block; }
#player-container { display: none; }
h1 { color: #333; }
input[type="password"] { padding: 10px; font-size: 16px; border-radius: 4px; border: 1px solid #ccc; margin-right: 10px; }
button { padding: 10px 20px; font-size: 16px; border: none; border-radius: 4px; background-color: #007bff; color: white; cursor: pointer; }
button:hover { background-color: #0056b3; }
#message { margin-top: 15px; color: red; }
.........完整代码请登录后点击上方下载按钮下载查看















网友评论0