В настоящее время общаться по видеосвязи практически со всеми уголками мира очень просто. Но потребовалось много времени, чтобы технология достигла этого уровня. Я покажу, какие решения использовали инженеры еще в 1988 году, чтобы вы могли не только поговорить, но и увидеться с другом или партнером во время разговора.

Однажды я увидел на YouTube обзор Sony PCT-15 - это устройство, сделанное в Японии, подключалось к обычной телефонной линии и позволяло не только разговаривать с другим человеком, но и отправлять и получать изображения во время разговора. В то время высокоскоростная связь была доступна только для учреждений, вооруженных сил и правительства, поэтому телефонная линия была единственным возможным способом выйти в мир:

Как это работает? Давайте разберемся.

Расшифровка

Видеообзор опубликован на YouTube-канале Techmoan, который специализируется на ретро-устройствах. Но примечательным для меня было то, что передача данных была слышна на видео. Я просто сохранил сигнал в WAV и решил проанализировать его с помощью Python.

Давайте сначала проверим форму сигнала:

import scipy.io.wavfile as wav
import scipy.signal as signal
import matplotlib.pyplot as plt
import numpy as np

fs, data = wav.read('videophone.wav')

plt.rcParams["figure.figsize"] = (20,6)

time = np.linspace(0, len(data) / fs, num=len(data))
plt.plot(time, data)
plt.xlabel("Time, sec")
plt.ylabel("Amplitude")
plt.title("Signal")
plt.show()

Сигнал в начале, вероятно, используется в качестве триггера для начала приема. На осциллограмме также можно увидеть серию «всплесков»:

Давайте проверим сигнал в частотной области:

plt.specgram(data, NFFT=1024, Fs=fs)
plt.title("Spectrum")
plt.xlabel("Time, sec")
plt.ylabel("Frequency")
plt.show()

Примечательно, что все данные передаются в полосе частот 1–3 кГц, что было оптимальным для аналоговой телефонной линии:

Теперь вернемся к форме сигнала. Я могу предположить, что каждый «всплеск» представляет собой одну строку изображения, и данные отправляются в аналоговой форме:

Это был стандартный подход для аналогового телевидения 80-х годов. Увеличим один «шип». Очевидно, это амплитудная модуляция. Я предполагаю, что он кодирует яркость, и это легко проверить. Во-первых, давайте применим к данным преобразование Гильберта:

def hilbert(data):
    analytical_signal = signal.hilbert(data)
    amplitude_envelope = np.abs(analytical_signal)
    return amplitude_envelope
data_am = hilbert(data)
plt.plot(time, data_am)

После преобразования мы получили огибающую сигнала (желтая линия):

Как я уже писал ранее, сигнал, вероятно, закодирован по яркости - из спецификаций устройства мы знаем, что Sony PCT-15 имеет монохромный экран, и одного канала яркости должно быть достаточно. Легко разместить одномерные данные на двухмерном изображении и увидеть результат.

frame_width = 1211
w, h = frame_width, data_am.shape[0]//frame_width
image = Image.new('RGB', (w, h))
px, py = 0, 0
for p in range(data_am.shape[0] - 1):
    lum = int(data_am[p]//128)
    if lum < 0: lum = 0
    if lum > 255: lum = 255
    image.putpixel((px, py), (lum, lum, lum))
    px += 1
    if px >= w:
        px = 0
        py += 1
        if py >= h:
            break

image = image.resize((w//2, 4*h))
plt.imshow(image)

plt.show()

После запуска кода мы, очевидно, можем увидеть закономерность:

Мне неясно, как синхронизация линий работает в реальном устройстве, я могу предположить, что PCT-15 использует заголовок данных для начала приема изображения. Я не знаю формата заголовка, поэтому просто изменил параметр frame_width вручную в исходном коде.

И наконец, мы можем получить изображение:

Числа 0..250 на изображении являются «виртуальными», они зависят только от частоты дискретизации записываемого аудиофайла. Как мы знаем из спецификаций, реальное разрешение изображения составляет всего 96x100, но устройство также может отправлять изображения в режиме «высокого разрешения» 160x100. Я попросил Techmoan в комментариях к видео поделиться образцом WAV «высокого разрешения», но владелец канала с ›1 млн зрителей не считает необходимым отвечать на вопросы подписчиков, так что это единственный образец, который у меня есть. В любом случае, достаточно оценить качество изображения.

Заключение

Было интересно проанализировать данные и посмотреть, что было «передовой» технологией в конце 80-х. Тогда не было ни Skype, ни WhatsApp, а скорость модемной линии составляла порядка 2400–14400 бит (не мегабит :) в секунду, что явно недостаточно для «обычного» видеозвонка. А устройств типа «веб-камеры» даже не было, их просто еще не изобрели. Поэтому инженеры Sony решили использовать медленную аналоговую телевизионную передачу для отправки и приема изображений. Как мы видим, время передачи составляет около 6–10 с на изображение, что, очевидно, достаточно только для неподвижных изображений, но это было лучше, чем ничего - особенно для людей, живущих в разных странах или городах, это мог быть единственный способ увидеть каждое из них. другие в «почти» реальном времени.

Я не знаю, были ли успешными продажи Sony PCT-15 в 80-е годы. Первая веб-камера была представлена ​​позже, в 1994 году, поэтому мог появиться маркетинговый спрос со стороны людей, которые хотели видеть друг друга в то время, когда цифровые и веб-камеры были недоступны. С другой стороны, черно-белое изображение с разрешением 160x100, которое передается примерно за 10 секунд, звучит не так хорошо даже для 80-х годов. В любом случае, совершая видеозвонок со смартфона из отпуска, интересно вспомнить, как зарождалась эта технология, и проявить уважение к инженерам и ученым, которые сделали это простым и возможным.