DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: liangjiping168
今日帖子: 17
在线用户: 25
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/11 10:38:33
标题:
XE10.3在安卓中播放不了MP4文件 浏览:3041
加入我的收藏
楼主: 原来用10.2可以在安卓里面播放MP4视频文件的,10.3.1就播放不了,10.3.2也不能播放,各位高手有没有测试过?播放AVI可以,同样的软件如果用10.2编译,就可以播放。就是一个简单的播放MP4视频文件,打包在安装软件里面的。
----------------------------------------------
-
作者:
男 stacker (OOP才是王道) ★☆☆☆☆ -
普通会员
2019/8/11 11:15:30
1楼: 权限问题吗?
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/11 12:29:40
2楼: 他们有个例程,播放视频的,在windows底下运行,哪个列表里面有MP4的,同样的文件,运行到安卓里面,哪个MP4的文件都不出现在列表里面了,可能真的取消了播放MP4的功能。
----------------------------------------------
-
作者:
男 homejun (homejun) ★☆☆☆☆ -
盒子活跃会员
2019/8/11 16:49:56
3楼: 会不会是安桌中文件位置不对了,所以不显示在列表中
----------------------------------------------
-delphi新资讯站 http://www.delphigear.cn
作者:
男 stacker (OOP才是王道) ★☆☆☆☆ -
普通会员
2019/8/11 17:45:09
4楼: Windows底下和安卓底下路径不相同。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/8/11 20:51:10
5楼: 我确定 10.3 可以播放 MP4,前几天刚试过。
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/11 21:40:19
6楼: 真的?是用MediaPlayer播放?
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/11 21:43:40
7楼: 回4楼,路径应该是知道没有错的,因为同样的代码在10.2下面编译的,在安卓里面运行是可以播放的。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/8/12 16:29:02
8楼: 就是用 MediaPlayer 来播放 MP4 呀。

注意安卓版本,高版本安卓访问外部存储路径可能需要用代码动态申请权限。
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 16:46:43
9楼: 那读取图片怎么可以呢?就是视频MP4不行。都是一样的路径。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/8/12 17:58:59
10楼: 有些人,自己做不到,就说 DLEPHI 做不到。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 denddy (denddy) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 18:12:58
11楼: delphi自带的例子里面有播放MP4的,看看就知道了
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 18:25:43
12楼: delphi自带的例子测试通过。

华为 Mate8,Android8.0,delphi 10.3.2
此帖子包含附件:
JPEG 图像
大小:86.7K
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 20:12:32
13楼: 那可能是机器的原因了,我用这个软件编译运行起来也是播放不了的。
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 20:20:40
14楼: 关键是我用10.2编译同样这个例程,是可以在同样的机器播放的
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 21:12:45
15楼: 换了一款机器,10.3.2可以了,但是10.3.1还是不行,报错,解决问题了。
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/12 21:52:45
16楼: 多谢大家的参与,我发现10.3.2对MediaPlayer改进还是不错的,我做一个安卓视频播放器,轮流播放,以前的版本,长时间运行以后,都会出错,但是10.3.2我长时间轮流播放几十个视频文件,还没有报过错,说明10.3.2,大家还是赶紧升级,确实修改了一些BUG。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/8/13 9:56:48
17楼: 我看源码,明显使用了新的策略。
接口还是那些接口。但是用法变了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/13 11:55:09
18楼: 我仔细测试了10.3.2的MediaPlayer在安卓下面播放视频文件的功能,以前在10.1,10.2,10.3.1下面也测试过,以前只要播放多个视频文件,时间超过一定时间,就会报错,就停止了,当时我搞的项目就不敢用它来做,但是这次测试10.3.2给我很大惊喜,软件播放几十个视频文件,包括下载很大的视频文件,长时间运行,一直没有出任何错误,这样我就可以放心用delphi 10.3.2完成整个项目了,毕竟我还是最熟悉delphi嘛。
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/13 12:01:12
19楼: 10.3.2把Rectangle作为一个容器来使用了,就有点类似VCL的Panel,这个是以前的10.2版本不同的。
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/13 12:18:32
20楼:        FLibraryPath:=System.IOUtils.TPath.GetDocumentsPath;
       GetFileName:=System.IOUtils.TPath.Combine(FLibraryPath,GetFileName);
       if TFile.Exists(GetFileName) then
          begin
       try
          MediaPlayer1.Stop;
          MediaPlayer1.FileName:=GetFileName;
          MediaPlayer1.CurrentTime := 0;
          Timer3.Interval:=4000;
          Timer3.Enabled:=True;  //指定播放文件后,不可以马上运行 MediaPlayer1.Play;必须要经过一点时间再运行
         except
         end;

      end;
procedure TFormMain.Timer3Timer(Sender: TObject);

begin

  try
   Timer3.Enabled:=False;
   
   MediaPlayer1.Play;
  except
  end;
end;


轮流播放的要点,不知道我测试的是不是正确的方法,就是要切换播放文件的时候,必须要有个延迟,我现在是使用timer来延迟。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/8/13 17:18:57
21楼: 楼上的,你碰到的这个必须要经过一点时间再运行的问题,我在 XE7 的时候碰到过。

目前我用 10.3.1 做测试,没发现这样的问题。

另外,之前因为 XE7 的 MediaPlayer 在安卓下播放视频有问题,俺就想了另外一招,直接调用系统本身的播放器来播放 MP4。这个保证不出问题。

具体做法见俺博客:

https://blog.csdn.net/pcplayer/article/details/99417638
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/13 18:07:24
22楼: 我们的做的项目,不能全部是播放视频的,就是一部分区域是视频,另外的区域还要做其他用途的,所以,不能用你的调用系统的播放器的方法,除非可以把系统播放器限定在一定的播放区域。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/8/13 18:43:46
23楼: 目前我的测试结果:

10.3.1 编译的程序,MediaPlayer 安卓下播放 MP4:
1. 安卓5.0 播放不了,会出异常。如果你不想兼容旧手机就没事。
1.1. 安卓5.0 底下如果不显示视频,是能够播放的,能听到播放的声音,进度条显示也正常。
2. 安卓9.0 能够播放,但进度条不对。
----------------------------------------------
-
作者:
男 delphiilove (乌羽玉) ★☆☆☆☆ -
普通会员
2019/8/13 21:04:48
24楼: 10.3.2 MediaPlayer 不支持 Win32 的 MP4 播放
报错
unsupported media file
----------------------------------------------
-
作者:
男 huangxing (gx) ★☆☆☆☆ -
盒子活跃会员
2019/8/13 22:02:28
25楼: windows下建议使用PasLibVlcPlayer,没有比它更简单快捷了。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/8/14 9:17:43
26楼: 24 楼,建议看看这个 提示是 哪一行 源代码给你的。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/8/15 18:49:23
27楼: WINDOWS 底下做播放器,最好自己用 DirectShow 来做,自由度最高,想咋做咋做。

DELPHI VCL 用 DirectShow 有一套控件:DsPack。

其实 FMX 底下,看源代码,windows 底下的 MediaPlayer 也是用的 DirectShow。

至于说 FMX 的 MediaPlayer 在 WINDOWS 底下播放 MP4 出现的不支持的媒体类型的异常,是因为 FMX 的代码只是简单地调用了 DirectShow 的自动播放功能,自动播放功能则自动去查媒体类型,然后根据媒体类型去查系统里面有什么解码器的 Filter 可以用来解码这个 MP4 文件,查到了就自动将一些 Filter 串接起来,开始播放。如果查不到它就返回这个异常。而 WINDOWS 系统默认没有支持 MP4,因此就出这个异常。

如果自己用 DsPack 这套控件,自己用代码串接 Filter 则肯定可以播放,只不过需要检测系统是否带了对应的解码器,如果没带,你可以给它安装啊。

比如,安装一套 DELPHI 直接可以用的解码器:ffDShow。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/8/15 18:53:27
28楼: 然后,上面提到的 DsPack 要注意几个问题:

1. 它是开源的,官方没有持续更新,官方给出的控件,D7 可用,新的 DELPHI 版本需要对它做一些更改。

2. 解码器:基于 DirectShow 的解码器 Filter,ffDShow 也是开源的。

3. DsPack 是基于 VCL 的。你可以先在 VCL 底下做好一个播放器窗口,然后在你的 FMX 程序里面,把 VCL 窗口放进去。如何放进去,办法其实简单,网上也有人做了一套现成的框架可以直接拿来用。我记得在 github 看到过。如果想自己研究如何放进去,同样去参考 FMX 的 WINDOWS 版的 MediaPlayer 看看它是怎么把播放器窗口放到 FMX 的 FORM 上的。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2019/8/16 9:19:54
29楼: 楼上,都要给系统安装 解码器了,我们还是继续用 FMX 控件吧。有了解码器,控件正常就可以了。
----------------------------------------------
(C)(P)Flying Wang
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行105.4688毫秒 RSS