Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to check those mp4 file valid for exoplayer #2906

Closed
Livekus opened this issue Jun 5, 2017 · 3 comments
Closed

how to check those mp4 file valid for exoplayer #2906

Livekus opened this issue Jun 5, 2017 · 3 comments
Labels

Comments

@Livekus
Copy link

Livekus commented Jun 5, 2017

Before filing an issue:

I run with video is local file ( not streamimng)

    ` Handler handler = new Handler() ;
  DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new DefaultTrackSelector( videoTrackSelectionFactory);`

 player = ExoPlayerFactory.newSimpleInstance(mContext, trackSelector,new DefaultLoadControl());

   viewVideo.setUseController(false);

    viewVideo.setUseArtwork(true);

    viewVideo.requestFocus();

    viewVideo.setPlayer(player);

   MediaSource videoSource;

    LoopingMediaSource loopingMediaSource;

    MediaSource concatenatedSource = null;
    ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext,
    Util.getUserAgent(mContext, mContext.getPackageName()), bandwidthMeter);

    Uri uri = Uri.parse(eachSource);
            videoSource = new ExtractorMediaSource(uri,
                        dataSourceFactory, extractorsFactory, handler, null);
    loopingMediaSource
                = new LoopingMediaSource(videoSource);
        player.prepare(loopingMediaSource);
        player.setPlayWhenReady(true);
       `

by this code above , i can play some mp4 file but some file is not playable , i have no idea for check what is different between those mp4 file , i use mediainfo program on ubantu for inspection ,but no luck ,please tell me how to check those mp4 file compatible with exoplayer

When reporting a bug:

06-05 16:17:30.219 23224-30951/com.apptividia.digitalsignage D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000, [1920x1080]-format:1
06-05 16:17:33.239 23224-31030/com.apptividia.digitalsignage E/ExoPlayerImplInternal: Source error.
java.io.EOFException
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:262)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFully(DefaultExtractorInput.java:70)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFully(DefaultExtractorInput.java:79)
at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readAtomPayload(Mp4Extractor.java:252)
at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:147)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:643)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:295)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
06-05 16:17:33.247 23224-23224/com.apptividia.digitalsignage W/System.err: com.google.android.exoplayer2.ExoPlaybackException
06-05 16:17:33.247 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:345)
06-05 16:17:33.247 23224-23224/com.apptividia.digitalsignage W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98)
06-05 16:17:33.247 23224-23224/com.apptividia.digitalsignage W/System.err: at android.os.Looper.loop(Looper.java:154)
06-05 16:17:33.247 23224-30626/com.apptividia.digitalsignage I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
06-05 16:17:33.248 23224-23224/com.apptividia.digitalsignage W/System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
06-05 16:17:33.248 23224-30626/com.apptividia.digitalsignage I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
06-05 16:17:33.249 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
06-05 16:17:33.249 23224-23224/com.apptividia.digitalsignage W/System.err: Caused by: java.io.EOFException
06-05 16:17:33.250 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:262)
06-05 16:17:33.250 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFully(DefaultExtractorInput.java:70)
06-05 16:17:33.250 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFully(DefaultExtractorInput.java:79)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readAtomPayload(Mp4Extractor.java:252)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:147)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:643)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:295)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
06-05 16:17:33.251 23224-23224/com.apptividia.digitalsignage W/System.err: at java.lang.Thread.run(Thread.java:762)

Link to test content

1080p video is playable

playablevideo1
playablevideo2

1080p video is not playable

errorvideo1
errorvideo2

Version of ExoPlayer being used

exoplayer 2.3.1

Device(s) and version(s)

android 7 sumsung galazy s7

@ojw28
Copy link
Contributor

ojw28 commented Jun 5, 2017

The original cause of failure (clipped off the top of what you've provided), is:

EventLogger: com.google.android.exoplayer2.ParserException: The edited sample sequence does not contain a sync sample.
EventLogger: 	at com.google.android.exoplayer2.extractor.mp4.AtomParsers.parseStbl(AtomParsers.java:398)
EventLogger: 	at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.processMoovAtom(Mp4Extractor.java:343)

It appears the problematic media has a strange edit list, that's discarding the first 4 video frames for no apparent reason. The first frame is the only key-frame, so after applying the edit list we end up with no key-frames from which to start playback.

Playing this type of media correctly is tracked by #1659, although there doesn't seem to be a valid reason for the edit list to exist in the piece of media. If you have control over the media itself then you should just fix it to not include an edit list.

@Livekus
Copy link
Author

Livekus commented Jun 6, 2017

Ok ,Could you please give me some information about edit list ?,( i have no idea what edit list do in mp4 file ) , before i exclude edit list form mp4 file.

@ojw28
Copy link
Contributor

ojw28 commented Jun 6, 2017

Advising on correct media preparation is outside the scope of this issue tracker, sorry. I'd suggest asking on StackOverflow or similar.

@ojw28 ojw28 closed this as completed Jun 6, 2017
@ojw28 ojw28 added the question label Jun 6, 2017
@google google locked and limited conversation to collaborators Oct 5, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants