• 7712阅读
  • 6回复

Qt中能把语音数据都转化为二进制数据流吗? [复制链接]

上一主题 下一主题
离线磐石
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-02
— 本帖被 午小夜 执行加亮操作(2010-03-02) —
QImage image("flower.jpg");
QByteArray ba;
QDataStream image_out(&ba,QIODevice::WriteOnly);
image_out<<image;
这段是把图片数据转化为二进制数据存于数组ba中吧,
那请问一下,如何把语音数据(比如说,MP3 ,WAV文件)类似上面转化为二进制数据呢?
大侠请帮忙一下,谢谢
不怕做不到,只怕想不到
离线318065268
只看该作者 1楼 发表于: 2010-03-02
上面那段不是把它们转化成二进制数据。
图片文件或者语音文件本身就已经是二进制数据了。
使用QDataStream不过是为了传输后解析的时候更加容易,能够直接解析成一个image。
可以在论坛里面搜索一下QDataStream相关的知识,很多的。
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线磐石
只看该作者 2楼 发表于: 2010-03-02
引用第1楼318065268于2010-03-02 19:03发表的  :
上面那段不是把它们转化成二进制数据。
图片文件或者语音文件本身就已经是二进制数据了。
使用QDataStream不过是为了传输后解析的时候更加容易,能够直接解析成一个image。
可以在论坛里面搜索一下QDataStream相关的知识,很多的。

论坛中QDataStream相关都看了,但还是没搞清楚
先问一下,以下这几句代码能实现把bb.txt复制成aa.txt吗,我主要先想看一下能不能把TXT文件存入数组中,再把数组中数据重新保存为TXT文件,试了一下,能生成aa.txt文件,但是里面内容是乱码的,不知问题出哪
  QFile file("bb.txt");
   QByteArray ba;
   file.open(QIODevice::ReadOnly);
   QDataStream out(&file);
   out.setVersion(QDataStream::Qt_4_5);
   out>>ba;
   file.close();
   QFile file2;
   file2.setFileName("aa.txt");
   file2.open(QIODevice::WriteOnly);
  
   QDataStream in(&file2);
   in.setVersion(QDataStream::Qt_4_5);
   in<<ba;
    file2.close();
[ 此帖被磐石在2010-03-02 21:35重新编辑 ]
不怕做不到,只怕想不到
离线磐石
只看该作者 3楼 发表于: 2010-03-03
没人做过吗?我想通过QUdpSocket,局域网内传语音数据
不怕做不到,只怕想不到
离线sbtree
只看该作者 4楼 发表于: 2010-03-03
引用第2楼磐石于2010-03-02 21:17发表的  :
论坛中QDataStream相关都看了,但还是没搞清楚
先问一下,以下这几句代码能实现把bb.txt复制成aa.txt吗,我主要先想看一下能不能把TXT文件存入数组中,再把数组中数据重新保存为TXT文件,试了一下,能生成aa.txt文件,但是里面内容是乱码的,不知问题出哪
  QFile file("bb.txt");
   QByteArray ba;
   file.open(QIODevice::ReadOnly);
   QDataStream out(&file);
   out.setVersion(QDataStream::Qt_4_5);
   out>>ba;
   file.close();
   QFile file2;
   file2.setFileName("aa.txt");
   file2.open(QIODevice::WriteOnly);
  
   QDataStream in(&file2);
   in.setVersion(QDataStream::Qt_4_5);
   in<<ba;
    file2.close();

帮你改了一下
    QFile file("bb.txt");
    QByteArray ba(file.size(),0);
    file.open(QIODevice::ReadOnly);
    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_5);
    //out>>ba;
    out.readRawData(ba.data(),ba.count()); //new

    file.close();
    QFile file2;
    file2.setFileName("aa.txt");
    file2.open(QIODevice::WriteOnly);

    QDataStream in(&file2);
    in.setVersion(QDataStream::Qt_4_5);
    //in<<ba;
    in.writeRawData(ba.data(),ba.count()); //new

    file2.close();
windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 5楼 发表于: 2010-03-03
另外补充一句,计算机中的所有文件概括地讲都是二进制文件,因为任何文件都是由最小的计算机可识别的单位,即二进制的位来表达的。所谓的文本文件,视频文件,音频文件等等无非都是在二进制之上重新定义的规则而已。流数据也不分二进制流和其他进制流,因为没有这种概念,所谓的流数据就是一个字节接着一个字节的序列,当人们对这些序列赋予了一种规则,所谓的编码,也就成了目前令人眼花缭乱的各种文件格式了,依据这种规则人们才命名了文本文件,音频文件等。
题外话了,普及一下计算机知识而已。
[ 此帖被sbtree在2010-03-03 22:29重新编辑 ]
windows 7 + VC++2008 + Qt4.5.2
离线磐石
只看该作者 6楼 发表于: 2010-03-04
引用第5楼sbtree于2010-03-03 22:17发表的  :
另外补充一句,计算机中的所有文件概括地讲都是二进制文件,因为任何文件都是由最小的计算机可识别的单位,即二进制的位来表达的。所谓的文本文件,视频文件,音频文件等等无非都是在二进制之上重新定义的规则而已。流数据也不分二进制流和其他进制流,因为没有这种概念,所谓的流数据就是一个字节接着一个字节的序列,当人们对这些序列赋予了一种规则,所谓的编码,也就成了目前令人眼花缭乱的各种文件格式了,依据这种规则人们才命名了文本文件,音频文件等。
题外话了,普及一下计算机知识而已。

恩,谢谢,谢谢,又长知识了.
不怕做不到,只怕想不到
快速回复
限100 字节
 
上一个 下一个