diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d27aa5b..1b1c6a5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -41,8 +41,7 @@
+ android:screenOrientation="landscape" />
+ android:screenOrientation="landscape" />
packets[stream_index];
int ret = 0;
- int video_frame_count = 0, audio_frame_count = 0;
+// int video_frame_count = 0, audio_frame_count = 0;
for(;;) {
pthread_mutex_lock(&player->mutex);
AVPacket *packet = (AVPacket*)queue_pop(queue, &player->mutex, &player->cond);
@@ -419,10 +419,10 @@ void* decode_func(void* arg){
if(stream_index == player->video_stream_index) {//视频流
ret = decode_video(player, packet);
- LOGI("decode video stream = %d", video_frame_count++);
+// LOGI("decode video stream = %d", video_frame_count++);
} else if(stream_index == player->audio_stream_index) {//音频流
ret = decode_audio(player, packet);
- LOGI("decode audio stream = %d", audio_frame_count++);
+// LOGI("decode audio stream = %d", audio_frame_count++);
}
av_packet_unref(packet);
if(ret < 0){
@@ -432,7 +432,7 @@ void* decode_func(void* arg){
}
JNIEXPORT jint JNICALL Java_com_frank_ffmpeg_MediaPlayer_setup
- (JNIEnv * env, jclass clazz, jstring filePath, jobject surface){
+ (JNIEnv * env, jobject instance, jstring filePath, jobject surface){
const char *file_name = (*env)->GetStringUTFChars(env, filePath, JNI_FALSE);
int ret;
@@ -455,7 +455,7 @@ JNIEXPORT jint JNICALL Java_com_frank_ffmpeg_MediaPlayer_setup
//初始化音频相关参数
audio_decoder_prepare(player);
//初始化音频播放器
- audio_player_prepare(player, env, clazz);
+ audio_player_prepare(player, env, instance);
//初始化音视频packet队列
init_queue(player, PACKET_SIZE);
@@ -463,7 +463,7 @@ JNIEXPORT jint JNICALL Java_com_frank_ffmpeg_MediaPlayer_setup
}
JNIEXPORT jint JNICALL Java_com_frank_ffmpeg_MediaPlayer_play
- (JNIEnv * env, jclass clazz){
+ (JNIEnv * env, jobject instance){
pthread_mutex_init(&player->mutex, NULL);
pthread_cond_init(&player->cond, NULL);
@@ -488,7 +488,7 @@ JNIEXPORT jint JNICALL Java_com_frank_ffmpeg_MediaPlayer_play
}
JNIEXPORT void JNICALL Java_com_frank_ffmpeg_MediaPlayer_release
- (JNIEnv * env, jclass clazz){
+ (JNIEnv * env, jobject instance){
//释放内存以及关闭文件
free(player->audio_track);
free(player->audio_track_write_mid);
diff --git a/app/src/main/java/com/frank/ffmpeg/activity/FilterActivity.java b/app/src/main/java/com/frank/ffmpeg/activity/FilterActivity.java
index 668ca88..04c6c44 100644
--- a/app/src/main/java/com/frank/ffmpeg/activity/FilterActivity.java
+++ b/app/src/main/java/com/frank/ffmpeg/activity/FilterActivity.java
@@ -104,6 +104,7 @@ public class FilterActivity extends BaseActivity implements SurfaceHolder.Callba
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ hideActionBar();
initView();
registerLister();
diff --git a/app/src/main/java/com/frank/ffmpeg/activity/MediaPlayerActivity.java b/app/src/main/java/com/frank/ffmpeg/activity/MediaPlayerActivity.java
index 36a97e8..69a1204 100644
--- a/app/src/main/java/com/frank/ffmpeg/activity/MediaPlayerActivity.java
+++ b/app/src/main/java/com/frank/ffmpeg/activity/MediaPlayerActivity.java
@@ -1,44 +1,53 @@
package com.frank.ffmpeg.activity;
-import android.os.Environment;
-import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
+import android.view.View;
+import android.widget.Button;
+
import com.frank.ffmpeg.MediaPlayer;
import com.frank.ffmpeg.R;
import com.frank.ffmpeg.util.FileUtil;
-import java.io.File;
-
/**
* 音视频解码播放
* Created by frank on 2018/2/12.
*/
-public class MediaPlayerActivity extends AppCompatActivity implements SurfaceHolder.Callback {
+public class MediaPlayerActivity extends BaseActivity implements SurfaceHolder.Callback {
+
private static final String TAG = MediaPlayerActivity.class.getSimpleName();
- SurfaceHolder surfaceHolder;
- private final static String PATH = Environment.getExternalStorageDirectory().getPath() + File.separator;
- private String filePath = PATH + "hello.mp4";
+
+ private SurfaceHolder surfaceHolder;
+
private MediaPlayer mediaPlayer;
+ private boolean surfaceCreated;
+
+ private Button btnSelectFile;
+
+ @Override
+ int getLayoutId() {
+ return R.layout.activity_media_player;
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_media_player);
+
+ hideActionBar();
initView();
initPlayer();
}
private void initView(){
- SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surface_media);
+ SurfaceView surfaceView = getView(R.id.surface_media);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
-
-// Button btn_slow = (Button) findViewById(R.id.btn_play_slow);
-// Button btn_fast = (Button) findViewById(R.id.btn_play_fast);
+ btnSelectFile = getView(R.id.btn_select_file);
+ initViewsWithClick(R.id.btn_select_file);
}
private void initPlayer(){
@@ -47,21 +56,7 @@ public class MediaPlayerActivity extends AppCompatActivity implements SurfaceHol
@Override
public void surfaceCreated(SurfaceHolder holder) {
- if (!FileUtil.checkFileExist(filePath)){
- return;
- }
-
- new Thread(new Runnable() {
- @Override
- public void run() {
- int result = mediaPlayer.setup(filePath, surfaceHolder.getSurface());
- if(result < 0){
- Log.e(TAG, "mediaPlayer-->setup");
- return;
- }
- mediaPlayer.play();
- }
- }).start();
+ surfaceCreated = true;
}
@Override
@@ -83,4 +78,35 @@ public class MediaPlayerActivity extends AppCompatActivity implements SurfaceHol
}
}
+ private void startPlay(final String filePath) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ int result = mediaPlayer.setup(filePath, surfaceHolder.getSurface());
+ if(result < 0){
+ Log.e(TAG, "mediaPlayer setup error!");
+ return;
+ }
+ mediaPlayer.play();
+ }
+ }).start();
+ }
+
+ @Override
+ void onSelectedFile(String filePath) {
+ if (!FileUtil.checkFileExist(filePath)){
+ return;
+ }
+ if (surfaceCreated) {
+ btnSelectFile.setVisibility(View.GONE);
+ startPlay(filePath);
+ }
+ }
+
+ @Override
+ void onViewClick(View view) {
+ if (view.getId() == R.id.btn_select_file) {
+ selectFile();
+ }
+ }
}
diff --git a/app/src/main/res/layout/activity_media_player.xml b/app/src/main/res/layout/activity_media_player.xml
index 2ccb036..b2cc3ae 100644
--- a/app/src/main/res/layout/activity_media_player.xml
+++ b/app/src/main/res/layout/activity_media_player.xml
@@ -1,9 +1,7 @@
+ android:layout_height="match_parent">
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index b195d97..dac50fe 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,11 +3,11 @@
#3F51B5
#303F9F
#FF4081
- #ffffff
- #d7d7d7
- #ff2c29
- #00ddff
- #bebebe
- #ff9800
- #32ffffff
+ #FFFFFF
+ #D7D7D7
+ #FF2C29
+ #00DDFF
+ #BEBEBE
+ #FF9800
+ #32FFFFFF