如果将视频或者音频的字节流解码成字符流,是否有可能出现任何字符?字节值是否可能为-1?

发布于 2022-09-07 07:56:39 字数 130 浏览 16 评论 0

比如:new byte[]{-1}

byte b = (byte) in.read();

读到某一个字节b值为-1,并且属于视频或者音频的字节,有可能吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白馒头 2022-09-14 07:56:39

当然可能!你试试用文本编辑器打开一个MP4视频文件,看看开头5-12字节是不是ftypmp42? 再比如任意一个zip压缩包,你打开前两个字节看看,是不是PK?(这是为了纪念它的发明人Philip Katz,使得无损压缩领域绝无可能被垄断)

对于任意一种二进制格式(除文本文件外的),基本都会按照以下套路存储文件:

Header + Data

Header部分基本都存在于文件开头部分若干的固定长度的字节,里面大部分内容都是纯文本内容,因此可以用文本编辑器直接看到这些内容,一般都是文件长度啊,作者信息啊,一些编码数据啊等等元数据信息。之后才是Data部分。

一些文件甚至还会包含Tail部分,表示文件已经结束了。比如jpeg就属于这一种。这也是早年流行一时的将压缩包隐藏到图片文件中的黑科技的原理。因为有Tail部分,所以图片浏览器就认为文件已经结束了,后面的部分不再视为图片,于是乎将压缩包追加到后面的文件内容中,可以被压缩工具识别到。

所以理论上,你完全可以将这些文件的头部存成一张大表,根据文件头的特征确定是什么文件。但目前你没必要自己这么做了,因为有人已经帮你整理好了,MIME了解一下?

我们的影子 2022-09-14 07:56:39

是的,因为音视频都是压缩格式,出现0~255的任意字符都有可能

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文