192.168.10.129/cam/realmonitor?channel=1&subtype=0,用vlc可以直接播放。但在浏览器会报ERR_UNKNOWN_URL_SCHEME。那如何在浏览器中播放呢。
以下列出几种方案。
1、安装插件(chrome最新版基本都不支持)
类如:kurento,vlc插件(谷歌浏览器版本41以下),vgx插件(不支持高版本,chrome72.0版本可用)等。
2、安装软件(中间件,基本都付费)
类如:Appemit(调用vlc插件播放rtsp),可以免安装的,目前只能windows,免费版会有提示。
猿大师中间件(底层调用VLC的ActiveX控件,实现在主流浏览器网页中内嵌播放多路RTSP的实时视频流),中间件收费的。
PluginOK(牛插)中间件。底层调用ActiveX控件VlcOcx.dll。(商业用途需付费使用)
3、服务器拉流转发及协议转换
示意图如下所示:
推流--------------服务器转发--------------拉流
方法一览:
a,vlc软件串流到http协议 ,网页显示几个视频需启动几个vlc,只适合应急场景。
b,html5 + websocket_rtsp_proxy 实现视频流直播 ,基于MSE(Media Source Extensions,W3C),扩展H5的功能。
步骤:服务器安装streamedian服务器,客户端通过video标签播放。
原型图:
价格:
c.基于nginx的rsmp转发
基于nginx实现rtmp转化,用flash实现播放。由于flash目前大多浏览器默认禁用,不推荐此方式。
步骤:安装ffmpeg工具,安装nginx。
另外nginx-rtmp-module也支持HLS协议,可以搭建基于hls的直播服务器。
d.rtsp转hls播放,通过ffmpeg转码
步骤:安装ffmpeg工具,ffmpeg转码。
形如:
ffmpeg -i "rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0" -c copy -f hls -hls_time 2.0 -hls_list_size 0 -hls_wrap 15 "D:/hls/test.m3u8"
缺点是直播流延时很大,对实时要求比较高的不满足要求。
案例:基于EasyDarwin拾建转码服务器。参考地址:https://blog.csdn.net/jyt0551/article/details/84189498
通过存储的m3u8去读取。
e.websocket代理推送,FFMPEG转码
此方法与a,b类似。但更实用。
以下提供两种方案:
(1)Gin+WebSocket+FFMPEG实现rtsp转码,参考:https://juejin.cn/post/6844904024072798216
通过FFMPEG把rstp转成http,ginrtsp作为转发服务器,但需要自己写相应接口,需要了解go语言。
(2)node + ffmpeg + websocket + flv.js,参考:https://juejin.cn/post/6908641550046068744
步骤:在node服务中建立websocket;通过fluent-ffmpeg转码,将RTSP 流转为flv格式;通过flv.js连接websocket,并对获取的flv格式视频数据进行渲染播放。
import WebSocket from 'ws'import webSocketStream from 'websocket-stream/stream'import ffmpeg from 'fluent-ffmpeg'// 建立WebSocket服务const wss = new WebSocket.Server({ port: 8888, perMessageDeflate: false })// 监听连接wss.on('connection', handleConnection)// 连接时触发事件function handleConnection (ws, req) { // 获取前端请求的流地址(前端websocket连接时后面带上流地址) const url = req.url.slice(1) // 传入连接的ws客户端 实例化一个流 const stream = webSocketStream(ws, { binary: true }) // 通过ffmpeg命令 对实时流进行格式转换 输出flv格式 const ffmpegCommand = ffmpeg(url) .addInputOption('-analyzeduration', '100000', '-max_delay', '1000000') .on('start', function () { console.log('Stream started.') }) .on('codecData', function () { console.log('Stream codecData.') }) .on('error', function (err) { console.log('An error occured: ', err.message) stream.end() }) .on('end', function () { console.log('Stream end!') stream.end() }) .outputFormat('flv').videoCodec('copy').noAudio() stream.on('close', function () { ffmpegCommand.kill('SIGKILL') }) try { // 执行命令 传输到实例流中返回给客户端 ffmpegCommand.pipe(stream) } catch (error) { console.log(error) }}
优点全部基于js。前端即可搞定。
参考:https://www.zhihu.com/question/29973696
面向底层,或高效率 用C:如单片机, 操作系统, 数据库实现面向上层应用面向对象编程 C++ 高效率 : VC/ QT / GTK编程, 现在WPSlinux版是QT实现的
面向对象编程JAVA, Android, 网页脚本, 也能编写PC机应用比如freemind, 也有嵌入式方面的应用.
再就是网络动态语言, jsp/php/asp , jsp一般用于大型网站, php是开源较多,主要一般网站规模不大的在用, asp 好像不温不火,
比较流行的:go python 还要懂shell脚本编程,
面向硬件的有: VHDL/verilog
matlab:算法仿真
无论选哪种语言,商业开发基本上都会涉及到数据库, db2、oracle mysql好像比较出名
小型数据库sqlite,Android 就是用的这个
总之, 各有各的用处, 看你对哪方面感兴趣, 要学的有很多.
我是学嵌入式的,看一下我收集的嵌入式方面需要掌握的知识与技能:
=================================================================
Altium Designer 原理图和PCB制作
STM32处理器
需求分析、设计方案
嵌入式软硬件系统的设计、测试;
技术文档;
生产工艺技术支持。
-------------------------------------------------------------------
Linux平台下进行软件开发
音视频编解码SDK的进行封装
音视频流存储、传输模块,设计、实现、优化及测试
编写相关开发文档、技术支持文档、使用说明
=====
C/C++ 良好的编程习惯与文档规范;
Linux 下进程间通信及内存管理机制
熟悉H.264,G.7xx,AMR,AAC等音视频编码
熟悉MP4,avi等文件格式
熟悉rtsp/rtp、rtmp、http
海思或者amberalla平台
通和协调能力
----------------------------------------------------------------------------
熟悉1种以上数据库
--------------------------------------------------------------
机器人开发经历或参加机器人相关研究
熟悉Android framework,以及Linux驱动开发,调试,有QT程经验
熟练阅读电路原理图,以及PCB layout;
有效地对新人或普通开发工程师进行辅导
---------------------------------------------------------------------------
悉嵌入式环境下的 C/C++ 语言程序设计和汇编语言程序设计
精通个域网通信协议,如无线网络(Wi-Fi、BlueTooth、Zigbee等)等协议,具有智能家居产品相关经验
RM环境下的系统开发环境与工具,包括平台移植、驱动开发及调试,等等;
数字电路模拟电路基础,熟悉uCOS,Linux,RThread,FreeRTOS等嵌入式操作系统内核程序设计
深入掌握一种或几种嵌入式处理器系统(熟悉Arm、X86、PPC、MIPS)
---------------------------------------------------------------------------
WIFI模块
----------------------------------------
懂日语、32岁以下
-------------------------------------------------------------------------------------
bootloader、内核板级移植、集成。
海思或者amberalla平台开发经验
外设接口和通信协议,包括USB,CAN,LIN,TCP/IP等多种汽车和工业总线技术
无线通讯模块、蓝牙、GPRS、有线及无线通讯
物联网电子消费品产品开发经验
电气电子产品开发和项目管理经验
--------------------------------------------------------------------------------------
精通如下串行总线协议:USB/I2C/SPI/I2S/UART
悉Boot Loader,
具有Linux BSP经验者
具备良好沟通、协作、学习能力,能够主动在项目中承担起责任
写和移植内核设备驱动
裁剪和优化的Linux内核
----------------------------------------------------------------------------------
团队管理经验
硬件基本原理,能看懂原理图和PCB
精通linux内核架构,熟悉多线程编程
精通多种常用传输总线协议,如IIC、SPI、CAN、IIS;
对无线网络数据传输有较深了解;使用过无线传输模块,GPRS、3G等
WIFI驱动、WIFI应用、蓝牙驱动、蓝牙应用有较深的了解
对USB驱动有较深了解,做过USB设备驱动、对SD卡和TF卡
车载电子设备
熟悉视频、音频处理,熟悉视频、音频编解码处理;
熟悉安卓架构,能编写安卓中间件
ARM或DSP嵌入式软件开发经验
-----------------------------------------------------------------------------------------------
入式Linux系统体系结构设计,系统内核维护;
根据需求制定系统整体软件方案,划分软件模块;
优化uboot、Linux内核相关模块
深入了解ARM(Cortex-A8以上)体系结构
常用驱动程序及相关协议,如:Framebuffer、以太网、USB、CAN总线、I2C、SPI等。可以对驱动程序进行深度的优化;
对视频/图像有较深刻认识,了解视频/图像编解码相关知识;
使用OPenGL完成图像渲染;
负责研究和开发3D引擎到Opengl的标准化接口;
深入理解QT底层实现机制。熟悉QT在不同平台之间的移植
Ti/Freescale ARM开发经验
认真对待每一项工作,同事之间团结互助;
良好的英文交流能力
--------------------------------------------------------------------------------------------
熟悉wifi,nrf2401,camera,audio 等外围模组及相关协议
熟悉ucos—2
智能家居方面的实际开发经验
----------------------------------------------------------------------------------
单片机、ARM、Cotrex-M3/M4等处理器
掌握网络、UART、LCD、SPI、I2C、RS485
搭建嵌入式Linux软硬件系统
熟悉Linux内核机制
熟练完成嵌入式下linux的驱动开发与应用开发。
熟悉TCP/IP协议栈,Socket通信编程
熟悉HTTP、SNMP、DHCP等应用层协议。
CAN总线、WIFI、Zigbee等相关产品开发经验
良好的语言表达沟通能力和团队合作精神
------------------------------------------------------------------------------------
broad expertise
-----------------------------------------------------------------------------------------
具有linux,freeRTOS等主流嵌入式系统开发经验
熟悉TCP/IP、WIFI、蓝牙BLE、I2C等协议
有音频、Andorid开发、Java虚拟机、云端数据同步、智能家居产品等开发经验
嵌入软件, 驱动,协议栈,协议开发经验
精通TCP/IP协议
用网络协议,了解防火墙, 路由交换技术
无线协议802.11,802.1X
熟悉Wi-Fi、ZigBee、蓝牙,模拟信号、UART、RS232、RS485、各种现场总线、HART-IP、TCP/IP、OPC、OPC UA、BACNet等协议
立志于一起打造互联网+工业。
---------------------------------------------------------------------------------------------
熟悉8583、EMV、PBOC等相关行业知识
3年以上 嵌入式 Linux 驱动开发经验
读懂硬件图纸
熟练掌握 i2c、i2s、spi、gpio、uart、usb、lcd/framebuffer 等常用 Linux 驱动
Linux 中断程序开发;
电机控制驱动、Linux系统管理、系统版本升级 等开发经验
---------------------------------------------------------------------------------------------
雷达、超声项目相关的研发
扎实全面的硬件电路设计、调试能力,熟悉模拟、数字及混合电路;
拥有DSP(TI TMS系列为佳),ARM, FPGA/CPLD 设计经验;
解决并优化整体系统的信噪比、电磁屏蔽、能耗管理和热耗散管理
熟悉PCB 布线,制版和调试
有担任规模量产项目技术研发经历
掌握交叉编译环境、熟练典型Linux系统调用和应用程序开发
熟练掌握至少一种版本管理工具(如:SVN、GIT等);
对Linux系统内核及驱动程序有深入理解
对Linux内核进行深度定制和修改
------------------------------------------------------------------------------------------------
熟悉uC/OS下Camera,LCD、WIFI、RIL、IIC、SPI、UART、2G、各类型Sensor等各种外设驱动驱动模型
做过传统单片机 pos 机 或类似stm32 pos机项目经验
熟悉PBOC协议
能够使用示波器和逻辑分析仪等
--------------------------------------------------------------------
C/C++ 网络及多线程编程
熟悉OpenWrt开发,移植
悉Qualcomm SDK者优先,有一定的算法基础,
----------------------------------------------------------------
用有电子工具软件PROTEL\PADS等
网关产品,协议转换类产品编程经验
精通TCP/IP,ZIGBEE,MQTT协议,了解至少一种工业总线;
能独立承担产品的设计规划,周边接口硬件电路设计,功能软件设计;
---------------------------------------------------------------------
熟悉C/C++/JAVA/J2ME语言编程
入式Linux操作系统,Linux驱动开发
精通Android开发平台及Framework框架原理
熟悉基本无线协议;
责任心和进取心
团队协作
善于沟通和表达
独立设计优化和移植HAL层外设模块,如Camera、WiFi、蓝牙、触摸屏等模块;
将Android系统移植到特定硬件平台上
给上层app及UI开发提供支持
--------------------------------------------------------------------------
移植和底层驱动
熟悉Linux内核架构
Makefile、shell等脚本语言
熟悉RTP,RTCP,RTSP等流媒体协议
熟练使用Ethereal、Wireshark和Tcpdump等网络协议分析工具
DVR、MDVR、DVS等监控产品开发经验
-------------------------------------------------------------------------
产品的规划设计、安卓等平台的底层驱动程序编写调试
主板调试及外设调试,确保项目中驱动部分的质量和进度
独立完成各业务模块的驱动开发工作以及技术难题攻关、技术评估;
模块的需求分析、详细设计、编码实现、和单元自测,参与产品需求分析并制定技术实施方案,根据产品功能需求设计并完成软件实现,了解项目需求和业务流程。
2年以上单片机系统软件开发经验,2年以上的Android系统软件驱动开发经验(有成熟产品移植开发经验),有WINCE平台开发经验更佳;
uboot、kenel Driver开发以及HAL层等开发、调试和集成工作
熟悉ARM系列处理器架构,包括简单的ARM处理器(Cortex-M3/M0)和复杂的多核ARM处理器的应用设计经验;
无线网络数据传输有较深了解;使用过无线传输模块,GPRS、3G等;
对USB驱动有较深了解,做过USB设备驱动、对SD卡和TF卡等实际应用上有独到的心得体会或做过车载电子设备
够独立解决各类底层疑难问题,能够同硬件和软件应用工程师一起合作解决复杂问题;
责任心,主动学习,团队沟通协作,文档输出, 英语读写
---------------------------------------------------------------------------------
精通Wifi协议及应用开发,熟悉博通与MTK系列wifi芯片;
熟悉TCPIP协议,熟悉HTTP、FTP等网络协议应用和开发
熟悉Wifi、射频产品的生产和测试
必须有broadcom、Atheros或MTK的一种wifi方案经验
自我驱动的学习和工作习惯
对未知技术和领域能快速掌握并实践
沟通、协调, 项目管理、团队管理
---------------------------------------------------------------------------------------
Socket编程,多线程编程,进程间通信
熟悉TCP/IP协议;熟悉HTTP,UDP/RTP/RTCP/RTS等流媒体传输与控制协议;
熟悉音视频压缩技术
------------------------------------------------------------
悉实时操作系统如ThreadX,FreeRTOS
熟悉串口,TCPIP协议,WIFI,GPIO,JTAG等底层编程
家电无线模块软件开发
不同硬件平台选型开发
撰写并维护相关技术文档
-----------------------------------------------------------------------
通32 bit ARM单片机系统开发,熟悉Atmel芯片
精通uCOSII系统,有相关开发经验
OS(uCOSII与Linux)移植、驱动编写与应用软件开发
------------------------------------------------------------------------
主流单片机、ARM、FPGA硬件平台
熟悉VHDL/Verilog语言进行FPGA开发;
有效实现板级系统间数据通讯,
了解卫星通讯协议
熟悉使用LabView进行数据采集和系统测试
独立进行PCB开发并联系相关厂家进行生产
熟悉中国电子信息产业链,不仅懂得怎样设计, 还要知道怎样利用现有市场产品, 经济快速有效地实现自己的设计
了解电子产品国际市场, 能够从市场角度去开发产品;
英语能力可以应付国际化工作环境, 能够熟练使用法语德语更好。
在本专业领域内有丰富人脉,能够在全世界范围内为具体问题找到合适的人;