面试题答案
一键面试Node.js Stream基本概念
Stream 是 Node.js 中处理流数据的抽象接口。它基于事件驱动,允许以流的方式处理数据,而非一次性加载全部数据到内存。这在处理大量数据,如文件读写、网络通信等场景下,能有效降低内存占用,提高性能。Stream 有四种基本类型:可读流(Readable Stream)、可写流(Writable Stream)、双工流(Duplex Stream)和转换流(Transform Stream)。
视频流媒体场景下的可读流
- 视频文件读取:从存储设备(如硬盘)读取视频文件数据。例如使用
fs.createReadStream
创建可读流,以逐块的方式读取视频文件内容,而不是一次性将整个视频文件读入内存。 - 网络接收视频数据:在网络环境中,通过网络套接字接收视频流数据。比如在 HTTP 或 RTMP 等协议的视频流传输过程中,接收端使用可读流来接收从服务器发送过来的视频数据包。
视频流媒体场景下的可写流
- 视频解码与渲染:将接收到的编码视频数据写入到视频解码器,解码器处理后的数据再写入到渲染组件(如画布或视频播放器)进行播放。例如在 HTML5 中,可将解码后的视频帧数据写入
<canvas>
元素进行渲染展示。 - 视频存储:如果需要对视频进行录制或存储,可写流用于将接收到的视频数据写入到存储设备(如硬盘)的文件中。比如使用
fs.createWriteStream
将视频数据写入新的视频文件。