You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django集成RTSP流报错:找不到'transmition'视图/路由

问题解决与RTSP流实现指南

一、先修复{% url 'transmition' %}的反向解析错误

这个错误核心是Django找不到名为transmition的视图/URL模式,按以下步骤排查修正:

1. 检查应用urls.py的命名配置

确保应用的urls.py里给对应视图设置了正确的name参数,拼写要和模板里的完全一致:

# 应用目录下的urls.py
from django.urls import path
from . import views

urlpatterns = [
    # 必须设置name='transmition',且注意拼写(别把transmition写成transmission)
    path('stream/transmition/', views.transmition_view, name='transmition'),
]

2. 检查项目根urls.py的include配置

如果项目根urls.py用了命名空间,模板里的URL要带上命名空间前缀;没用到的话确保正确include应用URL:

# 项目根urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 带命名空间的写法
    path('app/', include(('your_app_name.urls', 'your_app_name'), namespace='your_app_name')),
    # 不带命名空间的写法
    # path('app/', include('your_app_name.urls')),
]

如果用了命名空间,模板里的URL要改成{% url 'your_app_name:transmition' %}

3. 确认视图函数存在

检查views.py里确实有对应的视图函数:

# 应用目录下的views.py
from django.shortcuts import render

def transmition_view(request):
    # 后续添加RTSP流逻辑
    return render(request, 'stream.html')

二、实现RTSP流传输到HTML页面

Django无法直接处理RTSP流,需要用ffmpeg把RTSP转成浏览器支持的格式(比如HTTP-FLV),以下是具体实现:

1. 安装依赖

先安装ffmpeg工具,再安装Python相关库:

pip install ffmpeg-python

2. 修改views.py实现流转换

from django.http import StreamingHttpResponse
import ffmpeg

def transmition_view(request):
    # 替换成你的实际RTSP流地址
    rtsp_url = "rtsp://your_rtsp_stream_url"

    def stream_generator():
        # 用ffmpeg将RTSP转成FLV格式输出到管道
        process = (
            ffmpeg
            .input(rtsp_url)
            .output('pipe:', format='flv', vcodec='copy', acodec='copy')
            .run_async(pipe_stdout=True)
        )
        while True:
            chunk = process.stdout.read(1024*1024)
            if not chunk:
                break
            yield chunk

    # 返回流响应,设置正确的Content-Type
    response = StreamingHttpResponse(stream_generator(), content_type='video/x-flv')
    return response

3. 修改stream.html播放流

在模板里用video标签加载转换后的流:

<!-- stream.html -->
<!DOCTYPE html>
<html>
<head>
    <title>RTSP实时流</title>
    <!-- 后续添加样式设置 -->
</head>
<body>
    <div class="stream-container">
        <h2>RTSP实时流</h2>
        <video id="rtsp-stream" controls autoplay>
            <source src="{% url 'transmition' %}" type="video/x-flv">
            你的浏览器不支持视频播放
        </video>
    </div>
</body>
</html>

三、给transmition功能添加样式设置

直接在stream.html的head标签里添加CSS样式:

<!-- stream.html的head部分 -->
<style>
/* 流容器样式 */
.stream-container {
    max-width: 1200px;
    margin: 20px auto;
    padding: 20px;
    background-color: #f5f5f5;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

/* 标题样式 */
.stream-container h2 {
    text-align: center;
    color: #333;
    margin-bottom: 20px;
}

/* 视频播放器样式 */
#rtsp-stream {
    width: 100%;
    height: auto;
    border-radius: 4px;
    border: 2px solid #ddd;
}

/* 响应式适配 */
@media (max-width: 768px) {
    .stream-container {
        margin: 10px;
        padding: 15px;
    }
}
</style>

验证步骤

  1. 启动Django开发服务器:python manage.py runserver
  2. 访问对应URL(比如http://localhost:8000/app/stream/transmition/),检查视频是否正常播放
  3. 确认模板里的{% url %}标签不再报错

内容的提问来源于stack exchange,提问作者Dan Azevedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:53:09