android 之MediaPlayer MP3播放,VideoView 视频播放,MediaRecorder 录音

1》MeidaPlayer播放指定路径下的MP3文件;

2》MeidaPlayer播放网络上的MP3文件;

3》VideoView 视频播放;

4》MediaRecorder 录音;

 

1》MeidaPlayer播放指定路径下的MP3文件;

MediaPlayer mp=new MediaPlayer();

mp.setDataSource("path");

mp.prepare();

mp.start();

 mp.isLooping;

mp.pause();

mp.reset();

mp.release();

 

MediaPlayer mp=new MediaPlayer();

mp=MediaPlayer.create(demomdplayer01.this,R.Raw.test);    //res/Raw/test.mp3

mp.prepare();

mp.start();

 

 

2》MeidaPlayer播放网络上的MP3文件;

MediaPlayer mp=new MediaPlayer();

Uri uri=Uri.parse(www.cnblogs.com/team/ShenzhenAndroidClub/android.mp3);

mp=MediaPlayer.create(demomdplayer01.this,uri);  

mp.prepare();

mp.start();

 

 

3》VideoView 视频播放

 

VideoView mvd=new VideoView();

  mvd.setVideopath("path");//这两种方法都可以 mvd.setVideoPath("file:///sdcard/love_480320.mp4");

                         //mvd.setVideoURI(Uri.parse("/sdcard/love_480320.mp4" ));

 //定义MediaController对象 

 MediaController mediaController = new MediaController(this); 

//把MediaController对象绑定到VideoView上 

 mediaController.setAnchorView(mvd); 

//设置VideoView的控制器是mediaController 

 mvd..setMediaController(mediaController); 

  mvd.requestFocus();

  mvd.start();

  mvd.pause();

   

4> MediaRecorder 录音;

MediaRecorder mr = new MediaRecorder(); 

 mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 

 mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 

 mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
 mr.setOutputFile(file.getAbsolutePath()); 

                    mr.prepare(); 

                    mr.start(); 

                    mr.stop(); 

                    mr.release(); 

 

// 创建录音对象 

    MediaRecorder mr = new MediaRecorder(); 

        // 从麦克风源进行录音 
              mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 

             // 设置输出格式 
               mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 

                // 设置编码格式 

                 mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
                 // 设置输出文件 

                 mr.setOutputFile(file.getAbsolutePath()); 

               try { 

                     // 创建文件 

                   file.createNewFile(); 

                  // 准备录制 

                   mr.prepare(); 

                } catch (IllegalStateException e) { 

                     e.printStackTrace(); 

                } catch (IOException e) { 

                   e.printStackTrace(); 

                } 

                // 开始录制 

               mr.start(); 
               recordButton.setText("录音中……"); 

             } 

        }); 
   

        // 停止按钮点击事件 
         stopButton.setOnClickListener(new View.OnClickListener() { 

            @Override

             public void onClick(View v) { 

                if (mr != null) { 

                    mr.stop(); 

                    mr.release(); 
                    mr = null; 

                   recordButton.setText("录音"); 

                     Toast.makeText(getApplicationContext(), "录音完毕", Toast.LENGTH_LONG).show(); 

                } 

             } 

        });

 

为了避免大家浪费时间,直接先看下面的 Gif,略大,请耐心点。看完后,若你觉得会需要到,那么就请听我继续。gif 链接 http://123.57.244.105:8081/commentthumb/GIF.gifgit显示,略大,请耐心GitHub 链接废话一句:这个显示只是其中一部分,重点是:FFmpeg Camera 的录制部分,所以,你的星星(star)也是一种更新通知 (我通知你)。https://github.com/af913337456/WeChatVideoView功能点如果你看完上面的gif图,你会发现如下几点功能 (Function list):1,直观的播放前,可以显示封面缩略图播放时,如果还没有本地缓存,那么先进行下载下载过程中,显示圆型区域进度效果下载后,播放完毕后可以循环播放播放已经播放过的,是具备本地缓存的,也就是既能播放网络,也能播放本地2,隐藏的低耗电量低内存占用无延迟图与视频切换低耦合,高内聚,几行代码接入,一共3个类解析直观的功能点,几乎就是和新版微信的一样,从朋友圈点击一个视频,然后进入到一个 Activity 页面进行加载以及播放。为什么低耗电量和低内存占用?因为采用的是 SurfaceView 而不是 TextureView,图与视频切换的切换延迟也是这个原因。在你的 Activity 中这样使用这样就会以 id 为 activity_main 的 Relativelayout 为父容器装载。因为要避免内存泄露,所以你还需要做完下面的一些步骤,不会超过6行代码。技术点 (可以不看)1,下载操作:自定义 AsyncTask。PS:AsyncTask 比 Thread handler 重量级却方便(回调进度),但是,如果是 即放即用,结束即销毁,那么,no need to think about this;2,视频播放组合拳: surfaceView mediaPlayersurfaceView 用作显示,mediaPlayer 用来解码两者关系: mediaPlayer 绑定 surfaceView。为什么不用 TextrueView?3,进度区域自定义 View,3个画笔绘制,一个圆,一个边,一个扇区。作者:林冠宏 / 指尖下的幽灵掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8博客:http://www.cnblogs.com/linguanh/GitHub : https://github.com/af913337456/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值