1.字节流与字符流

所有文件在磁盘中的存储都是字节形式,而字符是在内存中形成的。

  • 字符流是对两个字节编码,比如说文本文件中存储字符串(一段英文或者汉字),有很多种编码吧,UTF-8、Unicode等;
  • 而字节是一次只处理一个字节,比如说针对图片或者二进制文件。

适用情况:

字符流适用多国语言,关于文本的使用字符流比较好;而针对图片、视频、音频这些要使用字节流。

2.区别

字节流 python unicode编码 字节字符流_字节流

 

字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的;而字符流在操作的时候是使用到缓冲区的,通过缓冲区再操作文件。

缓冲区是什么?

一段内存区域,

字节流 python unicode编码 字节字符流_字符流_02

//字符需要转换为字节才能写入文件,那字节怎么就直接写入了?还是说因为读取的时候就需要那一段缓冲区来存储所有的字符,而不是专门在写出时开辟的内存吧,这样理解好一点。还是不太懂为什么字节流就可以直接操作,因为它不需要转换成字符?读进来直接写出?没有编码成字符的过程?那么这么说其实文本文件也可以通过字节流来操作了,就能实现不使用缓冲区写出?

3.联系

https://www.zhihu.com/question/39262026

字节,一个字节=8位,大多数情况下,字节是数据最小的基本单位。那么如何将字节表示为有意义的人类能够看懂的数据呢?就出现了不同的编码机制。

UTF-16中用两个字节来表示一个字符。

UTF-8中用到了可变长编码,用几位冗余信息告诉系统,当前字符有没有结束,是不是还需要继续往下读下一个字节。

 

那么视频是如何编码解码的呢?

https://zhuanlan.zhihu.com/p/93398878,https://zhuanlan.zhihu.com/p/143993517

针对图片来说,可以视为一个二维矩阵,彩色图片有RGB三个通道,可以实现编码解码。

那么对于视频,从时间序列上的帧,对画面可以进行隔行扫描等。

使用 VideoCapture视频捕获对象,去捕获视频流, opencv会自动完成视频流的解码操作,并返回视频流的编码格式、帧率等信息。