我使用 avconv 在 Linux 上进行游戏的屏幕录制(是的,对不起,我是其中之一,但我对脚本比自己玩更兴奋),但最近我的硬盘坏了,在等待保修 我用的是旧笔记本上的一个。
问题是我已经知道我无法使用这个高清进行录制,因为它比我的旧版本慢得多,事实证明这是真的,我放弃了尝试录制并开始寻找其他选择。
就在那时我想起了 tmpfs/ramfs,这就是我试图解决问题的方式:
1)我挂载tmpfs:
$ sudo mount -t tmpfs -o size=2048M captura ~/Videos/capture/memoria/
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 286G 63G 209G 24% /
...
captura 2.0G 62M 2.0G 3% /home/rarlei/Videos/capture/memoria
2) 开始游戏(我的世界,内存占用大?)
3) 开始录制:(avconv $thousands_of_parameters -v:c libx264 -preset fast memoria/video.mp4
仅限视频)
经过一些播放后,我只是停止录制以查看我所拥有的内容,但我所看到的与我在硬盘上录制的内容没有什么不同。
我有 8GB 相当好的内存(1.2ghz 或类似的东西,我不知道如何从 linux 看到)
我没有使用任何特定的显卡,只是一些普通的英特尔显卡,但这从未影响我以前的硬盘的录制。
tmpfs 不是应该更快吗?我的世界有影响吗?编码会影响这个吗?有什么想法吗?
更新
我想我不清楚,我正在做的是比较两个视频,一个写入硬盘分区,另一个写入tmpfs(内存?),两者都具有相同的编解码器,都来自X11显示器,我的预期结果是tmpfs视频的延迟比硬盘少得多(播放时不会出现延迟),但结果是两个视频都显示延迟,数量几乎相同。
值得一提的是,这些滞后并没有出现在我以前的硬盘上,所以我知道它与存储有关,而不是与处理器/编解码器有关。
更新 - 已解决(?)
事实证明,编码过程中似乎发生了比内存消耗更多的事情(现在很明显,因为它需要将每个帧加载到内存中并在那里进行处理,然后写回同一内存的另一部分)我预见到,因此,在内存中执行所有操作确实会导致编码时出现延迟/帧丢失。
我尝试使用 rawvideo 进行录制,重新编码回 mp4 后,视频没有延迟。太糟糕了,每 10 秒需要 1GB,而且我没有足够的内存。
没有办法将原始视频直接录制到硬盘上,这样做会减慢游戏速度,直到我停止录制为止。 :(
不管怎样谢谢你们:)
答案1
您可以尝试以更高的优先级运行 avconv;这可能会导致游戏速度变慢,但是:
nice n=-10 aconv ...
假设问题是因为 aconv 没有获得足够的处理器时间来完成它需要做的事情。不管是什么,根据我的评论,这并不是因为它无法足够快地写入磁盘。
看看man nice
您以前是否没有听说过。