javascript - 在实时 ffmpeg 进程中交换输入流
问题描述
我对ffmpeg很陌生,所以如果这不可能或答案很明显,我深表歉意。我有一个 ffmpeg 进程,我正在将流(音频和视频)录制到 .webm 文件。
这是我服务器上的 webrtc 客户端,我想根据活动发言人的身份切换 ffmpeg 将哪个流作为输入。
只要我不尝试使用参数混淆流(视频和音频),它就可以正常工作:
'-loglevel',
'debug',
'-protocol_whitelist',
'pipe,udp,rtp',
'-fflags',
'+genpts',
'-f',
'sdp',
'-i',
'pipe:0',
'-map',
'0:v:0',
'-c:v',
'copy',
'-map',
'0:a:0',
'-strict',
'-2',
'-c:a',
'copy',
'-flags',
'+global_header',
'./recordings/ffmpegrecording.webm'
我用节点启动ffmpeg进程:
this._process = child_process.spawn('ffmpeg', this._commandArgs);
然后我将流传输到 ffmpeg 进程:
sdpStream.pipe(this._process.stdin);
有什么方法可以替换输入流而不杀死 ffmpeg 进程或以其他方式弄乱它(破坏元数据或其他不良后果)?
任何指向正确方向的指针将不胜感激!
非常感谢 :)
解决方案
推荐阅读
- liferay - 如何防止liferay自动更改语言
- c# - 为数据行列使用不同的名称,而不是 Classe 中的属性
- python - 根据 Python 中的一组索引将列表拆分为子列表
- alibaba-cloud - 消息:尝试在命令行上运行实例时,用户订单资源类型 [经典] 不存在于 [随机] 中
- vue.js - 数据中的Vue深度克隆道具没有响应
- amazon-web-services - S3 - 从 Post S3 Upload lambda 函数获取元数据
- android - Android NavigationView 只点击小区域
- c++ - 无法将“T&”类型的非常量左值引用绑定到 std::atomic 类型“T”t++ 的右值
- android - 如何使用
与视图绑定? - git - Git命令获取默认分支的最新提交