ijkplayer库有直接播放字幕的api吗,没有的话如何在Java层扩展

解决方案 »

  1.   

    ijkplayer对字幕的支持不是特别好,比如:
            1. 中英混合字幕只显示中文。
            2. 切换字幕时还会出现崩溃。
            3. 切换字幕时并不是马上同步字幕,而是播放几分钟才能同步字幕。
    个人建议如果你不会修改ijkplayer.so库的代码,最好不用用。ijkplayer库有直接播放字幕的api:   ijkMediaPlayer.selectTrack(int track); 不过要加上这个设置项,字幕才有效。
       ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "subtitle", 1); 最后解决我所说的ijkplayer本身存在的bug,楼主自行解决。因为这些问题并不是三言两语能说的清楚。
      

  2.   


    感谢回复,看你给出的api调用应该是播放视频自带的内挂字幕,ijkMediaPlayer.selectTrack(int track)我在网上看确实存在一些bug(包括音轨切换),目前我是参考网上一些demo和字幕文件的特点,在Java层对外挂字幕文件做了一些简单的解析。
      

  3.   

    刚好做过ijk相关的项目,针对楼主所说的外挂字幕,可以用一个TextView覆盖在你的VideoView上面展示
    主流的字幕格式例如srt都是有一定的格式的(包含每行字幕的进场和出场时刻),可以根据规律进行读取和解析,并在对应的时间段展示对应的那一行字幕,在视频播放的过程中,你自然可以读取到此时的时间点(例如播到1分20秒),利用这个时间来跟字幕文件里的时间进行比较,就可以准确地展示外置字幕。(解析细节可以网上搜索,挺多的也很容易理解)
    然后TextView的位置你就像平常设计布局一样,可以随意摆放到你想摆放的位置,当然一般是视频底部。
      

  4.   


    是的,目前只能这样来做不过获取不了视频内置的字幕。最好是做到也能获取到内置字幕,其实ijkplayer获取内置字幕的方式和android原生的mediaplayer一样。在显示内置字幕时候,同样也是用一个TextView覆盖在你的VideoView上面展示。那么你完全可以做到兼容内置字幕和外挂字幕,因为它们显示字幕的方式是一样的。现在问题ijkplayer内置字幕切换容易出现崩溃。
      

  5.   


    是的,目前只能这样来做不过获取不了视频内置的字幕。最好是做到也能获取到内置字幕,其实ijkplayer获取内置字幕的方式和android原生的mediaplayer一样。在显示内置字幕时候,同样也是用一个TextView覆盖在你的VideoView上面展示。那么你完全可以做到兼容内置字幕和外挂字幕,因为它们显示字幕的方式是一样的。现在问题ijkplayer内置字幕切换容易出现崩溃。

    你是指addTimedTextSource,然后注册OnTimedTextListener这种方式吗,我试过ijk的OnTimedTextListener里面的方法并没有回调,还得再研究一下