请教 FFMPEG 和录屏的问题

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

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

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

2663 次点击
所在节点    程序员
36 条回复
tpxcer
2022-07-19 10:15:08 +08:00
我想请教下,有 OBS 这种为什么还要用命令行呢? 画质更好?
documentzhangx66
2022-07-19 10:33:56 +08:00
1.音画不同步是正常的,同步了才是稀罕事。

2.专业的处理方法是,录制时,视频流与音频流分开,最后合并时,让用户自己确定时差,最后带上时差来合并视频流与音频流。
Yeen
2022-07-19 10:34:21 +08:00
@tpxcer OBS 是什么,以前没有搞过视频处理这块。。。。
Yeen
2022-07-19 10:35:18 +08:00
@documentzhangx66 请教有没有 ffmepg cli 的命令样例,感谢!
wy315700
2022-07-19 10:47:50 +08:00
像影视公司那样,弄个场面版,开始的时候咔一下。后期剪辑的时候就很方便对准了
Vaspike
2022-07-19 10:49:04 +08:00
Yeen
2022-07-19 10:55:38 +08:00
@wy315700 有没有简单的处理方案呢?
webrtc 混合流貌似同步的就很好,ffmpeg 反而时间不同步。。。。。
ysc3839
2022-07-19 11:38:21 +08:00
建议直接用 OBS 。
如果是要集成到自己软件里的话,用 gstreamer 的 d3d11screencapturesrc 和 wasapi2src 来录音视频。GDI 和 DirectShow 是过时的 API 了,性能很差。
Yeen
2022-07-19 11:39:25 +08:00
@ysc3839 好的,我试试
Yeen
2022-07-19 12:22:03 +08:00
@ysc3839 这块有没有学习资料或者网站推荐一下呢?
ysc3839
2022-07-19 12:37:40 +08:00
@Yeen 官方文档?
Yeen
2022-07-19 16:15:07 +08:00
经过测试,发现是 amix 后,只要混入话筒,就会音画不同步。如果只有声卡,没有用 amix 混合,就不存在这个问题。感觉应该可以通过设置 ffmpeg cli 的参数解决。如果能先简单解决最好了~
在线等
Yeen
2022-07-19 16:31:18 +08:00
@documentzhangx66 能不能通过一条 ffmpeg 的命令行就实现这个过程呢?请教
cwaken
2022-07-19 18:52:58 +08:00
同步是一件很复杂的事
cwaken
2022-07-19 18:53:29 +08:00
音频和视频的帧率不一样
Yeen
2022-07-19 19:02:09 +08:00
@cwaken 但是系统声音就很好的和画面同步,话筒就不行。能不能强制他们用某种方式对齐呢?
cwaken
2022-07-19 19:04:21 +08:00
@Yeen 可以,api 手动计算 pts
cwaken
2022-07-19 19:04:50 +08:00
你要是用命令,建议走 obs
Yeen
2022-07-19 19:08:02 +08:00
通过调整 ffmepg cli 的命令参数没有办法吗...
cwaken
2022-07-19 19:15:12 +08:00
音视频同步反而是在解码端实现的,但视频音频的 pts 都要对齐

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

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

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

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

© 2021 V2EX