AVI格式视频转YUV

  网上找这一方面找的还蛮困难的,开始只能找到别人写的一长串的代码,但不想用这种方式,觉得麻烦。现在也不知道这个问题算解决没有,因为感觉播放不是很清楚,打算明天找找比较两个视频的异同的指标乃至代码,看转换后的 yuv 视频质量没有下降的很厉害吧。

  我是想把图像序列直接转换为 yuv 格式的视频,开始看需要复现的论文里说用的ImageJ工具就解决了,于是下了这个,使用还挺方便的,解压后点击 exe 文件就可以用了(需要 java 环境),导入图像序列过程如下:File-->Import-->Image Sequence,找到你要导入的图像的文件夹,点击第一个或者你想要作为开头的图像,就会出现下面的框框,第一个空就是设置导入的图像张数,默认的就是整个文件夹的图像数量,然后红框那里要勾上,看网上解释说勾选后无论多长的序列都可以很快导入,就不怕大内存啦。

                                                            AVI格式视频转YUV_第1张图片

      导入后就是导出了,然而 File-->Save As 并没有 yuv 格式的选项,先到网上查了半天的 ImageJ 软件可否转换为 yuv 格式的视频,还去它本身的论坛查了(https://forum.image.sc/top/weekly),没有,甚至自己提了这个问题(因为网站是纯英文的,提问时也写的英文的,洋洋洒洒写了几行,本英语渣渣感觉,还蛮好),就另寻它路了。我就先导出为avi格式的,但让我自己设置帧率,我查了下网上说,一般25帧就是流畅的,我没玩过这些嘛,就导出了两种帧率的视频,一个10fps,一个25fps,但前者是无压缩方式,后者是JPEG压缩方式。

     因为 yuv 本身是一种颜色编码格式,应该算不上视频格式,所以图像和视频基础并不好的我,也不知道我的这个搜索方向对不对,而且我使用的图像本身就是灰度图像,没有颜色。查的过程中,看到有人提出一样的问题,然后下面的回答说:“你应该查 RGB 如何转换为 YUV,而不是 AVI 转 YUV”,遂这样查,接着再继续遨游,看到说 ffmpeg 一行命令就能把 avi 转换为 yuv,也确实是一句话,真的简单粗暴呀,心动不如行动,于是马上下载,看介绍,ffmpeg 是一个强大的图像和视频处理工具,和 ImageJ 一样很有用,不过关于 ImageJ 我看到的大多是关于处理细胞计数啥啥的,有很多插件使得软件功能更强大。但是我应该是到不了那个地步了。

     ffmpeg同样是解压后,但还要加入环境变量:此电脑-->属性-->高级系统设置-->环境变量-->系统变量的 Path

                                        AVI格式视频转YUV_第2张图片

      win10的添加变量就比 win7的方便多啦,复制路径到 bin 文件夹,粘贴就好。我开始是直接点击 bin 里面的 ffmpeg.exe,但是闪退,我就进入 cmd 操作,avi 转 yuv 的命令我是用的这个:

ffmpeg -i input_file -vcodec rawvideo -an output_file.yuv

       然后我本身是这样写的:ffmpeg -i 文件路径\视频名.avi -vcodec rawvideo -an 输出文件路径\视频名.yuv

       一开始我用的的10fps 的视频来转换,也确实输出了,但打开一片绿色,还不停地闪,于是又到处查为什么绿色,但没有查到。本来要放弃了,突然想到那个25fps 的视频,结果输出画面正常的 yuv 文件了!

      但是只有JPEG方式压缩的视频才能导出正常的yuv视频,所以这个转换方法感觉不行。

        嗐只能说我道行太浅。打算明天弄弄文章开头的想法,预祝我顺利。要是转换后的质量真的降低很多,不然,我要重新找转换方法了。

你可能感兴趣的:(ffmpeg,imagej,视频处理)