You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.2 KiB
119 lines
4.2 KiB
package com.frank.ffmpeg.activity;
|
|
|
|
import android.Manifest;
|
|
import android.content.Intent;
|
|
import android.content.pm.PackageManager;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.support.v7.app.AppCompatActivity;
|
|
import android.view.View;
|
|
import android.view.animation.BounceInterpolator;
|
|
|
|
import com.frank.ffmpeg.R;
|
|
import com.frank.ffmpeg.floating.FloatPlayerView;
|
|
import com.frank.ffmpeg.floating.FloatWindow;
|
|
import com.frank.ffmpeg.floating.MoveType;
|
|
import com.frank.ffmpeg.floating.Screen;
|
|
|
|
/**
|
|
* 使用ffmpeg进行音视频处理入口
|
|
* Created by frank on 2018/1/23.
|
|
*/
|
|
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
|
|
|
|
private final static String[] mPermissions = new String[]{
|
|
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
|
Manifest.permission.READ_EXTERNAL_STORAGE
|
|
};
|
|
private final static int CODE_STORAGE = 999;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_main);
|
|
|
|
initView();
|
|
checkPermission();
|
|
}
|
|
|
|
private void initView() {
|
|
findViewById(R.id.btn_audio).setOnClickListener(this);
|
|
findViewById(R.id.btn_video).setOnClickListener(this);
|
|
findViewById(R.id.btn_media).setOnClickListener(this);
|
|
findViewById(R.id.btn_play).setOnClickListener(this);
|
|
findViewById(R.id.btn_push).setOnClickListener(this);
|
|
findViewById(R.id.btn_live).setOnClickListener(this);
|
|
findViewById(R.id.btn_filter).setOnClickListener(this);
|
|
findViewById(R.id.btn_reverse).setOnClickListener(this);
|
|
findViewById(R.id.btn_floating).setOnClickListener(this);
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
Intent intent = new Intent();
|
|
switch (v.getId()){
|
|
case R.id.btn_audio://音频处理
|
|
intent.setClass(MainActivity.this, AudioHandleActivity.class);
|
|
break;
|
|
case R.id.btn_video://视频处理
|
|
intent.setClass(MainActivity.this, VideoHandleActivity.class);
|
|
break;
|
|
case R.id.btn_media://音视频处理
|
|
intent.setClass(MainActivity.this, MediaHandleActivity.class);
|
|
break;
|
|
case R.id.btn_play://音视频播放
|
|
intent.setClass(MainActivity.this, MediaPlayerActivity.class);
|
|
break;
|
|
case R.id.btn_push://FFmpeg推流
|
|
intent.setClass(MainActivity.this, PushActivity.class);
|
|
break;
|
|
case R.id.btn_live://实时推流直播:AAC音频编码、H264视频编码、RTMP推流
|
|
intent.setClass(MainActivity.this, LiveActivity.class);
|
|
break;
|
|
case R.id.btn_filter://滤镜特效
|
|
intent.setClass(MainActivity.this, FilterActivity.class);
|
|
break;
|
|
case R.id.btn_reverse://视频倒播
|
|
intent.setClass(MainActivity.this, VideoReverseActivity.class);
|
|
break;
|
|
case R.id.btn_floating://悬浮窗播放
|
|
floatingToPlay();
|
|
return;
|
|
default:
|
|
break;
|
|
}
|
|
startActivity(intent);
|
|
}
|
|
|
|
//动态申请权限
|
|
private void checkPermission(){
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
if (checkSelfPermission(mPermissions[0]) != PackageManager.PERMISSION_GRANTED){
|
|
requestPermissions(mPermissions, CODE_STORAGE);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 悬浮窗播放
|
|
*/
|
|
private void floatingToPlay(){
|
|
if (FloatWindow.get() != null) {
|
|
return;
|
|
}
|
|
FloatPlayerView floatPlayerView = new FloatPlayerView(getApplicationContext());
|
|
FloatWindow
|
|
.with(getApplicationContext())
|
|
.setView(floatPlayerView)
|
|
.setWidth(Screen.width, 0.4f)
|
|
.setHeight(Screen.width, 0.4f)
|
|
.setX(Screen.width, 0.8f)
|
|
.setY(Screen.height, 0.3f)
|
|
.setMoveType(MoveType.slide)
|
|
.setFilter(false)
|
|
.setMoveStyle(500, new BounceInterpolator())
|
|
.build();
|
|
FloatWindow.get().show();
|
|
}
|
|
|
|
}
|
|
|