在iOS工程中集成 小红书 REDPlayer

263 阅读2分钟

前言:

项目中的一个记录仪回放功能,需要播放.flv格式的直播流。之前用的是七牛云免费的PLPlayerKit,但是两三年前就停止维护了。测试时发现播放的直播流有画面没声音,所以只能另寻他法。

在掘金刷到这篇文章《RTE 开源|小红书 REDPlayer 正式发布!》,热度不高(可能没人干iOS了😝)。虽然是今年1月发布的,文中也说将持续维护迭代,但已经半年多没有更新了,总有种已经停更的感觉-.-。想用REDPlayer的小伙伴请先考虑下。

开发环境:

Apple M1 Pro + Xcode16.1

1. main分支

先下载了main分支,pod完后运行Demo报错,RedDef.h文件中报错提示std::function找不到,这里需要自己手动加上#include <functional>。Demo运行成功后确认了能正常播放(有声音和画面)直播流。

但是由于main分支基本都是源码,C++文件比较多,担心集成到项目中会出现更多的问题,遂去找release版本。

2. releases-v2.0.0分支

再下载releases-v2.0.0分支,pod完后运行Demo报错,竟然还是源码,运行错误比main分支还多,遂放弃。

3. releases-v1.0.0分支(推荐)

再往前找releases-v1.0.0分支,对比了下2.0.0的提交,改动的不算多,而且这个分支里将源码打成了.framework静态库,集成起来就方便多了。但是集成时仍需做一些改动:

开始集成release1.0.0版本:

  1. 在自己的项目中,将Demo工程中的Submodules文件夹,整个复制到自己项目里Podfile文件的同级目录下(注意是复制到Finder目录下,不是拖到工程里); image.png

  2. 先将Demo中的RedPlayer文件夹,复制到Submodules目录下,再将Demo中的RedPlayer.podspec文件复制到刚才复制过来的RedPlayer文件夹内; Demo文件夹 自己的项目文件夹

  3. RedPlayer.podspec文件的内容改为下面的内容(修改了s.resources、s.vendored_framework路径,删除了s.dependency "opensoundtouch");

Pod::Spec.new do |s|
  s.name             = 'RedPlayer'
  s.version          = '0.0.1'
  s.summary          = 'RedPlayer'
  s.description      = 'RedPlayer SDK'
  s.homepage         = 'https://github.com/RTE-Dev/RedPlayer/source/ios/XYRedPlayer/Submodules/RedPlayer'
  s.license          = { :type => 'LGPL', :file => 'LICENSE' }
  s.author           = { 'zijie' => 'zijie@xiaohongshu.com' }
  s.source           = { :git => 'git@github.com/RTE-Dev/RedPlayer.git', :tag => s.version.to_s }

  s.ios.deployment_target = '13.0'
  s.resources = "Resouces/**.*"
  s.vendored_framework = 'Sources/*.framework'
  
  s.dependency "XYMediaFfmpeg"
end
  1. 还剩下个opensoundtouch.framework,这玩意儿用pod集成就报错,离谱。它的集成方式是在工程TARGETS-General-Frameworks, Libraries and Embedded Content中,点击+号选择Add Files将它添加到工程中(注意Embed选项是'Embed & Sign'); image.png

  2. 执行pod install

至此集成完成~