[Linux]流式传输和块传输

Posted SkyBiuBiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Linux]流式传输和块传输相关的知识,希望对你有一定的参考价值。

在计算机中,流和块(Block)是用于数据传输和处理的两种不同的处理方式,两者之间的主要区别如下:

1. 数据单位不同

流是一系列按顺序排列的数据字符组成的序列,数据以字节为单位进行传输和处理,适用于逐个传递字符流的应用程序。相比之下,块以块为单位进行传输和处理,每个块包含多个字节,可以随意读取、传输和处理,适用于处理大量数据的应用程序。

2. 访问方式不同

流通常顺序读取,只能在数据的开头向后遍历,不支持随机访问和任意长度的读写操作,处理效率相对较低;而块支持随机访问和任意长度的读写操作,能够快速跳转和操作数据,读写操作通常基于块的地址偏移和长度。

3. 处理方式不同

流数据通常在传输过程中进行处理和解析,例如流媒体和网络数据包等;而块数据通常会被缓存在内存中进行预处理和优化,例如转码、解压缩、图像处理和数据库操作等。

4. 优化方式不同

流数据通常需要快速、动态地进行传输和处理,系统需要提供实时处理、流经控制等优化机制,以确保数据的完整性和传输效率;而块数据通常需要稳定、可靠的批量传输和处理,系统需要提供缓存、加锁、事务处理等优化机制,以确保数据的正确性和处理效率。

总的来说,流和块是用于数据传输和处理的两种不同的处理方式,流是一个逐个传递字符流的连续数据序列,适用于逐个字符地读取和传输;而块是由多个连续字节组成的一块数据,支持按块读取、传输和处理,适用于大量数据的读写和传输。

将音频从 Windows 输出设备流式传输到 linux

【中文标题】将音频从 Windows 输出设备流式传输到 linux【英文标题】:Streaming audio from windows output device to linux 【发布时间】:2017-07-20 01:39:46 【问题描述】:

我已经能够使用 LineInCode、plink (Putty) 和 PulseAudio 将音频从 Windows 中的输入设备流式传输到 Linux 机器,但遗憾的是没有选项可以使用 LineInCode 选择 Window 的输出设备,所以我决定制作一个程序。

由Matthew van Eerde 开发的program 已经完成了大部分工作。您可以选择输出设备并录制 wav 文件。因此,与其写入文件,不如将其发送到标准输出,然后 plink 和 pacat 将完成剩下的工作。用他的程序“录制”的音频格式是 WAVE_FORMAT_EXTENSIBLE(子格式)类型,它应该作为 PCM 流式传输到 pacat。所以我的问题是如何从 SubFormat 转换为 PCM 音频格式?

这是 linco 的命令:

linco.exe -B 16 -C 2 -R 44100 | plink -v 192.168.11.5 -l armbian -pw 1234 "cat - | pacat --playback"

PS:我尽量保持客观,抱歉发了这么长的帖子。如果您对如何缩短它有任何想法,请告诉我如何。

关注项目链接:https://github.com/rsegecin/WLStream

【问题讨论】:

【参考方案1】:

windows 输出设备中记录的格式是 PCM 浮动 32 位 little endian,因此需要配置 pacat 才能相应地接收这种格式。我在github 上发布了这个项目。由于 printf 跟不上数据输出,因此还需要将输出数据配置为二进制并使用 fwrite 函数。

在那里见。

【讨论】:

以上是关于[Linux]流式传输和块传输的主要内容,如果未能解决你的问题,请参考以下文章

[Linux]流媒体服务器概述

将音频流式传输到 linux 中的“扬声器服务器”

在linux / bash中使用非阻塞FIFO流式传输视频

将音频流式传输到多个 Web 浏览器

谁会steam家用流式传输

管理/删除/轮换/流式传输 Elastic Beanstalk 日志