关于视频采集和压缩等问题。。。

时间:2021-10-21 11:33:54
用VideoCap组件采集到的视频数据存为AVI文件以后,怎么保存到数据库里面去?我用的数据库系统是MS SQL Swrver。请教做过这方面应用的朋友,怎么把AVI文件压缩以后保存到数据库中去?我想用MemoryStream实现,但不成功。在从数据库中读出数据以后,怎么把它解压并重放出来?这里主要有三个问题:A、AVI文件存到数据库中的方法;B、AVI文件的压缩(我只是大概的知道要用到IC***等,但不知道实现细节);C、AVI文件的解压(可能也要用到IC***);

小弟用得急。请教大家了,谢谢。。

15 个解决方案

#1


问题很难,但很好。我们也在这方面研究。但还没有你的进展快。
你们有一台机器 采集24路 视频信号的 并且用 mpeg4 压缩的吗?
我们一直在作 但没成功。

#2


如果AVI本身就是压缩过的,是否还有继续压缩的必要;SQLSERVER中有二进制数字,以前保存过其它内容,WORD、EXCEL等文档,保存AVI应该也可以吧;IC***是什么啊?以前用过一个LZW压缩的控件,直接压缩数据流的,不知道你的要求有多高....

#3


你可以用striingStream,把AVI转换以流的形式传给StringStream流。
用StringSTream的一个方法保存到字符串,保存到数据库。
读出数据时一定要用StringStream流读,否则会出错!

#4


使用blob字段或loadfromstream()

#5


yaoyuhang(汤姆):我是用电脑上的采集设备(如采集卡)采集视频数据的,在采集的时候就把它存为一个AVI文件了。压缩方法并没有定,初步想法是让用户选择压缩组件,再进行压缩。但如果不让用户选择也可以,这就要用自己先对比一下哪种压缩方法最好。

disney(编程乐园):IC***是WINDOWS一组关于压缩和解压缩的对像库,我就是想用它来找出系统中可用的压缩组件让用户选择,再进行压缩的。你可以把LZW压缩的控件发一份给我吗?我试试。先谢谢了。arcore@163.com

guolinchao(潮):谢谢指点,我马上去试试。。

#6


问:yaoyuhang(汤姆) 
24路?  Mpeg4?  我看错了?  我以前做能压四路就很不错了!

成功的时候告诉我一下! 向你学习!

#7


videocap中不是有个VideoCompressor属性吗?它的初值为0,实际上有11中压缩方式,可选择0-10,程序中选择 的代码是:
procedure AssignListToComboBox (ComboBox: TComboBox; List: String; Index: integer);
begin
  ComboBox.Text := '';
  ComboBox.Items.Text := List;
  if ComboBox.Items.Count > 0 then begin
      ComboBox.ItemIndex := Index;
   end;
end; 这里建立了一个combobox控件
然后
procedure TForm1.FormCreate(Sender: TObject);
begin
   AssignListToComboBox (ComboBox1, VideoGrabber1.VideoCompressors, VideoGrabber1.VideoCompressor);
end;
调用就可以选择了!

#8


UP

#9


关注

#10


用sql保存avi?,没搞错吧,
一般采集到的数据是经过高比率压缩的,比如mpeng2,mpeng4,wmv等,avi文件格式占用空间太大了,

#11


不好意思,上面说错了

用sql保存avi?,没搞错吧,
一般采集到的数据是经过高比率压缩再保存的,比如mpeng2,mpeng4,wmv等,avi文件格式占用空间太大了,

#12


不好意思,上面说错了

用sql保存avi?,没搞错吧,
一般采集到的数据是经过高比率压缩再保存的,比如mpeg2,mpeg4,wmv等,avi文件格式占用空间太大了,

#13


To rwdx(任我独行) :

我就是为这个烦,独行兄可不可以讲讲怎么实现?

#14


看来你的采集卡不支持MPEG4的多
我使用的是MPEG4采集卡
直接生成ASF,你要把此数据放入数据库,看来有些困难,因为
数据量简直就是海量,有必要吗?

#15


我个人赞同rwdx(任我独行)的观点,avi格式不适宜保存或网络共享,但我们以前开发的,用delphi开发的,都是用视频卡自带的开发包,用硬件压缩的,软件我怀疑压缩速度能否跟的上,而且,用delphi开发的都是简单应用,高级一点的,都是用VC的,好象VC的相关压缩,解压的包容易找一点!

#1


问题很难,但很好。我们也在这方面研究。但还没有你的进展快。
你们有一台机器 采集24路 视频信号的 并且用 mpeg4 压缩的吗?
我们一直在作 但没成功。

#2


如果AVI本身就是压缩过的,是否还有继续压缩的必要;SQLSERVER中有二进制数字,以前保存过其它内容,WORD、EXCEL等文档,保存AVI应该也可以吧;IC***是什么啊?以前用过一个LZW压缩的控件,直接压缩数据流的,不知道你的要求有多高....

#3


你可以用striingStream,把AVI转换以流的形式传给StringStream流。
用StringSTream的一个方法保存到字符串,保存到数据库。
读出数据时一定要用StringStream流读,否则会出错!

#4


使用blob字段或loadfromstream()

#5


yaoyuhang(汤姆):我是用电脑上的采集设备(如采集卡)采集视频数据的,在采集的时候就把它存为一个AVI文件了。压缩方法并没有定,初步想法是让用户选择压缩组件,再进行压缩。但如果不让用户选择也可以,这就要用自己先对比一下哪种压缩方法最好。

disney(编程乐园):IC***是WINDOWS一组关于压缩和解压缩的对像库,我就是想用它来找出系统中可用的压缩组件让用户选择,再进行压缩的。你可以把LZW压缩的控件发一份给我吗?我试试。先谢谢了。arcore@163.com

guolinchao(潮):谢谢指点,我马上去试试。。

#6


问:yaoyuhang(汤姆) 
24路?  Mpeg4?  我看错了?  我以前做能压四路就很不错了!

成功的时候告诉我一下! 向你学习!

#7


videocap中不是有个VideoCompressor属性吗?它的初值为0,实际上有11中压缩方式,可选择0-10,程序中选择 的代码是:
procedure AssignListToComboBox (ComboBox: TComboBox; List: String; Index: integer);
begin
  ComboBox.Text := '';
  ComboBox.Items.Text := List;
  if ComboBox.Items.Count > 0 then begin
      ComboBox.ItemIndex := Index;
   end;
end; 这里建立了一个combobox控件
然后
procedure TForm1.FormCreate(Sender: TObject);
begin
   AssignListToComboBox (ComboBox1, VideoGrabber1.VideoCompressors, VideoGrabber1.VideoCompressor);
end;
调用就可以选择了!

#8


UP

#9


关注

#10


用sql保存avi?,没搞错吧,
一般采集到的数据是经过高比率压缩的,比如mpeng2,mpeng4,wmv等,avi文件格式占用空间太大了,

#11


不好意思,上面说错了

用sql保存avi?,没搞错吧,
一般采集到的数据是经过高比率压缩再保存的,比如mpeng2,mpeng4,wmv等,avi文件格式占用空间太大了,

#12


不好意思,上面说错了

用sql保存avi?,没搞错吧,
一般采集到的数据是经过高比率压缩再保存的,比如mpeg2,mpeg4,wmv等,avi文件格式占用空间太大了,

#13


To rwdx(任我独行) :

我就是为这个烦,独行兄可不可以讲讲怎么实现?

#14


看来你的采集卡不支持MPEG4的多
我使用的是MPEG4采集卡
直接生成ASF,你要把此数据放入数据库,看来有些困难,因为
数据量简直就是海量,有必要吗?

#15


我个人赞同rwdx(任我独行)的观点,avi格式不适宜保存或网络共享,但我们以前开发的,用delphi开发的,都是用视频卡自带的开发包,用硬件压缩的,软件我怀疑压缩速度能否跟的上,而且,用delphi开发的都是简单应用,高级一点的,都是用VC的,好象VC的相关压缩,解压的包容易找一点!