Извлекать аудио / видео потоки из записи TeamViewer (файл TVS)?

TeamViewer позволяет записывать сессии в собственном формате с расширением файла .tvs, Его можно преобразовать в AVI с помощью любого кодека, установленного на локальном компьютере (с помощью TeamViewer), но не MP4 или других форматов контейнеров.

Кодирование в AVI действительно медленное (очевидно, не многопоточное, с использованием x264 vfw; XviD заняло бы еще больше времени), полученный файл не воспроизводился хорошо в VLC и вообще не был редактируемым в Avidemux на Windows.

Поэтому я хотел бы знать, возможно ли извлечь аудио- и видеопоток из файла TVS для дальнейшей обработки с помощью ffmpeg (в противном случае мне нужно кодировать дважды, что означает 4 часа на 60-минутный отснятый материал). Я надеюсь, что он похож на другие форматы, только с пользовательским кодеком, который, я надеюсь, не встроен в TeamViewer, но доступен и для других приложений.

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]

(The MetadataPosition отмечает позицию после END, где начинается Base64.)

Двоичные данные, кажется, содержат несколько фрагментов, сжатых DEFLATE. Кажется, что они содержат значимые данные, в том числе список разрешений экрана, курсор мыши и некоторые 32-битные данные изображений RGB, но структуру нелегко различить.

Может быть, есть надежда на расшифровку формата, но я не вижу каких-либо усилий в этом направлении.

Это может быть просто запись сеанса TeamViewer. Если он использует что-то вроде протокола RFB, то он может быть похож на формат видео VMware.

РЕДАКТИРОВАТЬ: На случай, если это кому-нибудь поможет, я написал быструю программу на C для извлечения / выгрузки содержимого фрагментов KEY из файла: ( gist)

Кажется, вы можете установить кодеки видеокодеков VFW (Video For Windows), и TeamViewer их примет и будет использовать. Есть проект: https://sourceforge.net/projects/x264vfw/ , который позволяет кодировать в x264, таким образом вы получаете контейнер AVI с видео MP4.

Другие вопросы по тегам