-
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
Audio only HLS/DASH/SS playbacks are not adaptive by default #1975
Comments
Please provide all information requested in the issue template. |
Hi This is my HLS playback url which i am trying to play through new exoplayer library. You can also check both apk in android device. ExoPlayerDemo with new library. (Not updating to high quality stream after playing 10 second) Currently, I am using provided ExoPlayer demo application. |
Hello Exoplayer developer, Did you check my demo apks or HLS link which i provided in last comment? Thanks |
The HLS link provided gives me a http 403 (forbidden). It's likely that it requires authentication or is geo-restricted (e.g. based on IP address). Providing a stream that we're able to access will help us investigate the issue. Is the stream audio only (i.e. no video)? If so then I think I know what's changed, and this is really a feature request to adapt audio (for DASH, SmoothStreaming and HLS) in the case that there's no video stream. Please confirm whether the stream is audio only and if possible provide a working URL, and we'll take a look at getting this done. Thanks! |
Please also confirm exactly what "newer version" you're using. "newer version" and "older version" are not useful descriptions when filing issues. Please always state the exact version numbers used ;). The clearer and more complete the issue is, the more likely we'll look at it quickly. |
I am trying to play HLS audio here. I just checked with latest exoplayer sdk v2.1.1, but still I am facing issue with it. Below is link to testing version: And below is link to test HLS audio link, which I have integrated in demo: In older ExoPlayer sdk(v1.5.x) it was automatically switching stream based on network bandwidth with default configuration, but with newer version(v2.0.x & v2.1.1) it continue playing with single stream for default config. But when I checked by enabling random adaption mode, it switches stream but I am not sure, whether it's going in proper way or not. So, can you please check and let me know, what is the correct way to do HLS audio streaming with latest(v2.1.1) sdk, I need to switch between available bandwidth base on network speed? |
We moved HLS behavior to be in line with what we do for DASH/SmoothStreaming in V2. For DASH/SmoothStreaming we didn't ever adapt audio only playbacks by default, and so we moved HLS behavior to be in line with that. It's somewhat unclear whether this should be considered a bug of enhancement, so I've marked with both labels for now. |
Hi exoplayer team, Is there any update on this bug? Issue is still there with latest v2.2.0 sdk. |
I am working on this. Sorry for the delay on the answer. I don't have permission to access the link provided above. Is it possible for you to fix that? You can always send private links to dev.exoplayer@gmail.com. |
This will allow us to make a single adaptive selection prioritizing video selections. Issue:#1975 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=150185086
I have mailed working streaming link as you mentioned. Please update us once you check it. |
This will allow us to use the same class for Audio adaptation. Issue:#1975 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=150302561
Received, thanks. Support for audio only adaptation should be available soon. |
When no video tracks or renderers are present, attempt audio adaptation. Issue:#1975 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=152708422
Fixed in |
I have tried with dev-v2 and dev-v2-r2.3.1, but still issue seems to be there. No changes seems to be there in streaming. Please check demo app from below link with dev-v2: Please check and let me know. Also, let me know, if any thing needs to added in code for adaptive audio streaming. |
Please provide a stream URL rather than an apk if you're still seeing an issue. Thanks. |
Below is HLS streaming URL, which we are using for testing purpose: Please check and let me know if you face any issue in accessing it. |
Adaptive audio is being enabled properly for the test stream in the demo app. If you look at the logging, you can see all five streams being selected:
So I'm unclear what the issue is that you're seeing. What do you expect to happen that's not happening? |
Perhaps you've concluded that the format is not adapting because you're not seeing any logging that looks like:
This is because the five streams are so similar, they actually look identical to the audio renderer that reports these format change events. If you want to see when the format changes, you can use |
@ojw28 Thanks, we will check. |
Hi Vivek I tested with the stream you sent me with ExoPlayer v2.4.0. When testing without network throttling I see this selection: measured effective bitrate is 25030856 so it always select the highest quality available:
When throttling the network it selects segments for 128000 bitrate. It checks the highest quality, recognizes it's above the available bitrate, checks he next which is ok and hence selected: 128000 -> ../segment2_3_a.ts (_3_a.ts)
|
When playing the stream with the APK you sent I see you are using ExoPlayer 2.3.1.
Can you please upgrade to 2.4.0 and confirm? |
Hi Marc, We have noticed some changes in behavior of latest Exoplayer sdk. Below are our findings:
|
Hello @hungamademo. I'll try to help as best as I can:
This is the intended behavior, so if it's not happening please file a new issue (don't forget to complete the issue template).
Note that random adaptation has only debugging purposes (as far as I know). It basically randomly chooses a variant every time a selection update is made. This is not intended to be used on production environments. However, the fact that turning it on triggers adaptations, suggests that the adaptive selection is actually being made. Since the default bitrate (See AdaptiveTrackSelection#DEFAULT_MAX_INITIAL_BITRATE) is 800kbps, it is likely that the highest audio quality is the default every time and, unless the network bandwidth is not sufficient, adaptation will not be triggered. You should be able to test this by throttling down the network speed. The stuttering you observe in Random adaptation may be caused by the fact that HLS requires overlapping segments downloads for adaptation (unlike DASH, for example). So, when the chunk downloader needs to choose the next segment to download, if random, it is likely that the variant gets changed, resulting in the buffered position not advancing. Let me know if you don't think this is the case. A fast way to check adaptation is working is making sure the lowest bitrate variant is selected at first. For example, by using a low |
@AquilesCanta we need to give adaptive streaming support for Audio only HLS playbacks and issue was reported for same. It was working very well with ExoPlayer v1.5.x, but with ExoPlayer v2.X, Audio only HLS playback sticks to particular bit-rate and not changing with network connectivity. We checked with ExoPlayer demo with v2.4.0 but Audio only HLS streaming is still not adaptive. Initially loading high bitrate stream takes more time in loading, so we first need to load stream with low bitrate and then need to move for high. Please suggest way to do so with ExoPlayer v2.4.0 for Audio only HLS streams. |
Just recapping what we've already said in this thread:
There is currently no good evidence in this discussion thread that supports the claim that adaptation is not working. Our tests show that it is working. Please answer the specific questions above, else there's nothing actionable for us to do here. |
Hello @ojw28. Below are our responses:
And for network variation during streaming, it only plays tracks with lower and higher bitrate. It never adopts track with middle bitrate(Track 1,2,3 as in point 2). Please check below logs.
Also, it takes almost 40-60 seconds during track switching. Please check this and let us know your response. Also, let us know if we need to do any changes in demo app for resolving this issue. |
So playback is adaptive, and your issues are actually:
Tackling each of these:
|
hi AquilesCanta, is there a way to press default for example to make the player adaptive like the old exoplayer without selecting any bitrates manually ? |
@Tarif-Hatoum, could you explain a bit better? ExoPlayer is, in most cases, adaptive by default. Are you speaking about the demo app? What does the media you are playing look like? If the media is HLS/DASH/SS, and provides multiple variants, it should be adaptive by default. |
Yes i mean the demo app if i need to put a butten named adaptive to make it adaptive when it is default how can i make it without any selection of any bitrate for example making it adaptive between all bitrates?
…Sent from my iPhone
On Jul 12, 2017, at 17:44, Santiago Seifert <notifications@github.com<mailto:notifications@github.com>> wrote:
@Tarif-Hatoum<https://github.com/tarif-hatoum>, could you explain a bit better?
ExoPlayer is, in most cases, adaptive by default. Are you speaking about the demo app? What does the media you are playing look like? If the media is HLS/DASH/SS, and provides multiple variants, it should be adaptive by default.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1975 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AcKlw2MspYS4HX37sLa8wHDfe1dUpXXZks5sNNu_gaJpZM4KcHTM>.
|
The demo app should be adaptive between all supported "bitrates" by default. Unless there are some video/audio bitrates, along with audio only ones, in which case it will only be adaptive between the ones that contain video. |
The demo app is not adaptive unless we enable the adaptive checkbox so is there a way to implement a button named adaptive in order to be selected when changing from specified bitrate to adaptive ?
…Sent from my iPhone
On Jul 12, 2017, at 18:00, Santiago Seifert <notifications@github.com<mailto:notifications@github.com>> wrote:
The demo app should be adaptive between all supported "bitrates" by default. Unless there are some video/audio bitrates, along with audio only ones, in which case it will only be adaptive between the ones that contain video.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1975 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AcKlw9TWphZZkbgjgZyUfyl1nhcwleeWks5sNN96gaJpZM4KcHTM>.
|
hi @AquilesCanta is there any update concerning how to make a button to make the stream adaptive ?
Best Regards
…________________________________
From: TARIF .. <tarif-hatoum@hotmail.com>
Sent: Wednesday, July 12, 2017 6:06:55 PM
To: google/ExoPlayer
Subject: Re: [google/ExoPlayer] Audio only HLS/DASH/SS playbacks are not adaptive by default (#1975)
The demo app is not adaptive unless we enable the adaptive checkbox so is there a way to implement a button named adaptive in order to be selected when changing from specified bitrate to adaptive ?
Sent from my iPhone
On Jul 12, 2017, at 18:00, Santiago Seifert <notifications@github.com<mailto:notifications@github.com>> wrote:
The demo app should be adaptive between all supported "bitrates" by default. Unless there are some video/audio bitrates, along with audio only ones, in which case it will only be adaptive between the ones that contain video.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1975 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AcKlw9TWphZZkbgjgZyUfyl1nhcwleeWks5sNN96gaJpZM4KcHTM>.
|
This should not be the case. But according to what you describe, it is most likely not. If this is happening, please report an issue as this is a bug (don't forget to include all the information required in the issue template). I guess that with "adaptive checkbox" you mean "default checkbox". The default checkbox provides the default behavior, which means it is what you'll get if you don't manually modify it (for example, by setting overrides). If you have manaully set overrides, you can call selector.clearSelectionOverrides(rendererIndex); which is exactly what the demo app does when you select the default checkbox. If you open the demo app (without modifications) and play an adaptive stream, and press default, it will not do anything. As a matter of fact, the "Default" radio button should already be selected. Just in case, It's worth mentioning again: "Enable random adaptation" just makes the player jump randomly between the selected tracks in the stream. It is not intended for use in production environment. If pressing that makes the app change resolution, then it means the app is already "being adaptive". |
Hi again i just need to implement a button that when clicked the stream became adaptive. So how cam implement it in such a way when clicked the stream will be adaptive ?
Best regards
…Sent from my iPhone
On Jul 13, 2017, at 13:49, Santiago Seifert <notifications@github.com<mailto:notifications@github.com>> wrote:
The demo app is not adaptive unless we enable the adaptive checkbox
This should not be the case. But according to what you describe, it is most likely not. If this is happening, please report an issue as this is a bug (don't forget to include all the information required in the issue template).
I guess that with "adaptive checkbox" you mean "default checkbox". The default checkbox provides the default behavior, which means it is what you'll get if you don't manually modify it (for example, by setting overrides). If you have manaully set overrides, you can call selector.clearSelectionOverrides(rendererIndex); which is exactly what the demo app does when you select the default checkbox. If you open the demo app (without modifications) and play an adaptive stream, and press default, it will not do anything. As a matter of fact, the "Default" radio button should already be selected.
Just in case, It's worth mentioning again: "Enable random adaptation" just makes the player jump randomly between the selected tracks in the stream. It is not intended for use in production environment. If pressing that makes the app change resolution, then it means the app is already "being adaptive".
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1975 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AcKlwxqwiWcQJ9BSst2h1T8NhrTw9xhwks5sNfYogaJpZM4KcHTM>.
|
@Tarif-Hatoum - For audio only streams, the demo app is adaptive by default, without you having to select any kind of check box. It should be clear from the logging that multiple audio streams are being selected as part of an adaptive selection (look for [X] marks next to multiple audio tracks in the logs, as can be seen in examples further up in this issue thread). You do not have to do anything to turn this functionality on. I'm going to lock this issue, since it's really just getting noisy at this point and the information we need to help has not been provided. If you believe audio only streams are not being adapted by default in the demo app, please report this as a new issue, including a proper bug report (or at least logging output) and the test stream for which adaptive audio is not being enabled. Thanks. |
Hi,
I have update ExoPlayer and facing some issue.
In older version, When i play audio HLS link, It was start playing with low bit-rate (low quality) and After 4 or 5 sec It was automatically playing with high bit-rate (high quality).
But in new version, It's never start playing with high bit-rate automatically.
Please provide me solution for same.
The text was updated successfully, but these errors were encountered: