在nodejs addon 环境下抓视频和音频数据包

这篇具有很好参考价值的文章主要介绍了在nodejs addon 环境下抓视频和音频数据包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在node addon 环境下开发音视频,需要用到 gyp 。这个配置比较简单,很快可以配置好。比较坑的是,在vscode 开发环境下, 如果装了conda 或者 mini conda .   有可能会影响gpy程序的编译。谨慎起见,可以看看控制台是否有 (conda base)环境启动, 可以想办法先脱离 conda 环境。

 废话不说直接上代码:

const lib = require('./build/Release/Decode.node')
// utils
function sleep(t) {
    var start = new Date().getTime();
    while (true) {
        if (new Date().getTime() - start > t) {
            break;
        }
    }
}

function doSomething() {
    for (let i = 0; i < 10; i++) {
        sleep(500)
        console.log('current time in node,', new Date().getTime());
    }
}


//========================================================================================
//                          Example OF Grabbing VIDEO and AUDIO
//========================================================================================
//step 1: init the lib
lib.Open()

//step 2: set callbacks here, we support 'Video', 'Audio', 'Error' 3 msg types.
lib.On('Video', (frame)=>{
    console.log('#Video format=',frame.format);
    console.log('#Video width=',frame.width);
    console.log('#Video height=',frame.height);
    console.log('#Video size=',frame.size);
    // console.log(frame.data);
})
lib.On('Audio', (frame)=>{
    console.log('#Audio format=',frame.format);
    console.log('#Audio rate=',frame.rate);
    console.log('#Audio size=',frame.size);
    // console.log(frame.data);
})
lib.On('Error', (msg)=>{
    console.log('#5',msg);    
})
//step 3: set uri, and begin to grab video and audio frames
lib.SetUri('https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv');  // can change to your own rtmp 

//step 4: you can your own work 
doSomething();

//step 5: finish
lib.Close()

该代码的运行环境为ubuntu , 目前不支持windows系统, 如果需要windows版本, 可联系作者。

首先, 导入 node 扩展程序。

第一步,初始化lib .  调用 Open 函数。

第二步, 注册回调函数, 流媒体程序一般采用多线程解码,当底层解码完数据帧后,调用JS端的回调来处理。 这里暂时支持三种类型的回调,即“Video”, "Audio", 和"Error"。 当底层解码一个完整的数据帧时候,调用 Video , Audio 类型的回调。 当底层发生错误时候,调用JS端的Error 类型回调。

第三步,指定解码的URI,  支持 HTTP   RTSP  RTMP 等。

第四步, 你可以运行自己的工作, 因为底层自己开发了线程处理数据流的接受和解码。并不会阻塞JS端的运行。

最后, 可以关闭LIB的功能,释放资源。

完整代码我已经发布在github上。

GitHub - enigma19971/va-nodejs-addon: grab video and audio frames in nodejs addon envgrab video and audio frames in nodejs addon env. Contribute to enigma19971/va-nodejs-addon development by creating an account on GitHub.https://github.com/enigma19971/va-nodejs-addon.git

注意, 本项目基于gstreamer , 如果提示找不到各类  plugin .   请自行安装gstreamer. 文章来源地址https://www.toymoban.com/news/detail-475861.html

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

到了这里,关于在nodejs addon 环境下抓视频和音频数据包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java通过javacv获取视频、音频、图片等元数据信息(分辨率、大小、帧等信息)

    相信我们都会或多或少需要给前端返回视频或者音频的一些信息,那么今天这篇文章通过Java语言使用javacv来获取视频、音频、图片等元数据信息(分辨率、大小、帧等信息) 一、首先导入依赖 可以先导入javacv/javacv-platform依赖,由于依赖比较大,所以我们可以先去除部分不需

    2024年02月04日
    浏览(41)
  • FDMA3.1数据缓存方案全网最细讲解,自创升级版,送3套视频和音频缓存工程源码

    FDMA数据缓存方案发布也有五六年了,但真正能熟练使用的兄弟却很少,其实还是没有好的例程作为参考和同熟易懂的讲解,这里我做如下解析: FDMA部分:这部分是米联客封装了用户接口的AXI4-FULL协议代码,我之前写过一篇文章,逐行讲解这个模块,感兴趣的兄弟可以去参考

    2024年02月08日
    浏览(38)
  • GPT4 Advanced data analysis Code Interpreter 做行业数据分析、可视化处理图像、视频、音频等

    ChatGPT + Jungle scout 案例:跨境电商如何用ChatGFT选品 ChatGPT+Jungle scout 素材和资料来自: Jungle ScoutEM, Michael Soltis 和 文韬武韬AIGC Date Range Last 90 days Download CSV 把CSV文件打包zip,点击加号上传 Prompt: 请帮我解压这个zip文件,里面有很多csv文件,请你执行以下操作: 1、把每一个文件

    2024年02月07日
    浏览(29)
  • Unity中URP下抓屏的 开启 和 使用

    我们在这篇文章中看一下,URP下怎么开启抓屏。 在URP下,打开下面这个选项 Frame Debugger下可以看见 CopyColor 就是我们上一帧的内容 Opaque Downsampling改变截取的帧精度 使用不透明渲染队列才可以使用深度图 Render Queue 2500 时才可以使用深度图 Tags{“Queue”=“Geometry}” 开启Zwrite

    2024年01月19日
    浏览(29)
  • KubeVela篇06:Kubevela Addon插件安装原理

    addon支持从本地、git仓库、helm chart仓库安装,最终原理都相同,因此我们以本地安装为例。 完整流程如下: 从指定目录读取一个完整的addon安装包。 根据metadata.yaml配置文件,校验插件要求的kubevela、k8s的版本,不满足版本要求则终止安装。 根据metadata.yaml配置文件,如果需要

    2024年02月16日
    浏览(30)
  • 【ESP32音视频传输】②通过I2S采集SPH0645麦克风音频数据并上传到服务端实时播放

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文章基于Arduino ESP32 2.07版本,因为2.04版本开始I2S驱动被更改了,所以相同代码可能效果不太同 本文主要参考了:https://atomic14.com/2020/09/12/esp32-audio-input.html ESP32有多种方式从外置麦克风中读取数据:

    2024年02月11日
    浏览(39)
  • Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像/录像存储和回放/264/265/aac/pcm等

    用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw,将这个原始的音频流保存到mp4文件是会报错的,在调用avformat_write_header写文件头的时候提示(-22) Invalid argument,

    2024年04月11日
    浏览(41)
  • nodeJs 实现视频的转换(超详细教程)

    前段时间拿到一个视频是4k的,没法播放,于是通过 node.js  和 ffmpeg 实现了视频的转换。在win10 系统下实现。 所需工具 node 16.19 直接安装 ffmpeg-5.1.1-essentials_build 解压后重名 ffmpeg 放到C盘 然后配置下环境变量 Git-2.42.0.2-64-bit 直接安装 安装完 建一个demo 的文件夹, demo文件下

    2024年04月28日
    浏览(22)
  • Linux C/C++下抓包分析mysql流量(协议解析)

    MySQL通信协议是一个有状态的协议,主要用于MySQL客户端与服务器之间的通信。这个协议在MySQL客户端连接器(如Connector/C、Connector/J等)、MySQL Proxy以及主从复制中都有实现。 该协议的特性包括:支持SSL、压缩和认证等功能。 MySQL客户端和服务端的交互过程主要分为两个阶段:

    2024年02月05日
    浏览(33)
  • 浏览器播放rtsp视频,基于nodeJs

    1:安装ffmpeg,并且配置环境变量。 下载地址:http://ffmpeg.zeranoe.com/builds/ 或者: 百度云链接:https://pan.baidu.com/s/1PBt18BHFGpdr0lpoUp5cKw 提取码:hx08 配置: 复制文件地址,返回桌面,右键 我的电脑/此电脑 ,点击 高级系统设置 , 高级 ,点击 环境变量 点击 path 设置路径 win + r

    2023年04月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包