前言:
项目中的一个记录仪回放功能,需要播放.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版本:
-
在自己的项目中,将Demo工程中的
Submodules文件夹,整个复制到自己项目里Podfile文件的同级目录下(注意是复制到Finder目录下,不是拖到工程里); -
先将Demo中的
RedPlayer文件夹,复制到Submodules目录下,再将Demo中的RedPlayer.podspec文件复制到刚才复制过来的RedPlayer文件夹内; -
将
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
-
还剩下个
opensoundtouch.framework,这玩意儿用pod集成就报错,离谱。它的集成方式是在工程TARGETS-General-Frameworks, Libraries and Embedded Content中,点击+号选择Add Files将它添加到工程中(注意Embed选项是'Embed & Sign'); -
执行
pod install;
至此集成完成~