Ubuntu主机FFmpeg推流+云服务器Django+WebSocket接收+Web显示

发布于:2025-07-03 ⋅ 阅读:(16) ⋅ 点赞:(0)

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 asyncio

class VideoConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        await self.accept()

    async def disconnect(self, close_code):
        pass

    async def receive(self, text_data=None, bytes_data=None):
        if bytes_data:
            # 将数据转发给前端(通过WebSocket或存储为文件)
            await self.send(bytes_data=bytes_data)
stream/routing.py

网站公告

今日签到

点亮在社区的每一天
去签到