android视频加速播放

本文介绍如何使用Vitamio播放器实现在Android应用中调整视频播放速度,以满足与外部设备如跑步机联动的需求。文章详细记录了从选择播放器框架到集成Vitamio并实现速度调节功能的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            最近公司做的项目中有一个这样的需求,当我的APP通过蓝牙连接跑步机的时候,需要和跑步机同步的播放频。而且跑步机上边的调节速度按钮,可以同步的使APP视频的播放速度同步的加快,这样的来达到模拟场景跑步速度的加快。最开始的解决方案,使用android原生的VideoView控件,非常轻松的就实现了跑步播放视频的功能,可是怎么控制速度呢,找来找去发现实现不了(那位大神可以做到,可以给我留言,学习学习).后来又找了几个其他的播放框架,发现大多数都是通过自定义android原生的来实现的播放,同样的不能实现调整播放速度。最后想到干脆终极的解决方案吧,FFmpeg吧,可惜好无奈啊,宝宝现在C语言还只是初步。哎!最后在网上看到两个基于FFmpeg开发的视频框架,可以解决这个问题。就是大名鼎鼎的Vitamio和VLC.最后我选择了Vitamio,因为这个的资料多一些。朋友们也可以去github看看VLC怎么做。这里提醒一下,使用Vitamio需要到官网去下载最新的5.2版本。因为github的4.0版本bug太多,而且不支持64位架构的处理器。还不支持android6.0.直接来看看我怎么做的吧

     第一步:去官网下载最新的依赖包和demo。中间那个initActivity就是我们所需要的依赖。

     

  第一步:导入我们的工程吧。import Module.

 

    

  什么?报错了,别慌,让我们制定编译的SDK版本。

  

  修改一下我们的版本,点击一下 Try Again.重新编译一下,就通过了。

   第二步:依赖到我们的项目中:看到最后一步就算成功了。

  

 第三步:开始编写我们的代码吧

  

package demo.cdy.com.myvitamiodemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

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

public class MainActivity extends AppCompatActivity implements MediaPlayer.OnErrorListener {
    private VideoView videoView;
    private MediaController mMediaController;
    private MediaPlayer mPlayer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //第一步注册
        Vitamio.isInitialized(getApplicationContext());
        //初始化我们的控件,注意使依赖包的,不是android原生的。
        videoView = (VideoView) findViewById(R.id.videoView);
        //实例化控制器
        mMediaController = new MediaController(this);
        videoView.setMediaController(mMediaController);//绑定控制器
        videoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);//设置播放画质 高画质
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mMediaPlayer) {
                // optional need Vitamio5.2
                //视频预处理完成后回掉,设置播放速度
                mPlayer = mMediaPlayer;
                //mMediaPlayer的setPlaybackSpeed方法控制视频的播放速度。数值从e.g. 0.8 or 2.0, default to 1.0, range in [0.5-2]
                mMediaPlayer.setPlaybackSpeed(1.0f);
            }
        });
        videoView.setVideoPath("http://www.midea.com/video/masvod/public/2015/02/28/20150228_14bcec18032_r1_800k.mp4");

        //设置错误回掉
        videoView.setOnErrorListener(this);
    }

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        return false;
    }
}

  看效果图:

 

  最后说名一下:播放速度的控制使是通过

mMediaPlayer.setPlaybackSpeed(1.0f);

来控制的。我们在setOnPreparedListener回掉方法中,把这个MediaPlayer对象给拿出来。以后调节速度就可以自己写按钮通过这个mPlayer对象来随时随地的控制了。

 

   是不是很方便呢,大家如果有更好的更简洁的办法请留言哦,因为这个依赖包实在太大了,足足压缩之后apk将会增加10M。期待更简洁的办法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值