从TeamViewer录制的文件(TVS文件)中提取音频/视频流?

10

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

转换为AVI的速度非常慢(似乎不支持多线程,使用x264 vfw; XviD则需要更长时间),生成的文件在VLC中播放效果不佳,且在Windows上无法在Avidemux中进行编辑。

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

2个回答

2

TVS是一种专有格式。在网上没有太多关于此的信息。可以在http://www.jerrysguide.com/tips/demystify-tvs-file-format.html找到少量分析。

我使用十六进制编辑器查看了其中一个文件。它包含一个基于文本的头部,一个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会话的记录。如果使用类似于RFB协议的东西,那么它可能类似于VMware视频格式。 编辑: 如果有人需要,我已经用C编写了一个快速程序来从文件中提取/转储KEY块的内容:(gist) 编辑: 我发现TeamViewer可以愉快地播放仅由TVS\r\nBEGIN\r\nKEY...\r\nEND组成的简单文件,剥离其他数据。虽然我想它可能会在版本或流类型等因素影响解码时出现问题。

1
很棒的分析!看起来像是商业实体找到了解决方案,或者他们只是运行了一堆Windows TeamViewer实例来执行转换:https://tvstomp4.com/ - evan.bovie
嗨@mwfearnley,非常感谢您的分析。我已经检查了您的gist代码 - 简而言之 - 它将key.data块提取到几个文件中。但是接下来该怎么做呢?它们已经是视频流的块了吗 - 只需要连接起来吗? - Tom Freudenberg
嗨@TomFreudenberg,抱歉,块内数据的格式仍然未知。使用十六进制编辑器查看可能会显示数据中的某些含义/模式,但是如何正确解码它仍然未知。 - mwfearnley
嗨@mwfearnley,感谢您的反馈,所以我们需要寻找其他解决方案。感谢您的努力! - Tom Freudenberg

0

看起来,您可以安装VFW(Windows视频)视频编解码器,然后TeamViewer将接受并使用它们。有一个项目:https://sourceforge.net/projects/x264vfw/,允许对x264进行编码,因此您将获得一个带有MP4视频的AVI容器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接