视频帧帧比较后,以图片形式存储

vivian081013 2017-03-13 04:06:54
准备毕业论文,导师给的方向是视频的压缩与存储方面。我的想法是先对视频进行帧帧比较,然后丢掉那些相同的帧,不同的帧图片只保存一次。将这些图片存储在Hadoop中,每张图片给一个序号,丢弃掉的帧序号同时丢弃掉。在需要查看的时候,再将图片以视频形式输出,对于缺失的序号帧,就将前一帧图片多次播放。
目前,我用感知哈希算法比较图片的相似性,基本可以识别相似度高的图片。但是,对于上面的想法如何变成可实施操作,希望各位大神给些意见啊!!!!
...全文
730 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivian081013 2017-03-14
  • 打赏
  • 举报
回复
引用 4 楼 sunny7862632 的回复:
这样压缩之后,视频文件大了10倍 这样也能毕业的话,这个研究生也是够水的
怎么说?视频以图片的形式存储反而会变大吗?那你对视频压缩方面有什么好的建议?
sunny7862632 2017-03-14
  • 打赏
  • 举报
回复
这样压缩之后,视频文件大了10倍 这样也能毕业的话,这个研究生也是够水的
vivian081013 2017-03-14
  • 打赏
  • 举报
回复
引用 2 楼 qprevf 的回复:
用ffmpeg, 可以先把视频拆解成一张张的图片存储在本地, 然后进行你的比较算法, 再用ffmpeg把处理过后的图片集打包成视频 ffmpeg -i video.mp4 -f image2 image%05d.jpg, 拆解视频, ffmpeg -f concat imagelist.txt video.mp4或则ffmpeg -f image2 -i image%05d.jpg video.mp4 把图片打包成视频.
你的意思是把图片集打包成视频再存储吗?以视频的形式存储?那不是起不到压缩的作用了?打包后的视频和处理前的视频有什么区别吗?
sunny7862632 2017-03-14
  • 打赏
  • 举报
回复
引用 7 楼 vivian081013 的回复:
[quote=引用 6 楼 sunny7862632 的回复:] [quote=引用 5 楼 vivian081013 的回复:] [quote=引用 4 楼 sunny7862632 的回复:] 这样压缩之后,视频文件大了10倍 这样也能毕业的话,这个研究生也是够水的
怎么说?视频以图片的形式存储反而会变大吗?那你对视频压缩方面有什么好的建议?[/quote] 所以说你是够水的,建议你先看看mepg,h264,h265等算法是怎么实现压缩的再说,按你这种用图片存10倍都是最理想的,几十倍都有可能[/quote] h264无非就是帧内压缩和帧间压缩嘛,正是因为帧和帧之间存在相关性,我才想到去掉多余相似度高的帧啊。在这一块我确实不太懂,只不过导师说写这方面。希望你能给些有用的建议,而不是说风凉话。[/quote] 不懂就应该去学,既然是做研究的,至少把现有的技术研究清楚才能提出创新吧。H264和H265本身就做了你所说的工作,而且做得比你想的要好得多。I帧,P帧,B帧,远比你所谓的删掉一帧效果好,而且体积也小。H265现在能做到200:1的压缩比率,自己算算你想的方法能达到多少?10倍说实话都是抬举了
vivian081013 2017-03-14
  • 打赏
  • 举报
回复
引用 6 楼 sunny7862632 的回复:
[quote=引用 5 楼 vivian081013 的回复:] [quote=引用 4 楼 sunny7862632 的回复:] 这样压缩之后,视频文件大了10倍 这样也能毕业的话,这个研究生也是够水的
怎么说?视频以图片的形式存储反而会变大吗?那你对视频压缩方面有什么好的建议?[/quote] 所以说你是够水的,建议你先看看mepg,h264,h265等算法是怎么实现压缩的再说,按你这种用图片存10倍都是最理想的,几十倍都有可能[/quote] h264无非就是帧内压缩和帧间压缩嘛,正是因为帧和帧之间存在相关性,我才想到去掉多余相似度高的帧啊。在这一块我确实不太懂,只不过导师说写这方面。希望你能给些有用的建议,而不是说风凉话。
sunny7862632 2017-03-14
  • 打赏
  • 举报
回复
引用 5 楼 vivian081013 的回复:
[quote=引用 4 楼 sunny7862632 的回复:] 这样压缩之后,视频文件大了10倍 这样也能毕业的话,这个研究生也是够水的
怎么说?视频以图片的形式存储反而会变大吗?那你对视频压缩方面有什么好的建议?[/quote] 所以说你是够水的,建议你先看看mepg,h264,h265等算法是怎么实现压缩的再说,按你这种用图片存10倍都是最理想的,几十倍都有可能
qprevf 2017-03-13
  • 打赏
  • 举报
回复
用ffmpeg, 可以先把视频拆解成一张张的图片存储在本地, 然后进行你的比较算法, 再用ffmpeg把处理过后的图片集打包成视频 ffmpeg -i video.mp4 -f image2 image%05d.jpg, 拆解视频, ffmpeg -f concat imagelist.txt video.mp4或则ffmpeg -f image2 -i image%05d.jpg video.mp4 把图片打包成视频.
rightorwrong 2017-03-13
  • 打赏
  • 举报
回复
网络数据吗?用ffmpeg解码。要比较I帧,若是丢掉一个中间帧,那么你下面的帧就解码不了啦
一、问题的提出 做运动分析检测,需要有一定的素材视频,但是素材视频的编码OpenCV不能识别,无法对指定的视频做实验,怎么素材视频通用化使得OpenCV能正常识别? 二、解决的方法 (1)素材视频总是有配套的播放器来播放,那么使用这个播放器查看总数,和总播放时长,计算出率为25,表示一秒钟播放25图像。 (2)用这个配套的播放器对素材视频进行逐步进抓图,这个操作很辛苦,一秒钟25,那么抓25是一秒,素材视频30秒就要抓750,很辛苦。 (3)抓完后,发现一图1.4M,以位图格式保存,那么30秒就要达到1G的存储空间,怎么办?没办法,不知道怎么去获取解码器和安装解码器,就只能这么忍受。察看到逐步进抓图的存储是按序列编排文件名,那么要修改好使得每个文件名都是以规则“文件名”+“序列”的形式存在。 (4)编写根据序列图生成率25的视频的代码 三、问题的解决: (1)解决一个字符串合并的问题: 由于字符串参数有个赋值格式化设置函数叫做Format,要实现多类型参数的字符串化,可以参照如下示例: float f = 0.0; char sz[128]; int n = 1; CString str; str.Format("%f%s%d",f,sz,n); (2)采用MJPG的编码格式依次将这些图像序列写入到视频中保存起来,采用MJPG的编码格式是因为操作系统自带了Media player播放器,这种编码格式属于无压缩的,Media player可以识别播放。 (3)实现方式是使用MFC对话框窗体的按钮事件来进行视频的逐写图,由于数多,那么在写入器循环做写这个动作的时候,整个程序是假死在那里直到写入器的写入操作终结。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧