android中mediaplayer,android.media.MediaPlayer_1

  android中mediaplayer,android.media.MediaPlayer

  第一次写博客,逻辑有点乱,见谅~

  机器人从API16中更新对字幕追踪的支持,具体是下面几个方法。

  增加了阿尔及利亚标准级

  public voidaddTimedTextSource(上下文context,Uriuri,StringmimeType)

  public voidaddTimedTextSource(字符串路径,StringmimeType)

  public voidaddTimedTextSource(FileDescriptorfd,long offset,long length,StringmimeType)

  public voidaddTimedTextSource(文件描述符FD,StringmimeType)

  以第二方法为例,先看下应用程序接口注释:

  增加了阿尔及利亚标准级

  添加外部定时文本源文件。当前支持的格式是带有文件扩展名的子部分.srt,不区分大小写。请注意,单个外部定时文本源可能包含多个轨道。可以使用getTrackInfo()找到可用音轨的总数,以查看在此方法调用后还有哪些音轨可用。

  大致意思就是,媒体播放器支持外置文件显示字幕,但是现在只支持。污泥停留时间格式。这个文件可能有多个追踪器在追踪它,可以通过调用getTrackInfo()方法来获得所有的追踪器。

  跟踪信息共有四种类型,未知,视频,音频,字幕。

  增加了阿尔及利亚标准级

  public static final int MEDIA _ TRACK _ TYPE _ UNKNOWN=0;

  public static final int MEDIA _ TRACK _ TYPE _ VIDEO=1;

  public static final int MEDIA _ TRACK _ TYPE _ AUDIO=2;

  public static final int MEDIA _ TRACK _ TYPE _ timed text=3;

  在调用的时候,经常遇到这个错误:

  03-29 14:42:38.675:W/系统err(21382):Java。郎。运行时间异常:故障代码:-38

  在安卓。媒体。媒体播放器。调用(媒体播放器。Java:644)

  在安卓。媒体。媒体播放器。addtimedtextsource(媒体播放器。Java:1814年)

  在安卓。媒体。媒体播放器。addtimedtextsource(媒体播放器。Java:1778年)

  在安卓。媒体。媒体播放器。addtimedtextsource(媒体播放器。Java:1710年)

  03-29 14:42:38.675:W/系统err(21382):在com。演示。德文。碎片。qosdemofragment $视频支架。on prepared(qosdemofragment。Java:224)

  应用程序接口中告诉我们会抛这些例外情况:

  增加了阿尔及利亚标准级

  投掷:

  IOException -如果文件无法访问或已损坏。

  如果不支持mimeType,则抛出。

  IllegalStateException

  如果在无效状态下调用。

  经过试验,在准备好的的时候调用没有问题!

  但是只是调用这个方法是无法工作的,还需要注册响应的听众和调用选择曲目方法。

  具体代码如下:(在准备好的回调中)

  尝试

  多媒体播放器。addtimedtextsource(SRT路径,

  媒体播放器. MEDIA _ mime type _ TEXT _ sub rip);

  track info[]track infos=mmediaplayer。gettrackinfo();

  if (trackInfos!=null trackInfos.length 0)

  for(int I=0;I跟踪信息长度我)

  最终轨道信息info=轨道信息[I];

  Log.w(TAG, TrackInfo: info.getTrackType())

  信息。get语言());

  如果(信息。gettracktype()==TrackInfo .媒体_轨道_类型_音频)

  //mmediaplayer。选择音轨(I);

  else if(信息。gettracktype()==轨道信息.MEDIA_TRACK_TYPE_TIMEDTEXT)

  多媒体播放器。选择音轨(I);

  捕捉(例外e)

  e。printstacktrace();

  }

  之后再注册的OnTimedTextListener中,会触发该回调,再配合带边框的就是实现字幕了,安卓已经做好了同步功能!

  以上是我在播放MP4流时,可以正常工作!但是在播放M3U8流时,不能工作还是抛了运行时异常这个异常,可能和媒体播放器的准备好的机制有关。

  目前还没有找到什么办法,解决这个问题.

  尝试过等视频播放起来后在调用这个方法还是不行~

  如果哪位已经解决了,请告诉我下,谢谢。

  添加于

  应用程序接口级

android中mediaplayer,android.media.MediaPlayer_1