Skip to content

Support S_TEXT/ASS subtitles in MKV #889

@personshelldon

Description

@personshelldon

Hello, I'm working on a relatively simple TV and for this I chose ExoPlayer. Now there is a question about reading subtitles from video files. To initialize the player, I use the following code:

DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(mainHandler,null);
        DataSource dataSource = new DefaultUriDataSource(getContext(), bandwidthMeter, userAgent);
        sampleSource = new ExtractorSampleSource(Uri.parse(url), dataSource, allocator, 200 * 64 * 1024);
        MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(getContext(),sampleSource,
                MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT,
                1500,
                mainHandler,
                new MediaCodecVideoTrackRenderer.EventListener() {
                    @Override
                    public void onDroppedFrames(int i, long l) {
                    }

                    @Override
                    public void onVideoSizeChanged(int videoWidth, int videoHeight, int i2, float v) {
                        currentVideoParameters = new VideoParameters(videoWidth,videoHeight,v);
                        invalidateVideoSize();
                    }

                    @Override
                    public void onDrawnToSurface(Surface surface) {

                    }

                    @Override
                    public void onDecoderInitializationError(MediaCodecTrackRenderer.DecoderInitializationException e) {

                    }

                    @Override
                    public void onCryptoError(MediaCodec.CryptoException e) {

                    }

                    @Override
                    public void onDecoderInitialized(String s, long l, long l1) {

                    }
                },5);
        audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
// this line was added to read subtitles
        TrackRenderer textRenderer = new TextTrackRenderer(sampleSource,this,mainHandler.getLooper());
        mMediaPlayer.prepare(videoRenderer, audioRenderer, textRenderer);
        mMediaPlayer.sendMessage(videoRenderer, MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, surfaceView.getHolder().getSurface());

Video and audio is playing fine, but the subtitles are not working. If I call getTrackCount(TEXT_RENDER) it gives me 0, but in video file there are three tracks of subtitles. I am not good in any codecs or in the principles of playing, I basically application programmer;
For testing I'm using this video file: http://www.ex.ua/get/201122663

How I can force to work subtitles in my project? Thanks and sorry for my English.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions