这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发,

下载文章底部的源码,我是用vscode打开,

首先在第一个终端运行 npm run http-server 这个指令是运行http服务,手机端直接运行http://ip:8000/mpegts.html 即可看到推流过来的视频

新起一个终端运行 npm run ws-server,服务启动后,即可以通过ffmpeg进行推流。

推流过程如下:

推流视频文件:

ffmpeg -re -i E:\2.mp4    -codec:v mpeg1video -s 640x1236 -b:v 3000k -r 30 -bf 0   -codec:a mp2 -ar 44100 -ac 1 -b:a 128k  -f mpegts    tcp://localhost:8081

推流摄像头流:

ffmpeg -f dshow -i video="Integrated Camera" -codec:v mpeg1video -s 640x1236 -b:v 3000k -r 30 -bf 0 -f  mpegts tcp://localhost:8081

桌面流:

ffmpeg -f gdigrab -framerate 1 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop  -codec:v mpeg1video -s 640x1236 -b:v 3000k -r 30 -bf 0   -f mpegts  tcp://localhost:8081

这里8081 就是ws-Server接收推流的端口, 而8082 是websocket的端口,httpserver的网页就是通过8082进行数据传输。

以上步骤完成,在手机端即可以看到低延时的视频文件。

顺便说一下mse:

源码里也有对应的页面播放mse视频流,但是mse的移动端兼容性太差

fmpeg格式的ffmpeg推送如下:

摄像头:

ffmpeg -f dshow -i video="Integrated Camera" -c:v libx264 -vb 448k -vsync 2 -pix_fmt yuv420p -profile:v
high -f mp4 -movflags frag_keyframe+default_base_moof -reset_timestamps 1 -frag_duration 70000

tcp://localhost:8081

桌面:

ffmpeg -f gdigrab -framerate 1 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop -c:v libx264 -vb
448k -vsync 2 -pix_fmt yuv420p -profile:v high -f mp4 -movflags frag_keyframe+default_base_moof -

reset_timestamps 1 -frag_duration 70000 tcp://localhost:8081

文件流:

ffmpeg.exe -re -i E:\2.mp4 -vcodec copy -acodec copy -pix_fmt yuv420p -f mp4 -movflags frag_keyframe
+default_base_moof -reset_timestamps 1 -frag_duration 70000 tcp://localhost:8081/

源码下载

基于node.js 的 websocket的移动端H5直播开发的更多相关文章

  1. 基于node.js的websocket上传小功能

    一.node.js 在目录里新建index.js var ws = require("nodejs-websocket"); console.log("开始建立连接... ...

  2. 基于node.js的websocket 前后端交互小功能

    一.node var ws = require("nodejs-websocket"); console.log("开始建立连接...") var server ...

  3. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下:http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.js ...

  4. 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具

    认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...

  5. Pomelo:网易开源基于 Node.js 的游戏服务端框架

    Pomelo:网易开源基于 Node.js 的游戏服务端框架 https://github.com/NetEase/pomelo/wiki/Home-in-Chinese

  6. Windows下Node.js+Express+WebSocket 安装配置

    Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...

  7. 基于Node.js的实时推送 juggernaut

    基于Node.js的实时推送 juggernaut Juggernaut 基于 Node.js 构建.为浏览器和服务器端提供一个实时的连接,可在客户端和服务器端进行数据的实时推送,适合多角色游戏.聊天 ...

  8. 《基于Node.js实现简易聊天室系列之详细设计》

    一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次 ...

  9. LIGHTX-CMS —— 基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客系统

    概述 LIGHTX-CMS 是我基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客发布系统. 项目本身可以拿来部署个人博客网站,同时我认为其也适合用以新手学习 Node ...

随机推荐

  1. Spark-Streaming DirectKafka count 案例

    Spark-Streaming DirectKafka count 统计跟直接 kafka 统计类似,只不过这里使用的是 Direct 的方式,Direct方式使用的 kafka 低级API,不同的地 ...

  2. 「SNOI2019」积木

    传送门 Description 有一块\(n\)行\(m\)列的网格板, \(n,m\)都是奇数.网格上平铺着一些\(1*2\)的积木.积木可以旋转,不能重叠.网格板上只有一格的空位. 你可以做两种操 ...

  3. SSH框架整合3——原生态SessionFactory

    ================================================web.xml============================================= ...

  4. Java 12 骚操作, String居然还能这样玩!

    Java 13 都快要来了,12必须跟栈长学起! Java 13 即将发布,新特性必须抢先看! 栈长之前在Java技术栈微信公众号分享过<Java 11 已发布,String 还能这样玩!> ...

  5. 重新学习MySQL数据库12:从实践sql语句优化开始

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/79394168 本文不堆叠网上海量的sql优化技巧或 ...

  6. Windows下多个JDK版本的切换方法

    问题 因我之前在window中无法命令行输入,后来发现是电脑中存在多个JDK,导致设置混乱. 于是,我继续深入研究了当电脑存在多个JDK的情况下,如何设置想要的JDK版本. 步骤 1.更改环境变量 进 ...

  7. Web前端开发规范 之html命名规范

    1.文件名称命名规则 统一用小写的英文字母.数字和下划线,不得包含汉字空格和特殊符号 2.索引文件命名 一般用index为名字  如index.html  index.jsp 3.各子页面的命名规则 ...

  8. JavaBitSet学习

    一.背景 之前公司项目需要对会员人群进行去重过滤,人群的维度是user_id: 因此采用了BitSet做简单的去重,方案将user_id作为bitset中的bit索引: 通过and\or\xor基础运 ...

  9. 清除JAVA 项目中的注释

    package com.lookcoder.inschool.utils; import java.io.BufferedReader; import java.io.File; import jav ...

  10. [译]在你的GitHub主页固定仓库

    原文来源:https://github.blog/2016-06-16-pin-repositories-to-your-github-profile/ 您现在可以在GitHub主页上展示最能代表您工 ...