最终幻想14游戏视频H有多少给多少,不要游戏要视频。...

对于FFmpeg相信做视频或图像处理这一块的都不会陌生,在网上也能找到很多相关的代码,但由于版本不同等原因,往往找到的代码都是需要自行修改才可以用,为此本人希望能尽绵薄之力,将开发包和自行编写的代码都放出来,如果初学者想要可以直接运行的代码做参考的话,可以下载我放出的FFmpeg开发包进行配置(配置的教程地址如下:),然后参考我写的编解码代码来进行程序的开发。

    下面贴出的是我自己封装的FFmpeg视频压缩代码,如有更好的建议请告诉我,转载请注明出处。

    首先我们设计一个视频压缩相关的类,定义如下

 
 
 c->max_b_frames = 1;//设置B帧最大数,该值表示在两个非B帧之间,所允许插入的B帧的最大帧数
 
 
 
 
 
 
 
 
 
 
最后我们只需要在主函数对这几个函数进行调用就可以了,由于本人为了方便直接用OpencCV来打开图像并取得图像的数据区,所以如果希望直接运行本人后面所发的工程的话还需要自行去配置OpenCV,不过这个在网上实在是说烂了,随便找找就能配置出来。如果不希望用OpenCV来打开图像的话,本人在代码中也注明了应该修改的位置,可自行想办法得到图像数据区并放入视频压缩函数即可。
 
 /**此部分用的是OpenCV读入图像对象并取得图像的数据区,也可以用别的方法获得图像数据区**/
 
 
 
OK,到此用FFmpeg进行视频压缩的博客就告一段落了,下面是整个工程的下载地址:,不过如果想要运行起来配置OpenCV还是需要自行动手的哈哈。
另外在做项目的过程中在编码这块还遇到一个很奇怪的问题,就是在编码调用到avcodec_encode_video2特别是工程也调用到解码函数的时候,在VS里面点击运行是没有问题的,但一运行release文件夹下面编译出来的exe文件,程序偶尔会报内存错误,错误的位置在avcodec_encode_video2这个函数里面。这个让人百思不得其解,后来想想或者VS在运行的时候兼容性比较好,所以没有这个问题,是故如下图对exe文件的兼容性进行设置

 
最新版本的FFmpeg(4.0.2)由于修改了很多接口,导致原来的函数有些不能用了,因此本人结合官方提供的sample,修改出一个编码图像为264视频的程序,代码如下:

  
 
当然也可以像上面那样把整块编码代码封装成类,以供调用,代码如下:
 c->max_b_frames = 1;//设置B帧最大数,该值表示在两个非B帧之间,所允许插入的B帧的最大帧数
 
 /**此部分用的是OpenCV读入图像对象并取得图像的数据区,也可以用别的方法获得图像数据区**/

小提示:直接在B站视频地址".com"前面加上jj,回车即可到下载页面!

参考资料

 

随机推荐