请教 FFMPEG 和录屏的问题

2022-07-19 09:50:05 +08:00
 Yeen

刚刚接触 ffmpeg ,不太熟悉。 最近在使用 ffmpeg-cli 方式录制 winows 系统的屏幕录制,gdigrap 视频+dshow 音频方式。 发现话筒声音与视频不同步(但视频与系统音源是同步的),话筒声音滞后 300-500ms 左右。 该如何 fix 呢? 劳烦大佬来解答一下。

大家一起讨论讨论,视频处理这块算是比较有技术含量的,个人感觉也是比较有趣可以深做的方向。

2685 次点击
所在节点    程序员
36 条回复
Salticey
2022-07-19 19:17:05 +08:00
如果是 windows 且用独立显卡的话,可以直接使用独显自带的录屏呀,很好用的
cssk
2022-07-19 19:21:48 +08:00
@ysc3839 #8 搭车一问,directshow 过时了,那么写个 uvc 摄像头的软件用什么比较好,amcap 是用 directshow 的
Yeen
2022-07-19 19:48:57 +08:00
@cwaken 有没有命令行参数可以让 3 个 -i 流的 pts 对齐呢?
Yeen
2022-07-19 19:49:50 +08:00
说实话,webrtc 除了编码格式较少不能输出 mp4 ,控制参数不灵活。其他方面倒还蛮好的
ysc3839
2022-07-19 20:53:11 +08:00
@cssk Media Foundation 。但是很多虚拟摄像头还是用 DirectShow 实现的,换成 MF 之后用不了。所以选啥自己考虑吧。
610915518
2022-07-19 21:25:40 +08:00
OBS 大法好
cwaken
2022-07-20 00:29:16 +08:00
每个 pcm 数据 yuv 数据的 pts 值都是通过公式计算得来的
cwaken
2022-07-20 00:32:15 +08:00
我以前还有个同事为了高性能录制,写了个声卡虚拟驱动,为的就是录制时降噪和回音抑制
cwaken
2022-07-20 00:35:04 +08:00
我是没这么做,我在另一个项目里是先从声卡数据采集,因为人不可能一直在说,所以先把数据和 pts 放到生产者队列。然后取出来再走音频算法,把 pts 设置上去,播放的时候也是同步的
cwaken
2022-07-20 00:35:36 +08:00
没有人声的时候就把累积的全部处理
cwaken
2022-07-20 00:38:58 +08:00
cli 基本没什么用,在商业项目中情况复杂,兼容不了特殊情况
Yeen
2022-07-20 08:14:58 +08:00
@cwaken 不能一边采集,一边编码,同时同步吗
cwaken
2022-07-20 08:59:44 +08:00
@Yeen 你先查下同步是个啥问题
Yeen
2022-07-20 09:27:42 +08:00
@cwaken 新进展:在混入麦克风时候,给视频流加了 0.4 秒的 offset 延迟,那么声卡,视频,话筒,就就能同步了。我感觉这个问题应该还不是复杂的同步问题。因为是保存本地文件,不是实时推流那么复杂的吧?
documentzhangx66
2022-07-21 15:38:03 +08:00
@Yeen

1.不能一条命令解决,我在前面说了,需要专业人士来分析出具体延迟时间,然后在合并时进行处理。

2.这里的关键是,需要分析出延迟到底是多少。不同电脑,在不同负载下,延迟时间可能会不一样。甚至在录制过程中,延迟时间还有可能会发生变化。
Yeen
2022-07-21 15:48:12 +08:00
@documentzhangx66 查阅了一下资料,应该是麦克风输入缓存延迟的问题。暂时解决了,感谢回复~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX