个性化阅读
专注于IT技术分析

如何在Ubuntu 18.04中使用Python创建慢速扫描电视传输(SSTV)音频文件

本文概述

SSTV的早期传输模式已在带有雷达CRT的长时间固定监视器上显示。每个图像帧的传输持续时间为7.2至8秒, 并且当接收到最后一行时, 第一行仍然可见。可以在黑暗的房间中看到整个图片。

这种传输方式最著名的格式是马丁系统。马丁系统使我们能够以四种不同的模式/速度工作。最受欢迎的版本是Martin M1, 两分钟内每帧256行。马丁系统的其他模式具有最佳质量M1的一半或一半的水平分辨率。模式M4具有最低质量和128条线路。欧洲站之间经常使用马丁M1和M2模式:

模式名称 转移时间 解析度 颜色顺序 Scan line (ms) Speed (1pm)
同步 G [R
马丁M1 114秒 320 X 256 G—B—R。 4.862 146.432 146.432 146.432 134.394753
马丁M2 58秒 160 X 256 G—B—R 4.862 73.216 73.216 73.216 264.552598
马丁M3 57秒 320 X 128 G—B—R。 4.862 146.432 146.432 146.432 134.394753
马丁M4 29秒 160 X 128 G—B—R。 4.862 73.216 73.216 73.216 264.552598

在本文中, 我们将向你简要说明如何在Ubuntu 18.04桌面上使用Python中的pySSTV库将图像转换为SSTV音频文件。

安装要求

为了使用pySSTV库, 你将需要在系统上安装python-pil库。 Python Imaging Library(PIL)为你的Python解释器添加了图像处理功能。该库支持多种文件格式, 并提供强大的图像处理和图形功能。

你可以在终端中使用以下命令将其安装在系统上:

sudo apt-get install python-pil

你还将需要安装python的六个模块。六个提供了用于包装Python 2和Python 3之间差异的简单实用程序。它旨在支持无需修改即可在Python 2和3上运行的代码库。六个文件仅包含一个Python文件, 因此可以轻松复制到项目中。你可以使用PIP进行安装, 但是如果尚未安装pip, 请首先使用以下命令进行安装:

sudo apt-get install python-pip

并提供点子后, 安装:

pip install six

现在, 你已经拥有pySSTV所需的库, 你将能够下载它并在终端上使用它。

1.下载pySSTV

使用以下命令下载带有Git的pySSTV项目(如果尚未安装git, 请使用sudo apt-get install git安装它):

git clone https://github.com/dnet/pySSTV.git

PySSTV从PIL可以打开的任何图像(PNG, JPEG, GIF等)生成SSTV调制的WAV文件。然后, 这些WAV文件可以由连接到短波收音机的任何音频播放器播放。开发人员的主要动机是要了解SSTV的内部原理是如何工作的, 因此该库的性能远非最佳, 但结果却非常实用。该代码易于阅读, 并且仅执行了不会使代码库复杂化的优化。

有关此库的更多信息, 请访问Github上的官方存储库。

2.从图像创建SSTV音频文件

在克隆的存储库中, 你将找到pysstv.py文件, 该文件基本上是该工具的代码。你可以执行此工具以从图像生成SSTV音频文件, 然后可以使用支持此类数据的特殊工具对其进行解码。该脚本支持以下格式:

  • 马丁M1
  • 马丁M2
  • 斯科蒂S1
  • 斯科蒂S2
  • 机械手36
  • PasokonP3
  • PasokonP5
  • PasokonP7
  • PD90
  • PD120
  • PD160
  • PD180
  • PD240
  • 机械手8BW
  • 机械手24BW

可以使用–mode标志指定模式。该命令按各自的顺序需要2个位置参数(要转换的图像的输入路径)。此外, 它还支持以下选项:

  • –help:显示此帮助消息并退出
  • -模式:{MartinM1, MartinM2, ScottieS1, ScottieS2, Robot36, PasokonP3, PasokonP5, PasokonP7, PD90, PD120D160, PD180, PD240, Robot8BW, Robot24BW}, 默认图像模式为Martin M1
  • –rate:RATE采样率(默认值:48000)
  • –bits:每个样本的BITS位(默认值:16)
  • –vox:在开头添加VOX音调
  • –fskid:FSKID在末尾添加FSKID
  • –chan:CHAN通道数(默认值:单声道)

从图像生成音频文件的最简单方法是使用以下命令, 其中pysstv对应于脚本的路径。我们将使用MartinM1模式, 但是你可以自由使用所需的格式:

python -m pysstv --mode MartinM1 ./path-to/input-picture.jpg ./output-audio.wav

运行该命令后, 它将生成output-audio.wav文件, 其中包含具有指定格式频率的音频。 sstv模块中的SSTV类实现与SSTV相关的基本功能, 而其他模块的类(例如灰度和彩色)对此进行了扩展。大多数实例实现以下方法:

  • __init__会获取一个PIL图像, 每秒的采样数以及每个采样的位数作为参数, 但是不执行任何硬计算
  • gen_freq_bits生成描述正弦波段的元组, 频率为Hz, 持续时间为ms
  • gen_values生成介于-1和+1之间的样本, 并根据构造期间给出的每秒样本数执行采样
  • gen_samples生成离散样本, 并根据构造期间给出的每个样本值的位数执行量化
  • write_wav将整个图像写入Microsoft WAV文件

上面的方法都是基于上面的方法, 例如write_wav调用gen_samples, 而后者调用gen_values, 因此通常, 仅第一个和最后一个, 也许应该直接调用最后两个, 为方便起见, 这里仅列出了其他方法完整性, 并使流程更易于理解。

如果阅读本教程, 你也可以在Ubuntu 18.04中学习如何再次将此音频文件解码为图像。

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Ubuntu 18.04中使用Python创建慢速扫描电视传输(SSTV)音频文件

评论 抢沙发

评论前必须登录!