本文镜像:https://blog.csdn.net/weixin_45326556/article/details/163079286
本文链接:https://linkpi.cn/archives/2298
1. 行业的痛点
市面的视音频编码器大都是嵌入式LINUX设备,通常都是厂家配了软件,客户的定制化的需求就需要找设备厂家去改软件;有些厂家为了满足客户的定制化需求,提供了基于C/C++的API,从理想的角度上看是可以满足部分客户的定制化需求的,但实际上在嵌入式开发基于C/C++的应用程序需要交叉编译等复杂的过程,普通的软件开发者很难掌握。因此,灵派科技推出了基于JavaScript的开发接口:LinkJS,只要你会用JavaScript,就可以编写视音频编解码器软件,大大降低了开发的难度,以满足客户的定制化需求。
有关LinkJS开发的介绍,请参见:https://www.yuque.com/linkpi/linkjs
LinkJS的小例子程序集合,请参见:https://gitee.com/LinkPi/ScriptExample
LinkJS编写的完整Encoder,请参见:https://gitee.com/LinkPi/EncoderJS
LinkJS是LinkSDK的JS版本,开发时需要参考LinkSDK说明:https://www.yuque.com/linkpi/linksdk
AI辅助编程的Agent,请参见:https://www.yuque.com/linkpi/agent
2. 开启开发者模式
编码器内嵌了LinkJS开发的IDE,如需要用LinkJS开发,就需要开启开发者模式(设备出厂时是关闭的)。首先需要登录编码器后台(地址:http://编码器IP/ ),登录成功后不要关闭浏览器,在浏览器的地址栏手工输入 http://编码器IP/fac.php , 这样就可以看到开发者模式开关,示意界面如下:

把关闭切换成开启,系统会弹出重新启动确认按钮,界面示意如下:

点击确认重启按钮,系统会重新启动,然后就可以进入开发模式了。
3. 用LinkJS开发软件,调试,运行
进入开发者模式时,系统会提示输入账号密码,界面示意图如下:

默认账号为admin,密码为admin,登录后就看到如下的界面:

顶部的工具栏说明如下:

我们从项目栏里选择EncoderJS,点击工具栏的运行按钮,运行过程中的日志在屏幕下方,示意图如下:

点击工具栏的访问项目网页按钮,你就可以看到该项目的后台的网页配置,示意图如下:

EncoderJS是灵派完整的编码器软件,代码量比较大,建议新手从小的例子程序入手,例如我们从项目栏里选择SimpleWeb,示意图如下:

该项目是一个把VI输入和AI输入(如果是ENC1-V3,那就是HDMI的视音频输入),编码压缩后通过rtmp流输出,同时通过VO输出预览(如果是ENC1-V3,那就是HDMI OUT),点击运行按钮,程序就开始运行了,界面示意如下:

点击工具栏的访问项目网页按钮,你就可以看到该项目的后台配置,示意图如下:

从上面可以看到RTMP流的码率,我们还可以用VLC来收这个流,示意图如下:

4. LinkJS的小例子程序
为了方便客户理解LinkJS的接口,我们提供了很多小例子程序,新手可以先试试这些例子,以免全面理解LinkJS的接口和开发方法。
4.1 HelloWorld
切换到开发者模式的默认项目,用于展示项目目录结构。
运行后可以看到HDMI输出、LCD小屏都会显示“Hello World”。
可以在网页后台修改该字符串,网页源码中展示了基础的前后端js通信方法。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/HelloWorld
4.2 Stream
音视频编码+rtmp推流,使用php+vue架构开发项目网页。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Stream
4.3 LCD
在Stream项目的基础上,引入核心库,创建了设备上LCD小屏的控制菜单。
通过这个项目,开发者可以了解如何在LCD屏上实现参数配置等交互。
LCD接口说明
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/LCD
4.4 SimpleWeb
在LCD项目的基础上,删除掉php+vue框架。
使用最基本的js库实现前后端通信,方便开发者了解并学习如何从零开发一套后台网页。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/SimpleWeb
4.5 Decode
音视频解码功能,代码中的url需要在运行之前修改,可以是rtsp/rtmp/srt等常见url。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Decode
4.6 Event
用于展示如何使用模块事件,以及调用模块方法的示例项目。该项目构建了一个gop间隔高达8秒的rtsp流,通常播放器需要等待一段时间才能开始播放,通过客户端接入事件和请求关键帧方法的配合,实现了秒播的功能。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Event
4.7 Protocols
展示了常见的串流协议的创建方法
包括rtmp、rtsp、srt、hls、udp、ndi、rist
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Protocols
4.8 Webrtc
展示了如何创建一个webrtc流,以及网页播放器。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Webrtc
4.9 Record
展示了如何通过网页控制设备开始或停止录制,以及录制文件的下载。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Record
4.10 Snap
截图并在网页上刷新显示
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Snap
4.11 Usb2Hdmi
将USB摄像头转为HDMI输出,可对接常见usb摄像头、运动相机、pocket3等设备。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Usb2Hdmi
4.12 LED
用于测试LED接口的调用(Tally灯),实现不同的灯光变换效果。
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/LED
4.13 Uart
串口读写
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Uart
4.14 Socket
tcp、udp使用方法
源码:https://gitee.com/LinkPi/ScriptExample/tree/master/Socket


















