Ubuntu主机FFmpeg推流+云服务器Django+WebSocket接收+Web显示
1. Ubuntu主机:FFmpeg + WebSocket 推流
(1) 安装依赖
sudo apt update
sudo apt install -y ffmpeg websocat
(2) 推流命令
将 /dev/video0
的摄像头数据通过 H.264 编码,封装为 MPEG-TS 流,再通过 WebSocket 发送到阿里云服务器:
ffmpeg -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30 -i /dev/video0 \-c:v libx264 -preset ultrafast -tune zerolatency -f mpegts - \| websocat -b ws://阿里云服务器IP:8000/ws/video/
参数说明:
-f v4l2
: 从摄像头采集-c:v libx264
: H.264 编码-f mpegts
: 输出为 MPEG-TS 格式(适合网络传输)websocat
: 将数据通过 WebSocket 发送
2. 阿里云服务器:Django + WebSocket 接收
(1) 安装依赖
sudo apt update
sudo apt install -y python3-pip
pip3 install django channels channels_redis
(2) 创建 Django 项目
django-admin startproject video_streamer
cd video_streamer
python3 manage.py startapp stream
(3) 配置 WebSocket 接收
stream/consumers.py
import os
from channels.generic.websocket import AsyncWebsocketConsumer
import asyncioclass VideoConsumer(AsyncWebsocketConsumer):async def connect(self):await self.accept()async def disconnect(self, close_code):passasync def receive(self, text_data=None, bytes_data=None):if bytes_data:# 将数据转发给前端(通过WebSocket或存储为文件)await self.send(bytes_data=bytes_data)
stream/routing.py