当前位置: 首页 > article >正文

PaspberryPi推流

1. 创建启动脚本sudo nano /usr/local/bin/rtsp-stream.sh添加内容#!/bin/bash # RTSP 音视频推流服务脚本 # 适配 Raspberry Pi 3B Camera Module USB 麦克风 # 配置项 WIDTH1280 HEIGHT720 FRAMERATE15 VIDEO_BITRATE2000000 AUDIO_DEVICEhw:1,0 # USB 麦克风根据实际情况修改 RTSP_PATHlive RTSP_PORT8554 # 日志函数 log() { echo [$(date %Y-%m-%d %H:%M:%S)] $1 | tee -a /var/log/rtsp-stream.log } log 启动 RTSP 音视频推流服务... # 检查摄像头 if [ ! -e /dev/video0 ]; then log 错误未检测到摄像头设备 /dev/video0 exit 1 fi # 检查音频设备 if ! arecord -l | grep -q card; then log 警告未检测到音频设备将以纯视频模式启动 AUDIO_ENABLED0 else AUDIO_ENABLED1 log 检测到音频设备: $AUDIO_DEVICE fi # 启动 MediaMTX如果未运行 if ! pgrep -x mediamtx /dev/null; then log 启动 MediaMTX 服务器... /usr/local/bin/mediamtx sleep 2 fi # 根据音频是否可用选择推流模式 if [ $AUDIO_ENABLED -eq 1 ]; then log 启动音视频同步推流 (视频音频)... # 使用进程替换实现双向管道 # 视频流 - FFmpeg # 音频流 - FFmpeg (通过文件描述符) rpicam-vid \ --width $WIDTH \ --height $HEIGHT \ --framerate $FRAMERATE \ --codec h264 \ --profile main \ --level 4.0 \ --inline \ --bitrate $VIDEO_BITRATE \ -t 0 \ -o - \ --nopreview | \ ffmpeg \ -hide_banner \ -loglevel warning \ -fflags nobuffer \ -flags low_delay \ -thread_queue_size 512 \ -i - \ -f alsa \ -thread_queue_size 1024 \ -ac 1 \ -ar 44100 \ -i $AUDIO_DEVICE \ -c:v copy \ -c:a aac \ -b:a 128k \ -preset ultrafast \ -tune zerolatency \ -f rtsp \ -rtsp_transport tcp \ rtsp://localhost:$RTSP_PORT/$RTSP_PATH \ 2 /var/log/rtsp-stream.log else log 启动纯视频推流 (无音频)... rpicam-vid \ --width $WIDTH \ --height $HEIGHT \ --framerate $FRAMERATE \ --codec h264 \ --profile main \ --level 4.0 \ --inline \ --bitrate $VIDEO_BITRATE \ -t 0 \ -o - \ --nopreview | \ ffmpeg \ -hide_banner \ -loglevel warning \ -fflags nobuffer \ -flags low_delay \ -i - \ -c:v copy \ -preset ultrafast \ -tune zerolatency \ -f rtsp \ -rtsp_transport tcp \ rtsp://localhost:$RTSP_PORT/$RTSP_PATH \ 2 /var/log/rtsp-stream.log fi log RTSP 推流已停止赋予执行权限sudo chmod x /usr/local/bin/rtsp-stream.sh2. 创建 Systemd 服务文件sudo nano /etc/systemd/system/rtsp-stream.service添加内容[Unit] DescriptionRTSP Audio/Video Streaming Service Documentationhttps://github.com/bluenviron/mediamtx Afternetwork.target sound.target Wantsnetwork.target sound.target [Service] Typesimple # 运行用户树莓派默认用户 Userpi Grouppi # 工作目录 WorkingDirectory/home/pi # 环境变量 EnvironmentPATH/usr/local/bin:/usr/bin:/bin EnvironmentLD_LIBRARY_PATH/usr/lib EnvironmentDISPLAY:0 # 启动命令 ExecStartPre/bin/sleep 5 ExecStartPre/bin/bash -c until arecord -l /dev/null 21; do sleep 1; done ExecStart/usr/local/bin/rtsp-stream.sh # 重启策略 Restartalways RestartSec5 StartLimitInterval60s StartLimitBurst3 # 进程管理 KillModemixed KillSignalSIGTERM TimeoutStopSec10 # 日志输出 StandardOutputappend:/var/log/rtsp-stream.log StandardErrorappend:/var/log/rtsp-stream.log SyslogIdentifierrtsp-stream # 资源限制Pi 3B 优化 CPUQuota80% MemoryMax256M [Install] WantedBymulti-user.target3. 创建 MediaMTX 服务可选分离部署如果需要单独管理 MediaMTXsudo nano /etc/systemd/system/mediamtx.service[Unit] DescriptionMediaMTX RTSP Server Afternetwork.target [Service] Typesimple Userpi ExecStart/usr/local/bin/mediamtx /usr/local/etc/mediamtx.yml Restartalways RestartSec5 [Install] WantedBymulti-user.target4. 创建日志轮转配置防止日志文件无限增长sudo nano /etc/logrotate.d/rtsp-stream/var/log/rtsp-stream.log { daily rotate 7 compress delaycompress missingok notifempty create 644 pi pi sharedscripts postrotate /bin/kill -HUP $(cat /var/run/syslogd.pid 2 /dev/null) 2 /dev/null || true endscript }5. 启用并启动服务# 重新加载 systemd sudo systemctl daemon-reload # 创建日志文件 sudo touch /var/log/rtsp-stream.log sudo chown zhaohongbo:zhaohongbo /var/log/rtsp-stream.log # 启用开机自启可选先只启用 rtsp-stream它会自动启动 MediaMTX sudo systemctl enable rtsp-stream.service # 启动服务 sudo systemctl start rtsp-stream.service # 查看状态 sudo systemctl status rtsp-stream.service # 查看实时日志 sudo tail -f /var/log/rtsp-stream.log客户端播放地址rtsp://树莓派IP地址:8554/live例如rtsp://192.168.1.100:8554/live常用管理命令命令作用sudo systemctl start rtsp-stream启动服务sudo systemctl stop rtsp-stream停止服务sudo systemctl restart rtsp-stream重启服务sudo systemctl status rtsp-stream查看状态sudo journalctl -u rtsp-stream -f实时查看日志sudo systemctl disable rtsp-stream禁用开机自启故障排查音频设备未找到# 查看可用音频设备 arecord -l # 测试录音 arecord -D hw:1,0 -f S16_LE -c 1 -r 44100 -d 5 test.wav aplay test.wav修改脚本中的AUDIO_DEVICEhw:X,Y为实际设备号。服务启动失败# 检查详细错误 sudo journalctl -u rtsp-stream -n 50 --no-pager # 手动测试脚本 sudo -u pi /usr/local/bin/rtsp-stream.sh延迟过高编辑脚本在 FFmpeg 中添加-fflags nobuffer -flags low_delay \ -max_delay 500000 -bufsize 0 \需要我添加自动检测音频设备的逻辑或者优化WiFi 网络波动重连的功能吗

相关文章:

PaspberryPi推流

1. 创建启动脚本sudo nano /usr/local/bin/rtsp-stream.sh添加内容:#!/bin/bash# RTSP 音视频推流服务脚本 # 适配 Raspberry Pi 3B Camera Module USB 麦克风# 配置项 WIDTH1280 HEIGHT720 FRAMERATE15 VIDEO_BITRATE2000000 AUDIO_DEVICE"hw:1,0" …...

ChatGPT Instagram内容策略失效真相(92%运营者忽略的算法适配层)

更多请点击: https://intelliparadigm.com 第一章:ChatGPT Instagram内容策略失效的底层归因 Instagram 的算法演进与用户行为迁移,正系统性瓦解基于通用大模型(如 ChatGPT)生成的“模板化内容策略”。其失效并非源于…...

EchoType开源键盘固件:基于状态感知的智能输入引擎深度解析

1. 项目概述:从“EchoType”看开源键盘固件的深度定制最近在键盘客制化圈子里,一个名为“EchoType”的项目开始被一些资深玩家频繁提及。它的GitHub仓库地址是ljyou001/echotype,从名字上你就能猜到,这大概率是一个与键盘固件、打…...

安卓全局音效处理:RootlessJamesDSP原理、配置与调优实战

1. 项目概述:在移动音频领域实现高自由度音效处理如果你是一名对手机音质有追求的发烧友,或者是一位喜欢折腾系统级音频设置的安卓用户,那么“RootlessJamesDSP”这个名字你很可能不会陌生。简单来说,这是一个无需获取安卓系统最高…...

3个关键策略:qmcdump如何高效解密QQ音乐加密音频文件

3个关键策略:qmcdump如何高效解密QQ音乐加密音频文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否…...

哔哩下载姬DownKyi:B站视频下载的终极免费解决方案

哔哩下载姬DownKyi:B站视频下载的终极免费解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff…...

别再搞混了!DCI-P3、Display P3、sRGB色彩空间到底差在哪?给设计师和开发者的实用指南

别再搞混了!DCI-P3、Display P3、sRGB色彩空间到底差在哪?给设计师和开发者的实用指南 打开设计软件的色彩配置选项,你是否曾被DCI-P3、Display P3、sRGB这些术语搞得晕头转向?当客户抱怨"这个红色在手机上看起来不一样"…...

尤克里里的前世今生:这把“跳蚤小吉他”,凭什么火遍全世界?

提到尤克里里,大家脑海里瞬间浮现的,一定是阳光、沙滩、草裙舞、海风与欢快旋律的画面!这把小小的四弦乐器,颜值清新、音色治愈,上手零门槛,不管是小朋友启蒙、成年人解压,还是旅行随手弹&#…...

如何用3分钟搞定视频字幕提取?揭秘这款本地化硬字幕提取神器

如何用3分钟搞定视频字幕提取?揭秘这款本地化硬字幕提取神器 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字…...

Fulling框架:构建完整AI智能体的工程化实践指南

1. 项目概述:从“FullAgent”到“Fulling”的智能体进化之路最近在开源社区里,一个名为“Fulling”的项目引起了我的注意。它隶属于“FullAgent”这个组织,名字本身就很有意思。“Fulling”这个词,在英语里有“使…丰满、充实”的…...

PostgreSQL 与 MySQL InnoDB 隔离级别 MVCC 核心对比

一、数据库标准四大隔离级别 SQL 标准定义 4 个隔离级别,从低到高: 读未提交(Read Uncommitted)读已提交(Read Committed,RC)可重复读(Repeatable Read,RR)串…...

终极指南:如何用3步清理Windows右键菜单,让电脑操作效率翻倍

终极指南:如何用3步清理Windows右键菜单,让电脑操作效率翻倍 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾被Windows右键菜单的…...

Docker部署Unifi控制器:从环境隔离到设备管理的完整实践

1. 项目概述:为什么选择Docker部署Unifi控制器?如果你和我一样,折腾过Ubiquiti(优倍快)的全家桶,大概率会对那个官方的硬件控制器——Cloud Key——又爱又恨。爱的是它开箱即用,把Unifi Network…...

repo2txt:Git仓库转纯文本工具,为AI分析、代码归档与审查提供完整上下文

1. 项目概述:从代码仓库到纯文本的自动化提取最近在整理个人技术笔记和项目文档时,我遇到了一个挺普遍但有点烦人的问题:如何把一个完整的Git代码仓库,包括它的目录结构、所有源代码文件以及提交历史,以一种清晰、可读…...

Agent-Layer:构建多智能体协作系统的中间层框架设计与实践

1. 项目概述:Agent-Layer 是什么,以及它想解决什么问题最近在开源社区里,一个名为lopushok9/Agent-Layer的项目引起了我的注意。乍一看这个标题,你可能会想,这又是一个关于“智能体”或“代理”的框架吧?确…...

零基础避坑指南什么工具可以录音转待办

还在手动把面试录音扒成文字再摘待办?做HR的谁没踩过这个坑:整理一小时,漏了候选人关键信息,还把待办记错,今天直接讲能直接上手的方法,零基础也不会踩坑。我做HR那几年,光整理录音待办就熬了无…...

AI编程助手集成飞书MCP:零依赖单文件实现工作流自动化

1. 项目概述:连接AI编程助手与飞书工作流 如果你和我一样,每天的工作流都离不开飞书(Lark)——写文档、拉群沟通、排会议日程、更新多维表格,然后在IDE和浏览器之间来回切换,那么你一定会对这个项目感兴趣…...

AIKit:基于容器的一站式开源大语言模型部署与微调平台

1. AIKit项目概述:一站式开源大语言模型部署与微调平台 如果你和我一样,在尝试将Llama、Mistral这类开源大语言模型(LLM)真正用起来时,被复杂的依赖、环境配置和性能优化搞得焦头烂额,那么AIKit的出现&…...

5分钟解锁你的网易云音乐:NCM解密工具全攻略

5分钟解锁你的网易云音乐:NCM解密工具全攻略 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的困扰:从网易云音乐下载的歌曲只能在特定客户端播放,无法在其他设备上欣赏&…...

最后30天,PMP备考需要一次“认知切换”

背完所有知识点的人不一定能考过,但做对这三类切换的人一定能。大家好,我又来了。距离2026年6月14日PMP考试还有大约一个月的时间。如果看了我以前的文章,你已经知道这次考试很特殊——6月这场是现行考纲的绝版场次,之后考纲将从人…...

每天140万亿次“Token“在狂奔!这组数据背后,有人赚疯,有人焦虑到失眠

> 就在今天,你刷的每一条AI回复,都在创造历史。0101 你随口的一句话,正在"吃掉"一座超级计算机你有没有这种感觉——早上用豆包写了个周报,中午让Kimi帮你总结了一份PDF,下午在微信里让AI画了一张插画&am…...

最火 AI 生图模型 Nano Banana Pro 国内免费使用指南

最近在设计圈和 AI 圈,几乎无人不知 Nano Banana Pro。它是谷歌基于 Gemini 3 Pro 打造的最新图像模型,一上线就斩获 LMArena 生图和图像编辑榜单第一名。虽然 Nano Banana 2 的历史成绩更亮眼,但实测体验发现 Pro 版更好用、操作更顺手。 为…...

机器学习在芯片电容提取中的应用与挑战

1. 电容提取的技术挑战与机器学习机遇在芯片设计流程中,电容提取是决定最终产品性能的关键环节。当设计进入物理实现阶段,工程师需要精确计算互连结构中导体间的寄生电容,这些数据直接影响时序收敛和功耗分析。传统基于数值求解器的方法&…...

物联网安全认证:X.509证书的局限与替代方案实战解析

1. 项目概述:当X.509证书认证在IoT安全中“失灵”的深度剖析几年前,一份在DEFCON大会上披露的论文揭示了一个令人震惊的事实:互联网上存在大量未受保护的MQTT代理服务器。这些“门户大开”的代理,结合MQTT协议本身允许使用通配符订…...

如何在3分钟内实现iOS设备虚拟定位?iFakeLocation实战指南

如何在3分钟内实现iOS设备虚拟定位?iFakeLocation实战指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation 在iOS应用开发与测试中,…...

工程师着装文化变迁:从安全规范到效率优化

1. 项目概述:从“着装规范”到工程师文化观察那天早上,我像往常一样,准备去马萨诸塞州纳蒂克的MathWorks公司拜访。出门前,我习惯性地套上了长裤。七月的波士顿,夏天终于姗姗来迟,气温宜人,其实…...

机器人伦理工程化:从道德困境到可解释决策系统的技术实现

1. 项目概述:当机器人需要做出道德抉择十年前,当我在实验室里调试一台协作机器人的碰撞检测算法时,一个从未预想过的问题出现了:在一条狭窄的通道里,机器人的移动路径上同时出现了一位匆忙的工程师和一个价值百万的实验…...

Zotero插件市场TOP1新势力:Perplexity Connector v2.3正式发布,支持LLM上下文感知文献溯源,仅限前500名开发者早鸟激活

更多请点击: https://intelliparadigm.com 第一章:Perplexity Zotero整合方案全景概览 Perplexity 作为新一代 AI 驱动的研究型搜索引擎,其核心优势在于实时引用溯源与上下文感知问答;Zotero 则是学术工作者广泛采用的开源文献管…...

工程师十年实战:从线缆地狱到桌面净土的理线系统指南

1. 从“线缆地狱”到“桌面净土”:一位工程师的十年理线实战录我的工作台,曾经是线缆的“百慕大三角”。USB线、耳机线、电源线、各种测试探头线……它们像藤蔓一样缠绕、垂落、堆积,最终在桌面上形成一个五彩斑斓、却令人绝望的“线缆地狱”…...

如何在Dev-C++中配置TDM-GCC编译器

在Dev-C中配置TDM-GCC编译器的步骤如下: 步骤1:下载TDM-GCC编译器 访问 TDM-GCC官网下载适用于Windows的安装包(推荐选择64位版本:tdm-gcc-xxx.exe) 步骤2:安装TDM-GCC 运行安装程序,选择默认…...