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/