本文主要介绍 Android 与 iOS 端几类常见问题及相应解决方案。
Android&iOS
出现“no v4 play info”异常
通过 FileId 播放时,需要首先使用 Adaptive-HLS(10) 转码模板对视频进行转码,或者使用播放器签名 psign 指定播放的视频,否则可能导致视频播放失败。
在未开启防盗链进行播放的过程中,如果出现了“no v4 play info”异常,建议您使用 Adaptive-HLS(10) 转码模板对视频进行转码,或直接获取源视频播放链接通过 URL 方式进行播放。具体操作方法参见 通过 FileId 播放(点播)。 如何提取播放器日志进行错误反馈
播放器 SDK 默认把运行的 log 输出到本地文件,腾讯云技术支持 在帮忙定位问题时,需要这些运行 log 分析问题。 如何拉取腾讯云的媒资进行播放
出于安全的考虑,目前没有提供从 App 直接拉取腾讯云媒资的接口。您需要通过 App>App 服务后台>腾讯云这个路径拉取腾讯云的媒资。后台服务可以调云 API:搜索媒体信息接口,获取列表。 与 TRTC 共存,播放视频声音变小?
项目中 TRTC 和播放器共存的情况下,出现播放视频时声音变小的情况(被压制)。
解决方案:10.0版本以上的 SDK,在创建播放器播放视频之前,先调用 attachTRTC 方法绑定:
// iOS端代码示例:
[_txVodPlayer attachTRTC:trtcCloud];
[_txVodPlayer startPlay:url]
mVodPlayer.attachTRTC(trtcCloud);
mVodPlayer.startPlay(url);
在手机上使用网络代理或者抓包工具导致视频播放失败怎么处理?
手机设置 http 代理的时候,需要把 localhost 设置为绕过代理。
Android 手机设置举例: 手机设置 > WIFI 设置 > 对应的 WIFI 链接 > 进入高级设置页 > 手动设置 http 代理下面有个绕过代理的框,填入 localhost。
Android SDK
播放过程中没有画面
请检查 SurfaceView 或 TextureView 是否绑定了 TXVodPlayer 对象。
如何减少包体积
如果之前没有使用过9.4以及更早版本的 SDK 的 下载缓存功能(TXVodDownloadManager 中的相关接口),并且不需要在9.5及后续 SDK 版本播放9.4及之前缓存的下载文件,可以不需要该功能的 so 文件,达到减少安装包的体积,例如:在9.4及之前版本使用了 TXVodDownloadManager 类的 setDownloadPath 和 startDownloadUrl 函数下载了相应的缓存文件,并且应用内存储了 TXVodDownloadManager 回调的 getPlayPath 路径用于后续播放,这时候需要 libijkhlscache-master.so 播放该 getPlayPath 路径文件,否则不需要。可以在 app/build.gradle 中添加: packagingOptions {
exclude "lib/armeabi/libijkhlscache-master.so"
exclude "lib/armeabi-v7a/libijkhlscache-master.so"
exclude "lib/arm64-v8a/libijkhlscache-master.so"
}
如果您的 App 只在中国大陆地区使用,可以打包 armeabi-v7a
和 arm64-v8a
两个架构的 so 文件,或者只打包 jar,安装后动态下载 so 文件。具体教程请参见 如何缩减安装包。 如何减少控制台 log 输出
可以通过设置 LogLevel,把不需要关注的 log 过滤掉:TXLiveBase.setLogLevel(TXLiveConstants.LOG_LEVEL_DEBUG)。
当播放视频时,如果用户锁屏或将应用程序退到后台,可能会导致播放器被系统杀掉或禁止联网,如何处理?
为了避免这种情况,可以在 App 内使用前台服务。关于如何使用前台服务,可以参考官方文档。 Android P 系统上使用播放器出现错误 "java.io.IOException: Cleartext HTTP traffic to 127.0.0.1 not permitted", 导致无法播放视频,如何处理?
出于安全考虑,从 Android P 开始,Google 要求 App 的请求都使用加密链接。播放器 SDK 会启动一个 localsever 代理 http 请求,因此可以通过 网络安全配置 来开启允许向127.0.0.1发送 http 请求。 1. 在项目新建 res/xml/network_security_config.xml 文件,设置网络安全性配置。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">127.0.0.1</domain>
</domain-config>
</network-security-config>
2. 在 AndroidManifest.xml 文件下的 application 标签增加以下属性。
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
iOS SDK
集成 SDK 运行以后,运行后出现“[TXCThumbPlayer thumbPlayerBundleId] unrecognized selector”类型的 Crash?
此问题是由于 SDK 中包含类别(category)所致,这里需要增加“-ObjC”标志位,具体步骤如下:
打开 Xcode,选择对应的 Target,选择 Build Setting,搜索 Other Link Flag 输入 -ObjC
。
集成 SDK 运行以后,运行后出现“dyld[34620]: Library not loaded: @rpath/TXFFmpeg.framework/TXFFmpeg” 类型的 Crash?
此问题是由于动态库 TXFFmpeg.framework 集成进了 Project 中,但未设置“Embed & Sign”导致:
1. 打开 Xcode,选择对应的 Target,选择 General。
2. 选择 Frameworks,Libraries,and Embedded Content,选择 TXFFmpeg.framework,并在右侧选择 Embed & Sign。
播放控制面板显示不出来
播放控制面板显示是通过 MPNowPlayingInfoCenter 来显示的,通过设置 nowPlayingInfo 属性可以更新标题、图片以及设置声音大小等,具体可以参见 SuperPlayer Demo。 减少控制台 log 输出
可以通过设置 TXLiveBase.h 中的 setLogLevel 接口来设置 LogLevel,[TXLiveBase setLogLevel:LOGLEVEL_DEBUG] ,数值越大输出的日志越少,即: 0 ( 输出所有级别的日志)~ 6(不输出任何日志),具体可以参见 TXLiveBase.h。
遇到用 appid + fileid 播放视频失败,提示14010020错误?
此类问题是由于文件(.mp4 或 .hls)下载失败所致,请使用10.6及以上的 SDK 进行尝试,此类问题已经在新版本进行了修复。
播放器下载 TXVodDownloadManager 下载 m3u8 文件,TXVodDownloadDelegate 回调里没有 size 和 downloadSize 大小的数值?
此类问题是由于 m3u8 文件的标准协议没有包含文件的大小,而每个分片的 ts 只有在请求时才能获取到大小,因此无法在下载之前准确返回文件的大小。
在 iOS13 及以上的设备上,选择相册视频播放时提示“播放失败”?
此类问题是由于 iOS13 及以上,相册插件访问的路径发生了变更(如:var/mobile/Containers/Data/PluginKitPlugin/tmp
), 可以通过将相册数据复制到沙盒底下的临时目录来提供路径访问(例如 tmp 目录等)。
本页内容是否解决了您的问题?