在视频直播软件开发中,这样做才能实现svga格式礼物动画
程序员文章站
2022-03-02 19:45:07
...
在线直播源码中,礼物功能的开发是必不可少的,它不但可以作为用户对主播的喜爱度的评判标准,还是直播平台变现的方式之一,那么在直播源码中,svga格式礼物动画是如何实现的呢?以云豹的金山demo为例,实现直播demo中播放svga格式礼物动画的大致流程如下:
1.在build .gradle中添加JitPack .io,如下。
maven { url "https://jitpack.io" }
2.添加依赖,具体如下。
//svga
compile 'com.github.yyued:SVGAPlayer-Android:2.4.0'
3.在布局文件中添加相应的布局,部分代码如下,其中autoPlay属性指加载后是否自动播放,默认值为true。loopCount属性指循环播放次数,默认值为0意指循环播放。
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/gift_svga"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:scaleType="centerCrop"
app:autoPlay="true"
app:loopCount="1"
/>
4、通过id引用布局中的SVGAImageView,首先通过ConcurrentLinkedQueue队列将收到svga格式的礼物链接存起来,然后按顺序播放,svga动画播放时,先通过SVGAParser的decodeFromInputStream方法解析,监听解析成功回调生成的SVGAVideoEntity,然后开始播放一个svga礼物动画,此外还需添加动画是否完成的监听,部分代码如下
//svagView
mSVGAImageView = svgaImageView;
//svag动画监听
mSVGAImageView.setCallback(new SVGACallback() {
@Override
public void onPause() {
}
@Override
public void onFinished() {
long diffTime = 4000 - (System.currentTimeMillis() - mSvgaPlayTime);
if (diffTime < 0) {
diffTime = 0;
}
if (mHandler != null) {
mHandler.sendEmptyMessageDelayed(WHAT_GIF, diffTime);
}
}
@Override
public void onRepeat() {
}
@Override
public void onStep(int i, double v) {
}
});
/**
* 播放svga
*/
private void decodeSvga(File file) {
if (mSVGAParser == null) {
mSVGAParser = new SVGAParser(mContext);
}
if (mParseCompletionCallback == null) {
mParseCompletionCallback = new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NotNull SVGAVideoEntity svgaVideoEntity) {
if (mSVGAMap == null) {
mSVGAMap = new HashMap<>();
}
if (mTempGifGiftBean != null) {
mSVGAMap.put(mTempGifGiftBean.getGiftId(), new SoftReference<>(svgaVideoEntity));
}
playSVGA(svgaVideoEntity);
}
@Override
public void onError() {
mShowGif = false;
}
};
}
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
mSVGAParser.decodeFromInputStream(bis, file.getAbsolutePath(), mParseCompletionCallback, true);
} catch (Exception e) {
e.printStackTrace();
mShowGif = false;
}
}
以上便是在直播demo中播放svga格式礼物动画的大致实现过程。更多与视频直播软件开发行业相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。
声明:文章为原创内容,转载请注明原文链接及作者
上一篇: 在react项目中播放svga动画
下一篇: CSS动画