我写了一个 nodejs 插件,用 node-gyp 编译。它不适用于电子,但 nodejs 工作。nodejs 和 electron 节点版本相同。
插件做这些事情:
- 加载 ffmpeg 静态库并打开一个 rtsp 或本地文件。
- 将帧转换为 rgba 颜色到 arraybuffer 并调用电子的主进程。
- 渲染器进程处理数据事件并将数据渲染到画布元素。
在电子中,以下代码总是返回Protol not found
int status = avformat_open_input(&pFormatContext, url, NULL, NULL);
if (0 != status) {
av_log(NULL, AV_LOG_ERROR, "ffmpeg open error: %s\n", av_err2str(status));
return status;
}
节点gyp配置:
{
"targets": [{
"target_name": "ffmpeg",
"sources": ["src/ffmpeg/api/addon.c", "src/ffmpeg/api/ffmpeg.c"],
"include_dirs": [
"/home/my/ffmpeg_build/include"
],
"libraries": [
"-L$$PWD/../lib/ffmpeg-kylinux-aarch64",
"-lavformat",
"-lavcodec",
"-lavutil",
"-lswscale",
"-lswresample",
"-lx264",
"-lx265"
]
}]
}