Comments (8)
Adding some info, i'm streaming a audio file with .m3u8 extension, and i was looking into the logs and found the following error:
01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: Playback error 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: com.google.android.exoplayer2.ExoPlaybackException: Source error 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:684) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:656) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at android.os.Handler.dispatchMessage(Handler.java:102) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at android.os.Looper.loopOnce(Looper.java:205) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at android.os.Looper.loop(Looper.java:294) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at android.os.HandlerThread.run(HandlerThread.java:67) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.SocketTimeoutException: failed to connect to play.radio.br/131.255.161.38 (port 8089) from /10.0.2.16 (port 41420) after 8000ms 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:388) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:269) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:90) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DataSourceInputStream.checkOpened(DataSourceInputStream.java:105) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DataSourceInputStream.open(DataSourceInputStream.java:68) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:179) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.lang.Thread.run(Thread.java:1012) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: Caused by: java.net.SocketTimeoutException: failed to connect to play.radio.br/131.255.161.38 (port 8089) from /10.0.2.16 (port 41420) after 8000ms 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at libcore.io.IoBridge.connectErrno(IoBridge.java:235) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at libcore.io.IoBridge.connect(IoBridge.java:179) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at java.net.Socket.connect(Socket.java:646) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:182) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:145) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:659) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:556) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:382) 01-29 11:57:12.874 12446 12529 E ExoPlayerImplInternal: ... 9 more
from xamarinmediamanager.
I found the same problem with MediaManager while using it in a Maui Android app. The player stops few minutes after the application is minimized or after the screen of the device is locked.
from xamarinmediamanager.
If it helps, I managed to make it work by creating a foreground service that starts when I play a stream URL and stop when I pause or stop the stream. This service does nothing but the fact that it exists prevents the OS from killing the app.
from xamarinmediamanager.
Yes, thanks; that's what I was going to do. In Windows the app runs fine when minimized or when the screen is locked. It seems that MediaManager uses different libraries for Windows.
from xamarinmediamanager.
Android devices has battery optimization settings for the apps. Could you try to get this permission and see that's work for you.
if (Build.VERSION.SdkInt >= BuildVersionCodes.M) { String? packageName = Platform.CurrentActivity?.PackageName; Android.Content.Intent intent = new Android.Content.Intent(); intent.SetAction(Android.Provider.Settings.ActionRequestIgnoreBatteryOptimizations); intent.SetData(Android.Net.Uri.Parse("package:" + packageName)); Platform.CurrentActivity?.StartActivity(intent); }
Also add this to manifest
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
from xamarinmediamanager.
I disabled the battery optimization on the device for the application which I deployed to the device. Android is ignoring that option.
Where do I add the code which you suggested? Do I add that to the constructor of the MainPage? Do I need to stop and destroy the service when the application ends?
from xamarinmediamanager.
I added that part into my HomeViewModel. Just asked the permission and that's it. Some android devices have own restrictions, it could be that as well
from xamarinmediamanager.
The suggested solution did not work. The application is still stopped if it loses focus.
from xamarinmediamanager.
Related Issues (20)
- PlayingNext() doesnt work on Android and Play works only on iOS
- Java.Lang.NoClassDefFoundError com.google.android.exoplayer2.source.ConcatenatingMediaSource in version 1.2.2 HOT 1
- Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. HOT 2
- Player not loaded, notification not displayed also even with the android 12 patch branch and also with the android 12 2023 branch !!!
- 1.2.2 could crash on earlier Android devices when starting the foreground service. HOT 3
- Ios doesnt play from queue
- Event fired when an element inside of a list of elements sent to play finishes
- Replace conditional compilation with partial classes
- Why version 1.2.2 not support Xamarin?
- MAUI Android audio stops after running in the background for about 15 minutes HOT 6
- Can we change the playback control images of the player using media manager plugin HOT 4
- VideoView Play, Pause and Progressbar controls are not showing on iOS 16+ HOT 1
- M3u8 video playing issue
- Any plans to support WASM / WebAssembly?
- Why no support for `NET7` - and is it planned?
- PositionChanged in milliseconds
- MediaManagerBase.TimerInterval
- PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES
- Cannot play audio from stream in Android HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xamarinmediamanager.