`
yhz61010
  • 浏览: 564358 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12293
社区版块
存档分类
最新评论

[原创] 使用 Vitamio 播放视频作为 Splash 时出现失真情况的解决方案

阅读更多
目前在做关于视频及流媒体播放项目时,有这样一个需求,应用启动时的 Splash 要求播放一段动画。其中视频播放的库使用是 Vitamio。

最开始要播放的文件比较大,有 18M+,在手机播放时画质非常好。但是一个 Splash 没有必要这么大,由于把视频压缩了下,变成了 1.5M+,这回文件大小是可以了,用电脑播放器播放时,画质和之前的大文件比没有太大的变化,但是在手机中播放时,却出现了很严重的失真现象。

这是怎么回事?最后经过调查,设置了一些参数,再次用手机播放时和电脑播放的效果一样了,没有出现失真的现象。现将完整解决方案与大家分享下:

说明:
代码中删除了和演示无关的业务代码。
测试用机: XiaoMi 2S Android 5.0.2

import android.app.Activity;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Handler;
// ...... 省略其它不必要的 import
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import io.vov.vitamio.MediaPlayer;
import io.vov.vitamio.Vitamio;
import io.vov.vitamio.widget.VideoView;

public class SplashActivity extends Activity {
    private static final String TAG = SplashActivity.class.getSimpleName();

    /**
     * Duration of wait *
     */
    private static final int SPLASH_DISPLAY_LENGTH = 2500;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        Vitamio.isInitialized(getApplicationContext());

        InputStream ins = getResources().openRawResource(R.raw.splash_anim);
        File tmpFile = null;
        OutputStream output;

        try {
            tmpFile = File.createTempFile("splash", "mov");
            output = new FileOutputStream(tmpFile);

            final byte[] buffer = new byte[102400];
            int read;

            while ((read = ins.read(buffer)) != -1) {
                output.write(buffer, 0, read);
            }
            output.flush();
            output.close();
            ins.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        final io.vov.vitamio.widget.VideoView videoView = new VideoView(this);
        videoView.setHardwareDecoder(true);
        videoView.setVideoChroma(MediaPlayer.VIDEOCHROMA_RGB565);
        // This method below will remove the black screen that appears before playing video
        videoView.setZOrderOnTop(true);
        videoView.setVideoPath(tmpFile.getPath());

        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                // optional need Vitamio 4.0
                ALog.i(TAG, "onPreparedListener()");
                videoView.setBackground(null);
                mediaPlayer.setAdaptiveStream(true);
                mediaPlayer.setPlaybackSpeed(1.0f);
                mediaPlayer.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
                setVolumeControlStream(AudioManager.STREAM_MUSIC);
                mediaPlayer.prepareAsync();
                mediaPlayer.start();
            }
        });

        setContentView(videoView);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                ALog.d(TAG, "Ready to start initialization activity");
                Intent intent = new Intent(SplashActivity.this, Mainctivity.class);
                startActivity(intent);
                finish();
            }
        }, SPLASH_DISPLAY_LENGTH);
    }
}

备注
Vitamio官网地址:https://www.vitamio.org/
0
0
分享到:
评论

相关推荐

    Vitamio强大的视频播放

    总结来说,Vitamio是一个全面的多媒体解决方案,它的强大功能和广泛支持的格式使其成为Android开发者在构建视频播放相关应用时的首选工具。通过官方提供的Demo和示例代码,开发者可以轻松学习和掌握其使用方法,实现...

    Android vitamio 播放12种视频格式.rar

    1. **Vitamio框架介绍**:Vitamio是由尹建丽(Yan Jianli)开发的,它提供了一个完整的多媒体播放解决方案,包括音频和视频的解码、编码、流媒体等功能。框架的核心是基于FFmpeg库,这使得它能够支持广泛的多媒体...

    Vitamio视频播放Demo源码

    这个"Vitamio视频播放Demo源码"是一个示例项目,用于帮助开发者理解和学习如何在Android应用中集成和使用Vitamio库进行视频播放。 在源码中,我们可以看到以下几个关键知识点: 1. **Vitamio库的引入**:首先,你...

    一个基于vitamio的视频播放器

    "一个基于vitamio的视频播放器" 这个标题指出,这是一个使用了Vitamio库的视频播放应用项目。Vitamio是一个专门为Android平台设计的多媒体开发框架,它提供了丰富的视频和音频播放功能,使得开发者能够轻松地在...

    vitamio.demo视频播放器(本地资源+在线资源播放)

    vitamio.demo视频播放器(本地资源+在线资源播放功能) eclipse adt中 import,在sd卡中放置一个视频文件(sintel.avi),如果名字是其他的,在代码中替换sintel.avi为你的视频资源名称。 如果直接想看效果,可以把...

    vitamio任意视频大小设置

    Vitamio是一个流行的Android多媒体框架,它提供了一套完整的视频播放解决方案,包括硬件加速支持和丰富的API接口。 首先,我们关注`videoview.java`文件。在Vitamio库中,`VideoView`是核心的视图组件,用于播放...

    解决 vitamio 无法加载ios 视频

    解决 vitamio 无法加载ios 视频

    Android vitamio视频播放

    *亲测成功 *可以直接导入项目中进行使用 *Android Vitamio 简单功能齐全的播放器,轻松修改自定义布局和功能,支持现在主流的视音频格式:mp3、mp4、flv、HLS格式, *支持本地视频文件播放、网络视频播放

    android vitamio视频播放

    android vitamio视频播放,Vitamio是一款全能的多媒体开发框架,可以让你用最简单的步骤开发出一款全能视频播放器,目前支持Android与iOS两大平台!全硬件解码 所有主流Android设备都能使用

    vitamio网络视频框架

    Vitamio是一款广泛应用于Android开发中的网络视频框架,它为开发者提供了强大的视频播放和处理功能,使得在Android平台上实现流畅、高效的网络视频播放成为可能。这个框架集成了播放器和编码解码器,能够支持多种...

    使用vitamio做播放器在listview中实现播放

    Vitamio是一个强大的Android多媒体框架,它允许开发者在应用程序中集成视频和音频播放功能。本教程将深入探讨如何在ListView中使用Vitamio来实现流畅的媒体播放体验。 首先,你需要在你的项目中集成Vitamio库。这...

    eclipse版vitamio问题解决jar

    在Eclipse开发环境中,Vitamio可能会遇到一些问题,比如视频播放时出现花屏现象,或者在视频播放界面的上层控件布局不正确。针对这些问题,我们可以深入探讨如何解决。 首先,"eclipse版vitamio问题解决jar"表明这...

    vitamio的简单使用

    Vitamio是一款开源的Android多媒体框架,它使得开发者能够轻松地在Android应用中实现音频和视频的播放功能。这个框架由尹峰(yfio)开发,支持多种媒体格式,如MP4、3GP、MOV、FLV、MKV等,并且提供了RTSP、HTTP、...

    基于Vitamio自己做的一个视频播放的小demo,感兴趣的可以看看

    Vitamio是一个开源的Android多媒体框架,它提供了一套完整的视频播放解决方案,包括硬件加速、多种视频格式支持等特性。 【描述分析】 "运行时需要替换代码里面的视频连接,设置自己的android:minSdkVersion"这部分...

    Android视频播放开源库vitamio

    7. **错误处理和恢复**:当播放过程中出现错误时,Vitamio具备一定的错误恢复能力,可以自动处理一些常见的播放问题。 在使用Vitamio时,开发者需要注意以下几点: - **集成步骤**:首先需要在Android项目中导入...

    Android Vitamio视频框架

    总的来说,Vitamio为Android开发者提供了一个强大而易用的视频播放解决方案,通过它,开发者可以快速集成视频播放功能,提升应用的多媒体体验。然而,使用过程中也需要注意兼容性和性能优化,确保在不同设备和环境下...

    vitamio视频播放器

    它可以处理常见的视频文件格式,如MP4、AVI、FLV、MKV等,确保用户可以在不转换格式的情况下直接播放。此外,对于网络视频,Vitamio支持HTTP和RTMP协议,使得在线视频的播放变得轻而易举。HTTP协议广泛应用于网页...

    vitamio实现视频播放器集合

    【vitamio实现视频播放器集合】是一个针对Android平台的项目,主要利用Vitamio库来构建一个功能全面的视频播放应用。Vitamio是一个强大的多媒体框架,支持多种视频编码格式,使得开发者能够轻松地在Android设备上...

    使用vitamio封装的播放器

    Vitamio是一个专门为Android平台设计的多媒体框架,它允许开发者轻松地在应用中集成音频和视频播放功能。这个框架提供了一套完整的API,使得开发者无需深入理解底层的编解码技术,就能实现丰富的多媒体播放体验。...

    vitamio缓冲播放

    总结来说,Vitamio是一个全面的Android视频播放解决方案,它的在线播放、直播支持和缓冲播放技术为开发者提供了高效、稳定的视频服务。开发者可以利用Vitamio轻松实现各种复杂的视频播放需求,提升应用的质量和用户...

Global site tag (gtag.js) - Google Analytics