TeamViewer允许以专有格式记录扩展名.tvs的 session 。可以使用本地计算机上安装的任何编解码器(使用TeamViewer)将其转换为AVI,但不能将其转换为MP4或其他容器格式。

AVI的编码确实很慢(使用x264 vfw显然不是多线程的; XviD则需要更长的时间),生成的文件在VLC中不能很好地播放,并且根本无法在Windows的Avidemux中进行编辑。

因此,我想知道是否有可能提取TVS文件中的音频和视频流以使用ffmpeg进行进一步处理(否则,我需要编码两次,这意味着每60分钟的镜头需要4个小时)。我希望它与其他格式相似,只是带有一个自定义编解码器-我希望它不会内置在TeamViewer中,但也可用于其他应用程序。

最佳答案

TVS是专有格式。似乎没有很多关于它的在线信息。在http://www.jerrysguide.com/tips/demystify-tvs-file-format.html上可以找到少量分析。

我看着一个十六进制编辑器。它包含一个基于文本的 header ,一个Base64文本页脚和许多二进制数据。
例如:

TVS
Version 5
TVVersion   13.0.6447
Date    2018-03-03 15.24
TVServer
ClientID    314159265
ServerID    MY_HOME_PC (123 456 789)
LocalParticipantID  1234567890123456789
GUID    {01234567-89AB-CDEF-0123-456789012345}
StreamTypes 2
ScreenFeatures  127
MetadataPosition    0000000000169e98
BEGIN
[Lots and lots of binary data]
END
[320 bytes of Base64]

(MetadataPosition标记了Base64开始的END之后的位置。)

二进制数据似乎包含几个DEFLATE压缩的块。它们似乎包含有意义的数据,包括屏幕分辨率列表,鼠标光标和一些32位RGB图像数据,但是结构不容易辨别。

可能会有解码格式的希望,但我看不出对此有何努力。

它可能只是TeamViewer session 的记录。如果使用类似RFB protocol的格式,则它可能类似于VMware Video格式。

编辑:为了对任何人有帮助,我用C语言编写了一个快速程序,从文件中提取/转储KEY块的内容:(gist)

编辑:我发现TeamViewer会愉快地播放至少由TVS\r\nBEGIN\r\nKEY...\r\nEND组成的简单文件,并剥离任何其他数据。
尽管我认为,如果Version或StreamTypes之类的东西会影响解码,则可能会中断。

关于encoding - 从TeamViewer录制中提取音频/视频流(TVS文件)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30575725/

10-09 05:33