• Android实例-MediaPlayer播放音乐和视频(XE8+小米2)


     

    结果:

    1.播放视频需要手动放入MediaPlayerControl1控件,设置MediaPlayerControl1.MediaPlayer := MediaPlayer1;

    2.播放声音文件正常,但播放器视时发现,第一边正常第二边就报错了(哪位大神知道的,请M我哦,先谢谢了)。

    3.打包时需要打入MP3与MP4文件,路径为"assetsinternal"。

    PS:20160421用XE10编译在夜神上一切正常,但在小米手机2上第一边正常,第二边卡,但不报错了。

    实例代码:

      1 unit Unit1;
      2 
      3 interface
      4 
      5 uses
      6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      8   FMX.Controls.Presentation, FMX.StdCtrls, FMX.Media, FMX.Layouts;
      9 
     10 type
     11   TForm1 = class(TForm)
     12     MediaPlayer1: TMediaPlayer;
     13     Label1: TLabel;
     14     Timer1: TTimer;
     15     Layout2: TLayout;
     16     Layout3: TLayout;
     17     Button1: TButton;
     18     Button2: TButton;
     19     Button3: TButton;
     20     TrackBar1: TTrackBar;
     21     TrackBar2: TTrackBar;
     22     Label2: TLabel;
     23     Label3: TLabel;
     24     Layout4: TLayout;
     25     MediaPlayerControl1: TMediaPlayerControl;
     26     Layout1: TLayout;
     27     procedure Button1Click(Sender: TObject);
     28     procedure Button2Click(Sender: TObject);
     29     procedure TrackBar1Change(Sender: TObject);
     30     procedure Timer1Timer(Sender: TObject);
     31     procedure Button3Click(Sender: TObject);
     32     procedure TrackBar2Change(Sender: TObject);
     33     procedure FormCreate(Sender: TObject);
     34   private
     35     { Private declarations }
     36   public
     37     { Public declarations }
     38   end;
     39 
     40 var
     41   Form1: TForm1;
     42 
     43 implementation
     44 uses
     45   System.IOUtils;//需要引入
     46 {$R *.fmx}
     47 {$R *.NmXhdpiPh.fmx ANDROID}
     48 
     49 //执行暂停按钮
     50 procedure TForm1.Button1Click(Sender: TObject);
     51 begin
     52   MediaPlayer1.Stop;
     53   Timer1.Enabled := false;
     54   Button2.Enabled := true;
     55   Button1.Enabled := false;
     56 end;
     57 
     58 //执行播放按钮
     59 procedure TForm1.Button2Click(Sender: TObject);
     60 begin
     61   MediaPlayer1.FileName := TPath.GetDocumentsPath + '/abc.mp3';//指定要打开的文件当然,指定 SD 卡中其它目录是文件也是可以的。
     62   MediaPlayer1.CurrentTime := trunc((TrackBar1.Value * MediaPlayer1.Duration) / 100);// 播放进度调整为进度条指示位置
     63   MediaPlayer1.Volume := TrackBar2.Value;//音量也调整到音量指示值
     64   MediaPlayer1.Play;//播放
     65   Timer1.Enabled := true;
     66   Button2.Enabled := false;
     67   Button1.Enabled := true;
     68 end;
     69 
     70 procedure TForm1.Button3Click(Sender: TObject);
     71 begin
     72   MediaPlayer1.FileName := IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + 'abc.mp4';//指定要播放的视频文件
     73   MediaPlayer1.Play;
     74   Timer1.Enabled := true;
     75 end;
     76 
     77 //设置视频在哪里显示
     78 procedure TForm1.FormCreate(Sender: TObject);
     79 begin
     80   MediaPlayerControl1.MediaPlayer := MediaPlayer1;
     81 end;
     82 
     83 procedure TForm1.Timer1Timer(Sender: TObject);
     84 var
     85   handler: TNotifyEvent;
     86 begin
     87   handler := TrackBar1.OnChange;
     88   TrackBar1.OnChange := nil;//暂时取消其 OnChange 事件
     89   TrackBar1.Value := int((MediaPlayer1.CurrentTime / MediaPlayer1.Duration) * 100);
     90   //更新进度条的指示
     91   Label2.Text := inttostr(trunc(MediaPlayer1.CurrentTime / 60000)) + ':' +
     92   inttostr(trunc(MediaPlayer1.CurrentTime / 1000 -
     93   trunc(MediaPlayer1.CurrentTime / 60000) * 60));
     94   //显示声音文件所剩下的播放时间,分:秒
     95   Label3.Text := inttostr(trunc(MediaPlayer1.Duration / 60000)) + ':' +
     96   inttostr(trunc(MediaPlayer1.Duration / 1000 - trunc(MediaPlayer1.Duration /
     97   60000) * 60));//显示声音文件总的播放时间,分:秒
     98   TrackBar1.OnChange := handler; //还原其 OnChange 事件
     99   //播放完毕后的处理
    100   if MediaPlayer1.CurrentTime >= MediaPlayer1.Duration - 1000 then//如果播放完了
    101   begin
    102     MediaPlayer1.Stop;
    103     TrackBar1.Value:=0;
    104     Button2.Enabled := true;
    105     Button1.Enabled := false;
    106     Timer1.Enabled := false;
    107   end;
    108 end;
    109 
    110 //滑动进度条时,改变播放进度
    111 procedure TForm1.TrackBar1Change(Sender: TObject);
    112 begin
    113   MediaPlayer1.CurrentTime := trunc((TrackBar1.Value * MediaPlayer1.Duration) / 100);
    114 end;
    115 
    116 //滑动音量调节条时,改变播放音量
    117 procedure TForm1.TrackBar2Change(Sender: TObject);
    118 begin
    119   MediaPlayer1.Volume := TrackBar2.Value;
    120 end;
    121 
    122 end.
  • 相关阅读:
    20170620_javaweb_小结
    win7电脑关机时间长怎么办
    hadoop环境搭建之关于NAT模式静态IP的设置 ---VMware12+CentOs7
    初识bigdata时的一些技能小贴士
    mysql 免安装版 + sqlyog 安装 步骤 --- 发的有点晚
    Python开发之IDE选择
    Python解释器换源
    Anaconda安装与使用
    安装Python环境
    Python和其他编程语言
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/4787029.html
Copyright © 2020-2023  润新知