H5推流解决方案测试环境搭建指南

2023-11-12

一.部署服务器端

centos (阿里云服务器系统)
1.sudo yum install git
2.git clone https://github.com/phoboslab/jsmpeg.git
3.wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
4.source ~/.nvm/nvm.sh
5.nvm use node
6.npm i -g http-server

7.cd jsmpeg
8.npm install ws #注意这里没有-g
9.node websocket-relay 123 #后台运行 nohup node websocket-relay 123 &
10.http-server #后台运行 nohup http-server &

目前暂时还没时间搞定ffmpeg的安卓版本编译安装。但实现连接在这里:https://blog.csdn.net/u014418171/article/details/53337759
所以快速版本使用linux进行ffmpeg推流摄像头。

1.首先下载linuxmint-17.3-xfce-32bit.iso 。下载地址自行百度。 也可以安装其他版本的linux。自己保证ffmpeg编译通过就行。非本版本的linux编译ffmpeg问题,本人无力解决。
2.将其用Universal-USB-Installer-1.9.8.0.exe 制作成linux安装盘。
3.打开工业主机的bios,设置成u盘启动,插入该u盘。执行linux系统安装。
4.下载ffmpeg-3.4.2 并解压。进入解压后的目录。
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
#然后执行sudo apt-get install yasm 先安装yasm
cd ffmpeg
apt-get install build-essential
./configure
./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg
make
sudo make install
测试。 输入ffmpeg 显示有version表示安装成功

5.到https://github.com/phoboslab/jsmpeg 下载jsmpeg。这是h5播放推流视频用的。详见https://segmentfault.com/a/1190000000392586
git clone https://github.com/phoboslab/jsmpeg.git
6.现在需要安装node 和 ws来运行jsmpeg。请按照这个链接 https://blog.csdn.net/gaomengwang/article/details/77540429 完成node 和npm的安装。
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
之后需要激活nvm:
$ source ~/.nvm/nvm.sh
激活完成后,安装node
nvm install node
安装完成后,切换到该版本
nvm use node
7.安装完nodejs和npm后。先安装npm i -g http-server
8.安卓websocket 转到jsmpeg /目录 cd jsmpeg/ 安装Node.js Websocket库: npm install -g ws

====启动测试

1.进入jsmpeg
node websocket-relay 123 其中123是你的密码
2.输入http-server 启动web服务
3.你电脑的浏览器输入 http://192.168.0.124:8080/view-stream.html 这里就是等下播放h5视频的默认链接地址。其中 前面的ip是你实际的该linux工业主机ip地址。
4.现在输入ffmpeg -re -i “aa.mp4” -f mpegts -codec:v mpeg1video -s 640x480 -b:v 150k -r 30 -bf 0 -ac 1 -b:a 128k http://192.168.0.116:8081/123
来快速测试 音频推流。 前提是你的当前目录下有aa.mp4这个文件。成功的话,应该能够在浏览器的该页面中看到画面。
5.推流摄像头数据
rtmp://114.55.36.228/live/DZJ001_1
ffmpeg -f video4linux2 -framerate 25 -video_size 640x480 -i /dev/video0 -f mpegts -codec:v mpeg1video -s 640x480 -b:v 1000k -bf 0 http://192.168.0.124:8081/123

成功的话也可以在浏览器看到该画面。 结合音频输入推流,还没有做测试,请自己百度如何使用ffmpeg推流音频和视频。

关于推流地址的分配,123只是推流的密码。如果你要使用非默认的推流地址 请注意推流的时候
ffmpeg -re -i “aa.mp4” -f mpegts -codec:v mpeg1video -s 640x480 -b:v 150k -r 30 -bf 0 -ac 1 -b:a 128k http://192.168.0.116:8081/123/abc/MAC_1
这时候,需要修改view_stream.html的内容为var url = ‘ws://’+document.location.hostname+’:8082/abc/MAC_1’; 或者你可以用传参的方式令这个页面动态播放视频。本人没有深入扩展。

ffmpeg -re -i “aa.mp4” -f mpegts -codec:v mpeg1video -s 640x480 -b:v 150k -r 30 -bf 0 -ac 1 -b:a 128k http://120.79.88.118:8081/123

app内嵌网页 可参看

     #MainActivity.java
     package com.yijue.hello.mpegplayer;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;

    public class MainActivity extends AppCompatActivity {
        private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();

    }
    private void init(){
        setContentView(R.layout.activity_main);
        //WebView
        WebView browser=(WebView)findViewById(R.id.webView);
        browser.loadUrl("http://192.168.1.142:8080/view-stream.html");

        //设置可自由缩放网页
        browser.getSettings().setSupportZoom(true);
        browser.getSettings().setBuiltInZoomControls(true);

        // 如果页面中链接,如果希望点击链接继续在当前browser中响应,
        // 而不是新开Android的系统browser中响应该链接,必须覆盖webview的WebViewClient对象
        browser.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                //  重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
                view.loadUrl(url);
                return true;
            }
        });

        //启用支持javascript
        WebSettings settings = browser.getSettings();
        settings.setJavaScriptEnabled(true);


    //        webView.setWebChromeClient(new WebChromeClient() {
    //            @Override
    //            public void onProgressChanged(WebView view, int newProgress) {
    //                // TODO Auto-generated method stub
    //                if (newProgress == 100) {
    //                    // 网页加载完成
    //
    //                } else {
    //                    // 加载中
    //
    //                }
    //
    //            }
    //        });
        //WebView加载web资源
    //        webView.loadUrl("https://www.baidu.com/");
    //        webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
    //        webView.setWebViewClient(new WebViewClient(){
    //            @Override
    //            public boolean shouldOverrideUrlLoading(WebView view, String url) {
    //                // TODO Auto-generated method stub
    //                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
    //                view.loadUrl(url);
    //                return true;
    //            }
    //        });
        }

    }

#activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

ubuntu
1.自带 ffmpeg
sudo curl -L https://npmjs.org/install.sh | sh
2.sudo apt install nodejs
sudo apt install nodejs-legacy
3.sudo apt install aptitude
4.sudo aptitude install npm
5.sudo npm i -g http-server
6.sudo npm install -g ws

sudo npm install -g n
sudo n latest

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

H5推流解决方案测试环境搭建指南 的相关文章

  • 使用 ffmpeg 从 unix 命令批量将 wav 文件转换为 16 位

    我有一个由许多子文件夹组成的文件夹 每个子文件夹都有其他子文件夹 其中包含 wav 文件 我想像这样转换所有文件 ffmpeg i BmBmGG BmBmBmBm wav acodec pcm s16le ar 44100 BmBmGG B
  • Android 上的 GStreamer

    谁能给我一些关于让 GStreamer 在 Android 上工作的提示 我以前从未使用过它 我想将它与 FFmpeg 一起使用 我已经编译了 FFmpeg 并且在 Android 上运行良好 我只是想使用 GStreamer 来帮助完成一
  • 将 H264 视频转换为原始 YUV 格式

    是否可以使用 ffmpeg 从 H264 编码视频创建原始 YUV 视频 我想用 matlab 打开视频并逐帧访问 Luma Cb 和 Cr 分量 是的 您可以 您只需指定像素格式即可 要获取格式的完整列表 ffmpeg pix fmts
  • Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

    我正在构建一个平台 允许用户将一些视频文件 20 40 秒 从手机上传到服务器 所有这些上传目前都运行良好 文件通过nodejs云功能存储在谷歌存储桶中 现在我想创建一个 gcp 转码器作业 它将上传的 mp4 视频文件转换为 hls 视频
  • 使用 ffmpeg 提取帧的最快方法?

    您好 我需要使用 ffmpeg 从视频中提取帧 有没有比这更快的方法 ffmpeg i file mpg r 1 1 filename 03d jpg 如果 JPEG 编码步骤对性能要求太高 您可以始终将未压缩的帧存储为 BMP 图像 ff
  • 消除 ffmpeg 和 image-magic 命令中的慢速因素

    这些命令的基本思想是创建一个比较 比较定义了过去的一张 jpeg 和现在的一张 jpeg 组合起来 例如它们将相互滑动并显示前后图像 e g https media evercam io v1 cameras 1lowe scnoe com
  • Python 用静态图像将 mp3 转换为 mp4

    我有x文件包含一个列表mp3我想转换的文件mp3文件至mp4文件带有static png photo 似乎这里唯一的方法是使用ffmpeg但我不知道如何实现它 我编写了脚本来接受输入mp3文件夹和一个 png photo 然后它将创建新文件
  • H264 字节流到图像文件

    第一次来这里所以要温柔 我已经在给定的 H 264 字节流上工作了几个星期 一般注意事项 字节流不是来自文件 它是从外部源实时提供给我的 字节流使用 Android 的媒体编解码器进行编码 当将流写入扩展名为 H264的文件时 VLC能够正
  • 使用 ffmpeg 或 OpenCV 处理原始图像

    看完之后维基百科页面 http en wikipedia org wiki Raw image format原始图像格式 是任何图像的数字负片 为了查看或打印 相机图像传感器的输出具有 进行处理 即转换为照片渲染 场景 然后以标准光栅图形格
  • 使用 Ffmpeg 编辑视频元数据

    我想更改视频元数据 原始视频信息 ffmpeg i video mp4 Metadata major brand mp42 minor version 0 compatible brands isomavc1mp42 creation ti
  • 适用于 iPhone 和 HTTP 直播的实时视频聊天

    所以一般来说 我想为 iPhone 制作一个具有视频聊天功能的应用程序 但经过多次搜索 我仍然找不到任何成功的结果 是否有任何公共或私有 API 可用于在 iPhone 上执行此操作 如果您的答案是 是 请帮助我 基本上 我想要的是读取连接
  • 如何使用 ffmpeg 将两个视频/音频流混合为一个

    我有两个视频 v1 flv 和 v2 flv 想要创建 v3 flv 其中包含来自 v1 flv 的视频流以及来自 v1 flv 和 v2 flv 的 混合 音频流 使用 ffmpeg 命令可以实现类似的操作吗 谢谢 我认为使用 ffmpe
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • ffmpeg concat:“不安全的文件名”

    尝试将一堆 mts 文件转换为一个大 mp4 文件 stephan rechenmonster mnt backupsystem archive2 Videos 20151222 PRIVATE AVCHD BDMV bin ffmpeg
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • Bash 脚本:自动为 mpeg-dash 进行 ffmpeg 编码

    我正在编写一个 bash 文件来创建视频编码和串联 以供 dash 实时流媒体使用 基本上 它读取输入视频文件夹 将所有视频编码为三种分辨率格式 然后将它们连接起来创建三个适应集 DIAGRAM 该脚本检查 fps 一致性 如果输入不是 1
  • 为什么处理时间随着修剪位置的增加而增加?

    我最近一直在使用ffmpeg修剪一些视频 我注意到随着修剪位置的增加 修剪视频所花费的时间也会增加 即使持续时间相同 5 seconds 下面给出了修剪视频的命令0 to 5秒 处理仅需1秒 ffmpeg y i input mp4 fil
  • FFMPEG:将 YUV 数据转储到 AVFrame 结构中

    我正在尝试转储YUV420数据进入AVFrameFFMPEG 的结构 从下面的链接 http ffmpeg org doxygen trunk structAVFrame html http ffmpeg org doxygen trunk
  • id3 图像编辑后播放 mp3 时遇到问题

    由于硬件限制 我们生产的软件试图确保导入到其库中的任何音频文件 准备复制到硬件上 都是可接受的比特率 最近 我们开始使用 FFmpeg 将许多不同的音频类型转换为 mp3 以便在我们的硬件上导入和使用它们 虽然转换工作正常并且 mp3 文件

随机推荐

  • shell脚本:循环结束语句二

    shell脚本 循环结束语句二 二 循环结束语句 1 break 跳出循环 2 continue 3 while 4 until 条件不成立时 跳出循环 5 总结 三 操作演练 二 循环结束语句 1 break 跳出循环 1 作用 控制循环
  • 旧版OpenGL 与 新版OpenGL

    分割线 OpenGL3 0 3 0之前 所有OpenGL版本都与早期版本完全向后兼容 针对OpenGL 1 1编写的代码可以在OpenGL 2 1实现中很好地执行 3 0 引入了废弃functionality的想法 许多OpenGL函数被声
  • android高级UI之PathMeasure<一>--Path测量基础(nextContour、getPosTan、getMatrix、getSegment)

    前言 在上一次android高级UI之贝塞尔曲线 lt 下 gt 贝塞尔曲线运用 QQ消息气泡完成了对于贝塞尔曲线绘制的学习 今天准备学习UI绘制中经常会用到的跟Path相关的一些知识 也是很重要 但是你不去专门花时间去研究的话其实理解起来
  • Docker从入门到干事,看这一篇就够了,mysql索引优化面试题

    docker与虚拟机的对比 物理机 别墅 虚拟机 楼房 docker 酒店式公寓 docker三大概念 库 一个总的仓库 包含所有的镜像 使用时可以从库拉取镜像到本地 镜像 从库中拉取下来的应用 比如mysql 容器 镜像运行之后就是容器
  • transformer论文学习:Attention Is All You Need

    transformer论文学习 Attention Is All You Need 文章目录 transformer论文学习 Attention Is All You Need 整体结构速览 一 网络结构 二 注意力机制 参考资源 1 原论
  • P4学习——p4runtime

    文章目录 步骤一 运行不完整代码 步骤二 开始实现隧道转发 步骤三 运行解决方案 参考 https blog csdn net qq 33681684 article details 123646883 在这个练习中 我们将使用P4Runt
  • 实战篇-OpenSSL之AES加密算法-ECB模式

    本文属于 OpenSSL加密算法库使用系列教程 之一 欢迎查看其它文章 实战篇 OpenSSL之AES加密算法 ECB模式 一 AES简介 二 ECB模式 1 命令行操作 2 函数说明 3 编程实现 1 PKCS7填充方式 2 实现ECB模
  • 语音识别入门 --各个模型的整理

    语音识别入门 前期知识储备 结构图 语音特征提取 各个模型的尝试 ASRT DeepSpeechRecognition end2end chinese speech recognition Wenet whisper 语音纠错 TTS 文本
  • QT学习笔记6--信号之间的连接

    连接 仍然使用connect函数 但是和函数重载类似 需要用到函数指针 如下所示 void teacher teachersignals void teacher hungery void student studentslots void
  • 云计算的定义和特点

    在中国大数据专家委员会成立大会上 委员会主任怀进鹏院士用一个公式描述了大数据与云计算的关系 G f x x是大数据 f是云计算 G是我们的目标 也就是说 云计算是处理大数据的手段 大数据与云计算是一杖硬币的正反面 大数据是需求 云计算是手段
  • 去除图片中仅为背景(全0,全255)的图片

    在对遥感影像进行裁剪时 很多背景也会被裁剪出来作为一个图像 而背景值过多会影响网络性能 该代码主要去除全0图片 全255图片 仅含0和255的图片 import os import cv2 import numpy as np import
  • C++中STL用法超详细总结

    目录 1 什么是STL 2 STL内容介绍 2 1 容器 2 2 STL迭代器 2 3 算法 2 4 仿函数 2 4 1 概述 2 4 2 仿函数 functor 在编程语言中的应用 2 4 3 仿函数在STL中的定义 2 5 容器适配器
  • OpenCV自适应直方图均衡CLAHE的clipLimit的含义及理解

    一 引言 关于自适应直方图均衡CLAHE的clipLimit的介绍 网上介绍的资料不多 可能对很多大佬来说 这个知识点很简单 但对于没这方面基础知识的 则不好理解 老猿今天结合OpenCV CLAHE源代码中对于clipLimit的赋值处理
  • 有哪些适合初学者的编程语言?

    C语言 那为什么我还要教你C语言呢 因为我想要让你成为一个更好 更强大的程序员 如果你要变得更好 C语言是一个极佳的选择 其原因有二 首先 C语言缺乏任何现代的安全功能 这意味着你必须更为警惕 时刻了解真正发生的事情 如果你能写出安全 健壮
  • LocalDateTime转换为时间戳(秒)

    LocalDateTime转换为时间戳 秒 不要用ZoneOffset of 8 如果你的系统默认时区不是 8就错了 localDateTime atZone ZoneId systemDefault toEpochSecond 可以看看这
  • python利器怎么编程-OpenCV-Python,计算机视觉开发利器

    人工智能 一个已经被谈论了几十年的概念 最早是 图灵 在 1950年 提出 如今这几年 相关技术的发展速度是越来越快 高大上如无人驾驶 智能安防 AI辅助诊断 接地气如刷脸支付 内容推荐 自动翻译等 众多领域借助人工智能的力量而进化 从百度
  • thinphp6-封装一堆类

    获取文件来源路径
  • MAC地址全球唯一,为什么还要有IP地址?

    首先 每一台通信主机一定要有一个标识符用来唯一标识这台设备 下面把 标识符 称为 地址 那么每一个中间设备 一定要有一个转发表 用于查找数据该转发给哪一台设备 虽然设备的 地址 是全球唯一 但是你并不知道它所在的具体位置 那么转发表里找不到
  • 客户个性分析 聚类 大数据

    客户个性分析 聚类 大数据 作者 桂Sir 联系方式 1052656099 qq com 不同的消费者 由于受年龄 性别 群体 职业 民族等自身类型的不同 以及生活习惯 兴趣 爱好 和个人性格因素的影响 在对同一产品的选购过程中往往会表现出
  • H5推流解决方案测试环境搭建指南

    一 部署服务器端 centos 阿里云服务器系统 1 sudo yum install git 2 git clone https github com phoboslab jsmpeg git 3 wget qO https raw gi