-
Notifications
You must be signed in to change notification settings - Fork 6k
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
Some vorbis files does not play in ogg container #10502
Comments
I can reproduce the issue - I suspect (haven't verified) that |
@icbaker Is there some docs published (apart from the standard Javadoc) about extractors and writing our own? Got more and more request to support DSD / DSF so I think I'll have to write a DSF extractor and might look too at this Ogg multitrack issue, but don't really know where to start about the link between extractors and track counts / selection. |
Bump on this one I got more and more report about this :( |
@Tolriq I'll take a look on this issue in this week. Thank you for your patience. |
It seems we have an issue for this enhancement. I will close this one, so that we can track it in one place. Will check if we can pick this up for our next release. Duplicate of #4970 |
@rohitjoins This is not the same issue. This one is a music only file with an unwanted theora track that is unluckily first . |
@Tolriq It seems we are not able to able to parse a file which contains theora track and hence cannot play this media. I understand that ignoring theora track and only playing vorbis track should be simpler than supporting theora track but still requires us to find a way to do so. If you feel this is urgent, please feel free to send a PR as I couldn't find an easy way to ignore theora tracks from .ogg files. |
@rohitjoins I tried to look quickly into it, but I lack documentation about the extractors handling of multiple tracks in files. I asked earlier in this issue but got no answer. Javadoc is hard to follow about how and when track information is passed in / out. Current ogg extractor only support single track but ogg container can have multiple tracks. According to https://xiph.org/vorbis/doc/oggstream.html all initial pages must appear before any data page. So it's more about having the sniff check the next page to see if it's another initial page and see if it's supported. That's easy. But then no idea how to report the multiple tracks and get the info later to start at the proper page. There's nearly all already in from what I see, just check the next(s) initial pages and map the tracks to that initial page. |
So I decided to leave the track numbering and attribution to the one who will implement Theora support. Opened that properly ignore invalid track and allow playing of the first valid one. |
ExoPlayer Version
2.18.1
Devices that reproduce the issue
All
Devices that do not reproduce the issue
None
Reproducible in the demo app?
Yes
Reproduction steps
Play the attached file
Expected result
The media should play.
From my understanding after some research, it seems that this file also embed a "fake" Theora track that stream the cover.
But the file have a valid Vorbis track that plays normally on other players.
The ogg parser should support those file and only return the Vorbis tracks, specially when providing a music only player.
Actual result
2022-08-03 10:25:55.919 Error/ExoPlayer: playerFailed [eventTime=3707.62, mediaPos=0.00, window=3, period=3, errorCode=ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED
com.google.android.exoplayer2.ExoPlaybackException: Source error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:632)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:602)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (Mp3Extractor, FlacExtractor, OggExtractor, WavExtractor, MatroskaExtractor, Mp4Extractor, FragmentedMp4Extractor) could read the stream.
at com.google.android.exoplayer2.source.BundledExtractorsAdapter.init(BundledExtractorsAdapter.java:92)
at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1017)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Media
01 - Living In A Ghost Town.ogg.zip
Bug Report
adb bugreport
to [email protected] after filing this issue.The text was updated successfully, but these errors were encountered: