SauronKing

写随笔只是为了记录自己的曾经,如果能给您带来些许方便,那是我莫大的荣幸!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

视频播放器-视频播放前期调研

视频播放器-使用FFMPEG技术对视频解封装和解码

视频播放器-使用SoundTouch算法库对声音进行变速

视频播放器-使用OpenAL技术播放声音

视频播放器-使用封装的C++插件在Unity3d中播放视频

视频播放器-FFMPEG官方库,包含lib,include,bin x64和x86平台的所有文件,提取码4v2c

视频播放器-LQVideo实现视频解码C++源代码,提取码br9u

视频播放器-SoundTouch实现声音变速的C++源代码,提取码6htk

视频播放器-官方openal安装文件,提取码yl3j

视频播放器-OpenAL实现音频播放功能,提取码mjp2

 

根据项目需求,视频播放器需要满足如下要求:

  1. 视频可以设置时间点,时间点触发事件,所以视频必须保证能准确切换到某一个时间点
  2. 多个视频同时播放
  3. 视频保证预加载,两个视频之间可以无缝衔接
  4. 视频播放完可以停留在第一帧,也可以停留在最后一帧
  5. 视频和音频支持倍速播放,音频倍速变速不变调(可选)

针对上面的需求,第一版设计使用的当然是Unity3d自带的视频播放器,但是使用官方自带的播放器出现了几个问题

  1. 音频倍速效果不太好,甚至有的视频正常倍速播放声音也不太好
  2. 切换视频时间点通常不准确,比如我切换视频到10秒,可能切完后还停留在第5秒,我猜测可能是切换到了视频最近的关键帧导致的
  3. 视频播放过程中或者播放完成返回第一帧这个太难了,通常很难定位到第一帧,我设置视频时间为0后,基本很难定位到0,后来我甚至用了循环定位,但是存在视频可能10秒后都没定位到第一帧,我也试过定位前五帧的任何一帧,效果也不太好,最主要的是这种对视频需要进行操作的需求,出现问题很难解决,因为视频播放器的源码是没有的。

所以,经过反复考虑,决定放弃使用官方自带的Unity3d,因为开发时间有限,第二版采用的是应用商店中提供的插件AVProVideo,这个插件是跨平台的视频播放插件,但是价格也不菲,我使用的免费版调研的,结果大部分功能都没有问题,但是出现了一个无法避免的大问题,音画不同步,具体怎么操作的我忘记了,但是经过很多次测试确实有问题。

前期的开发和调用否认了两版Unity3d插件,因为我们的游戏首要是steam平台,所以经过反复考量,决定自己单独开发一版插件,别的先不说,至少是可控的,有问题是可以转换方案修改的。

而开发视频播放器,首当其冲的问题就是视频的解码,参考市面上主流播放器,我们决定采用FFMPEG库,在本文的最后,要感谢一位已故的大神-雷神(雷霄骅),后面我们还会提到他的文章,我是做游戏引擎开发的,音视频方面基本是拿来主义,这次上手开发视频播放器,真的要也别感谢很多博友的文章。下一章介绍FFMPEG音视频解码

posted on 2020-07-16 11:42  SauronKing  阅读(406)  评论(0编辑  收藏  举报