twireapp / twire Goto Github PK
View Code? Open in Web Editor NEWTwire is an alternative and open source Twitch client for Android
License: GNU General Public License v3.0
Twire is an alternative and open source Twitch client for Android
License: GNU General Public License v3.0
Hi, I think it would be pretty useful if Twire would allow sharing of streams and VODs. Personally I'd use this feature to browse Twitch streams on my phone and share them to my Kodi box.
The app should support the Chat Replay feature that allows users to view the chat from the live broadcast on VODs.
The error "Stream no longer live" still happens in the version 1.9.7.
Currently, once a stream is playing, the only way to get back to the previous screen and the application menus is to click the arrow on the stream frame.
It would be a nice addition to allow user to do the same with Android's previous button (maybe also have the slide menu on the left? No idea about that one).
I can't send any stream of the 'Music & Performing arts' category to my external player (mpv here).
Should be caused by the &
in the category title
Would be nice if Twire could act as a URL handler for various twitch link types.
The essential ones:
The F-Droid build currently failes because gradle is too new: https://f-droid.org/wiki/page/com.perflyst.twire/lastbuild
Due to commit Perflyst@e23f0af from @samfun123
When I use the Twire player to watch a stream the video is a black screen but I can hear the audio fine.
The video does work when using an external player such as VLC.
I'm not sure if it's something on my end, but it's only happened recently. It used to be fine .
Can you make so you can start a stream from a link, using the 'share' menu?
Lots of requests, feel free to respond as you will. Thanks a lot for what you're doing.
I think it would be cool to receive notifications when a streamer you follow goes live, like on the official Twitch app for android. Is this a possibility?
Thanks for the work, it's nice to have a no-browser option to use twitch without an account.
Dunno how deep you want to go on the 'no account' end, but could you add a local favorites/inscriptions page? It would be great since the kind of stuff that I'm looking for only show up in the default pages once per year at best.
Thanks.
Once opening a stream, there's a "Connecting to chat" appearing for the chat zone, and then it's never replaced by the actual chat.
I tried to take a look at adb logcat -v threadtime
, but sadly running a stream throw a massive amount of logs so I don't really know at what should I look about this specific issue.
(And yes, I saw the other issue about this, and I'm logged in, although, it would make sense to have read-only chat even if not logged in)
When choosing audio-only in the stream settings, nothing changes besides audio-only being selected.
hi , background playback and sound alone do not work ,
Add an area where everyone can see the privacy police of the app
The app use some VPN that change every single day?
Hello,
I wanted to ask if you have before future translations to support. I would like to help you to translate the app into German.
Greetz.
I would love to get picture-in-picture support. I am willing to work on this feature myself.
Might it be an idea to add mixer support to this app?
There are no FOSS mixer players & I really want to watch ninja 😉
As of now in Android 9 (LineageOS) I couldn't watch/listen a stream in the background outside of split-screen. Is it possible to keep the stream running in the back, and even maybe add a floating window mode?
Dunno if it's easy to implement the default option from Android, used by YouTube and a few apps running fullscreen, or add a more robust choice like what Newpipe does. The license seems compatible, the code however I have no idea.
Currently it offers to custom themes while from a UX standpoint, it should send to account management.
Send a feed when one of streamers is on live
This issue can be used to ask general questions on Twire and everythint related to the fork.
~~Hello,
since I wasn't able to find your contact info I ask here. I just found your porject in F-Droid and saw that it is a fork of Pocket Player. I hope this doesn't sound unfriendly but I wonder what are your motivations for forking? It would help me deciding which project to use.
Many thanks in advance!
edit: just found your email. Hope it's fine if I leave this issue open anyway.~~
Impulse seems have the right idea I think when it comes to chat. Anyway to build it more like that? It recognizes all of the sub badges, emotes bttv, and FFZ including the animated ones. If I was gud I'd contribute, but I'm an idiot.
Hello,
When I try to log in with my Twitch account in Twire, I get the form from Twitch and I'm then redirected to a page −which, weirdly, has no formatting− asking to allow access to the app. When I click on the button to do it, nothing happens at all. Twire doesn't appear in my Connections tab on Twitch. Other apps/services with Twitch integration I've tried work fine.
It happens both on a phone (Huawei Ice-Twist, Android 4.2.2) and a tablet (Samsung Galaxy Tab 2, Android 4.1.2).
An option to turn off animation throughout the app would be great
Can you please support Twitch emotes and badges from the FrankerFaceZ extension?
I haven't the permission to upload the xml file but I attached it in this link (https://jirafeau.net/f.php?h=2vxj_1Iq&d=1)
This makes it impossible to send a message when the system UI covers the "send" button (caused by #13) in landscape mode. But it's just a nice feature to have regardless.
Can't get the chat working.
It always display Connecting to chat
but obviously don't.
Running Android 6.0
If after log in user then click on precedent/previous Android button, user goes on a white screen, then doing previous again leads to the "Hello XXXXX" screen, adn more generally, the path through the app by clicking previous can be surprising (like a stack of screens user is unstacking).
I have a phone with 18:9 screen aspect ratio and with the newest version of Twire 1.9.6 if the stream is in 16:9 ratio then it's zooming in and top and bottom pixels are not visible.
In 1.9.2 version it's fine. 16:9 ratio stream is showing in original size with black bars on the sides.
It would be nice to have a screen gesture to stretch and unstretch the aspect ratio and/or something in the settings to change it.
https://f-droid.org/wiki/page/com.perflyst.twire/lastbuild
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
See joined screenshot:
"My Streams" tab fail to display anything every time I try.
Here are Java exceptions caught into adb logcat -v threadtime
10-09 14:58:57.363 16791 16791 I Timeline: Timeline: Activity_launch_request id:com.perflyst.twire time:730291226
10-09 14:58:57.365 920 3828 I ActivityManager: START u0 {flg=0x10000 cmp=com.perflyst.twire/.activities.main.MyStreamsActivity (has extras)} from uid 10441 on display 0
10-09 14:58:57.468 16791 16791 E View : hasTransientState decremented below 0: unmatched pair of setHasTransientState calls
10-09 14:58:57.513 920 978 I ActivityManager: Displayed com.perflyst.twire/.activities.main.MyStreamsActivity: +126ms
10-09 14:58:57.513 920 978 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{38a9cf5 u0 com.perflyst.twire/.activities.main.MyStreamsActivity t3387} time:730291376
10-09 14:58:57.734 16791 16867 W System.err: java.io.FileNotFoundException: https://api.twitch.tv/kraken/streams/followed?oauth_token=HASH&offset=0&stream_type=live
10-09 14:58:57.735 16791 16867 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
10-09 14:58:57.735 16791 16867 W System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
10-09 14:58:57.735 16791 16867 W System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
10-09 14:58:57.735 16791 16867 W System.err: at com.perflyst.twire.service.Service.urlToJSONString(Service.java:607)
10-09 14:58:57.735 16791 16867 W System.err: at com.perflyst.twire.tasks.GetStreamsCountTask.doInBackground(GetStreamsCountTask.java:29)
10-09 14:58:57.737 16791 16867 W System.err: at com.perflyst.twire.tasks.GetStreamsCountTask.doInBackground(GetStreamsCountTask.java:14)
10-09 14:58:57.737 16791 16867 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-09 14:58:57.738 16791 16867 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-09 14:58:57.738 16791 16867 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-09 14:58:57.738 16791 16867 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-09 14:58:57.738 16791 16867 W System.err: at java.lang.Thread.run(Thread.java:818)
10-09 14:58:57.743 16791 16867 V URL TO JSON STRING: https://api.twitch.tv/kraken/streams/followed?oauth_token=HASH&offset=0&stream_type=live did not successfully get read
10-09 14:58:57.743 16791 16867 V URL TO JSON STRING: Result of reading -
10-09 14:58:57.745 16791 16867 W System.err: org.json.JSONException: End of input at character 0 of
10-09 14:58:57.745 16791 16867 W System.err: at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
10-09 14:58:57.745 16791 16867 W System.err: at org.json.JSONTokener.nextValue(JSONTokener.java:97)
10-09 14:58:57.745 16791 16867 W System.err: at org.json.JSONObject.<init>(JSONObject.java:156)
10-09 14:58:57.746 16791 16867 W System.err: at org.json.JSONObject.<init>(JSONObject.java:173)
10-09 14:58:57.746 16791 16867 W System.err: at com.perflyst.twire.tasks.GetStreamsCountTask.doInBackground(GetStreamsCountTask.java:30)
10-09 14:58:57.746 16791 16867 W System.err: at com.perflyst.twire.tasks.GetStreamsCountTask.doInBackground(GetStreamsCountTask.java:14)
10-09 14:58:57.746 16791 16867 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-09 14:58:57.746 16791 16867 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-09 14:58:57.746 16791 16867 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-09 14:58:57.746 16791 16867 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-09 14:58:57.746 16791 16867 W System.err: at java.lang.Thread.run(Thread.java:818)
10-09 14:58:57.902 16791 16813 W System.err: java.io.FileNotFoundException: https://api.twitch.tv/kraken/streams/followed?oauth_token=HASH&limit=10&offset=0&stream_type=live
10-09 14:58:57.902 16791 16813 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
10-09 14:58:57.903 16791 16813 W System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
10-09 14:58:57.903 16791 16813 W System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
10-09 14:58:57.903 16791 16813 W System.err: at com.perflyst.twire.service.Service.urlToJSONString(Service.java:607)
10-09 14:58:57.903 16791 16813 W System.err: at com.perflyst.twire.activities.main.MyStreamsActivity.getVisualElements(MyStreamsActivity.java:60)
10-09 14:58:57.903 16791 16813 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:29)
10-09 14:58:57.903 16791 16813 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:11)
10-09 14:58:57.903 16791 16813 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-09 14:58:57.903 16791 16813 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-09 14:58:57.903 16791 16813 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-09 14:58:57.903 16791 16813 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-09 14:58:57.903 16791 16813 W System.err: at java.lang.Thread.run(Thread.java:818)
10-09 14:58:57.904 16791 16813 V URL TO JSON STRING: https://api.twitch.tv/kraken/streams/followed?oauth_token=HASH&limit=10&offset=0&stream_type=live did not successfully get read
10-09 14:58:57.904 16791 16813 V URL TO JSON STRING: Result of reading -
10-09 14:58:57.905 16791 16813 W System.err: org.json.JSONException: End of input at character 0 of
10-09 14:58:57.905 16791 16813 W System.err: at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
10-09 14:58:57.905 16791 16813 W System.err: at org.json.JSONTokener.nextValue(JSONTokener.java:97)
10-09 14:58:57.905 16791 16813 W System.err: at org.json.JSONObject.<init>(JSONObject.java:156)
10-09 14:58:57.905 16791 16813 W System.err: at org.json.JSONObject.<init>(JSONObject.java:173)
10-09 14:58:57.905 16791 16813 W System.err: at com.perflyst.twire.activities.main.MyStreamsActivity.getVisualElements(MyStreamsActivity.java:61)
10-09 14:58:57.905 16791 16813 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:29)
10-09 14:58:57.905 16791 16813 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:11)
10-09 14:58:57.905 16791 16813 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-09 14:58:57.905 16791 16813 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-09 14:58:57.905 16791 16813 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-09 14:58:57.905 16791 16813 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-09 14:58:57.905 16791 16813 W System.err: at java.lang.Thread.run(Thread.java:818)
10-09 14:58:57.910 16791 16791 I GetVisualElementsTask: ADDING 0 VISUAL ELEMENTS
10-09 14:58:57.910 16791 16791 I : Adding Top Streams: 0
10-09 14:58:58.152 16791 16811 W System.err: java.io.FileNotFoundException: https://api.twitch.tv/kraken/streams/followed?oauth_token=HASH&limit=10&offset=0&stream_type=live
10-09 14:58:58.154 16791 16811 W System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
10-09 14:58:58.154 16791 16811 W System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
10-09 14:58:58.154 16791 16811 W System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
10-09 14:58:58.154 16791 16811 W System.err: at com.perflyst.twire.service.Service.urlToJSONString(Service.java:607)
10-09 14:58:58.154 16791 16811 W System.err: at com.perflyst.twire.activities.main.MyStreamsActivity.getVisualElements(MyStreamsActivity.java:60)
10-09 14:58:58.155 16791 16811 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:29)
10-09 14:58:58.155 16791 16811 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:11)
10-09 14:58:58.155 16791 16811 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-09 14:58:58.155 16791 16811 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-09 14:58:58.155 16791 16811 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-09 14:58:58.155 16791 16811 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-09 14:58:58.155 16791 16811 W System.err: at java.lang.Thread.run(Thread.java:818)
10-09 14:58:58.155 16791 16811 V URL TO JSON STRING: https://api.twitch.tv/kraken/streams/followed?oauth_token=HASH&limit=10&offset=0&stream_type=live did not successfully get read
10-09 14:58:58.155 16791 16811 V URL TO JSON STRING: Result of reading -
10-09 14:58:58.155 16791 16811 W System.err: org.json.JSONException: End of input at character 0 of
10-09 14:58:58.156 16791 16811 W System.err: at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
10-09 14:58:58.156 16791 16811 W System.err: at org.json.JSONTokener.nextValue(JSONTokener.java:97)
10-09 14:58:58.156 16791 16811 W System.err: at org.json.JSONObject.<init>(JSONObject.java:156)
10-09 14:58:58.156 16791 16811 W System.err: at org.json.JSONObject.<init>(JSONObject.java:173)
10-09 14:58:58.156 16791 16811 W System.err: at com.perflyst.twire.activities.main.MyStreamsActivity.getVisualElements(MyStreamsActivity.java:61)
10-09 14:58:58.156 16791 16811 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:29)
10-09 14:58:58.156 16791 16811 W System.err: at com.perflyst.twire.tasks.GetVisualElementsTask.doInBackground(GetVisualElementsTask.java:11)
10-09 14:58:58.156 16791 16811 W System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
10-09 14:58:58.156 16791 16811 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-09 14:58:58.156 16791 16811 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
10-09 14:58:58.156 16791 16811 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10-09 14:58:58.156 16791 16811 W System.err: at java.lang.Thread.run(Thread.java:818)
10-09 14:58:58.163 16791 16791 I GetVisualElementsTask: ADDING 0 VISUAL ELEMENTS
10-09 14:58:58.163 16791 16791 I : Adding Top Streams: 0
twicht api modified , before stream ads appear for hp omen ,
There is a plan for translations or not?
Because I want translate the app.
@ApoRes1337 https://github.com/Perflyst/Twire/issues/9
Any stream I tried to play from Twire is failing to play, displaying "Stream is no longer live" message, while this isn't true and can be played alsewhere.
Here are some adb
logs if it can help, cleaned out for some parts:
04-04 23:28:11.522 30177 30177 I Timeline: Timeline: Activity_launch_request id:com.perflyst.twire time:731112887
04-04 23:28:11.523 927 3300 I ActivityManager: START u0 {cmp=com.perflyst.twire/.activities.stream.LiveStreamActivity (has extras)} from uid 10441 on display 0
04-04 23:28:11.592 30177 30177 D Settings: Saving Current Progress: 0
04-04 23:28:11.858 30177 30217 D ChatManager: Trying to start chat #channel for user porkepix
04-04 23:28:11.860 30177 30177 D LiveStreamActivity: Current orientation: 1
04-04 23:28:11.860 30177 30177 D StreamFragment: Showing navigation
04-04 23:28:11.916 30177 30177 D StreamFragment: WindowFocusChanged to true - isLandscape false
04-04 23:28:11.916 30177 30177 D StreamFragment: Showing navigation
04-04 23:28:11.919 927 987 I ActivityManager: Displayed com.perflyst.twire/.activities.stream.LiveStreamActivity: +376ms
04-04 23:28:11.919 927 987 I Timeline: Timeline: Activity_windows_visible id: ActivityRecord{8d80429 u0 com.perflyst.twire/.activities.stream.LiveStreamActivity t551} time:731113284
04-04 23:28:11.933 30177 30284 D ACCESS_TOKEN_STRING: {"adblock":false,"authorization":{"forbidden":false,"reason":""},"blackout_enabled":false,"channel":"channel","channel_id":71852533,"chansub":{"restricted_bitrates":["archives"],"view_until":1924905600},"ci_gb":false,"geoblock_reason":"","device_id":null,"expires":1554414390,"game":"League of Legends","hide_ads":false,"https_required":false,"mature":false,"partner":false,"platform":null,"player_type":null,"private":{"allowed_to_view":true},"privileged":false,"server_ads":true,"show_ads":true,"subscriber":false,"turbo":false,"user_id":null,"user_ip":"","version":2}
04-04 23:28:11.933 30177 30284 D GetLiveStreamURL: HSL Playlist URL: http://usher.twitch.tv/api/channel/hls/channel.m3u8?player=twitchweb&&token={"adblock":false,"authorization":{"forbidden":false,"reason":""},"blackout_enabled":false,"channel":"channel","channel_id":71852533,"chansub":{"restricted_bitrates":["archives"],"view_until":1924905600},"ci_gb":false,"geoblock_reason":"","device_id":null,"expires":1554414390,"","hide_ads":false,"https_required":false,"mature":false,"partner":false,"platform":null,"player_type":null,"private":{"allowed_to_view":true},"privileged":false,"server_ads":true,"show_ads":true,"subscriber":false,"turbo":false,"user_id":null,"user_ip":"","version":2}&sig=&allow_audio_only=true&allow_source=true&type=any&p=1
04-04 23:28:11.945 30177 30283 V URL TO JSON STRING: https://api.twitch.tv/api/channels/channel/panels did not successfully get read
04-04 23:28:11.945 30177 30283 V URL TO JSON STRING: Result of reading - []
04-04 23:28:11.962 30177 30177 I Timeline: Timeline: Activity_idle id: android.os.BinderProxy@71ee271 time:731113328
04-04 23:28:12.086 30177 30177 D StreamFragment: Fetching viewers
04-04 23:28:12.244 30177 30177 D ViewRootImpl: changeCanvasOpacity: opaque=true
04-04 23:28:12.443 927 3826 I MediaFocusControl: AudioFocus requestAudioFocus() from android.media.AudioManager@7b54914 req=1flags=0x0
04-04 23:28:12.445 30177 30177 E ExtMediaPlayer-JNI: env->IsInstanceOf fails
04-04 23:28:12.445 30177 30177 E MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
04-04 23:28:12.445 30177 30177 E ExtMediaPlayer-JNI: env->IsInstanceOf fails
04-04 23:28:12.445 30177 30177 E MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
04-04 23:28:12.446 30177 30177 W MediaPlayer: Couldn't open file on client side, trying server side
04-04 23:28:12.448 11901 30772 D NuPlayer: onSetVideoSurface(0x9e165f00, no video decoder)
04-04 23:28:12.448 11901 12298 D NuPlayerDriver: reset(0xab219840)
04-04 23:28:12.448 11901 12298 D NuPlayerDriver: notifyListener_l(0xab219840), (1, 0, 0)
04-04 23:28:12.449 11901 12298 D NuPlayerDriver: notifyListener_l(0xab219840), (8, 0, 0)
04-04 23:28:12.449 11901 30772 W AMessage: failed to post message as target looper for handler 0 is gone.
04-04 23:28:12.449 11901 30773 I LiveSession: onConnect http://<suppressed>
04-04 23:28:12.451 11901 30772 D NuPlayerDriver: notifyResetComplete(0xab219840)
04-04 23:28:12.451 11901 11901 D NuPlayerDriver: reset(0xab219840)
04-04 23:28:12.452 927 3809 I MediaFocusControl: AudioFocus abandonAudioFocus() from android.media.AudioManager@7b54914
04-04 23:28:12.452 927 3320 I MediaFocusControl: AudioFocus requestAudioFocus() from android.media.AudioManager@7b54914 req=1flags=0x0
04-04 23:28:12.453 30177 30177 E ExtMediaPlayer-JNI: env->IsInstanceOf fails
04-04 23:28:12.453 30177 30177 E MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
04-04 23:28:12.453 30177 30177 E ExtMediaPlayer-JNI: env->IsInstanceOf fails
04-04 23:28:12.453 30177 30177 E MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
04-04 23:28:12.454 30177 30177 W MediaPlayer: Couldn't open file on client side, trying server side
04-04 23:28:12.455 11901 30775 D NuPlayer: onSetVideoSurface(0xa68dd000, no video decoder)
04-04 23:28:12.456 11901 30776 I LiveSession: onConnect http://<suppressed>
04-04 23:28:12.457 30177 30177 D StreamFragment: Starting Stream With a quality on auto for channel
04-04 23:28:12.458 30177 30177 D StreamFragment: URLS: [auto, medium, audio_only, low, chunked, high]
04-04 23:28:12.460 30177 30188 D MediaHTTPConnection: filterOutInternalHeaders: key=User-Agent, val= SonyD5803 Build/23.5.A.1.291 stagefright/1.2 (Linux;Android 6.0.1)
04-04 23:28:12.460 30177 30188 D MediaHTTPConnection: filterOutInternalHeaders: key=x-wap-profile, val= http://uaprof.sonymobile.com/D5803R2331.xml
04-04 23:28:12.461 30177 30189 D MediaHTTPConnection: proxy null port 0
04-04 23:28:12.464 30177 30177 D ChatFragment: Bttv Emotes loaded: 102
04-04 23:28:12.751 30177 30678 D MediaHTTPConnection: proxy null port 0
04-04 23:28:13.032 30177 30217 D ChatManager: <:tmi.twitch.tv 001 porkepix :Welcome, GLHF!
04-04 23:28:13.032 30177 30217 D ChatManager: <:tmi.twitch.tv 002 porkepix :Your host is tmi.twitch.tv
04-04 23:28:13.032 30177 30217 D ChatManager: <:tmi.twitch.tv 003 porkepix :This server is rather new
04-04 23:28:13.032 30177 30217 D ChatManager: <:tmi.twitch.tv 004 porkepix :-
04-04 23:28:13.033 30177 30217 D ChatManager: Connected >> porkepix ~ irc.twitch.tv
04-04 23:28:13.035 30177 30177 D ChatFragment: Chat connected
04-04 23:28:13.041 30177 30217 D ChatManager: <:tmi.twitch.tv 375 porkepix :-
04-04 23:28:13.041 30177 30217 D ChatManager: <:tmi.twitch.tv 372 porkepix :You are in a maze of twisty passages, all alike.
04-04 23:28:13.041 30177 30217 D ChatManager: <:tmi.twitch.tv 376 porkepix :>
04-04 23:28:13.078 11901 30776 E LiveSession: unable to fetch master playlist http://<suppressed>.
04-04 23:28:13.078 11901 30775 D NuPlayerDriver: notifyListener_l(0xac877780), (100, 1, -1004)
04-04 23:28:13.079 30177 30188 E MediaPlayer: error (1, -1004)
04-04 23:28:13.087 30177 30177 E MediaPlayer: Error (1,-1004)
04-04 23:28:13.087 30177 30177 D VideoView: Error: 1,-1004
04-04 23:28:13.087 30177 30177 E StreamFragment: Something went wrong playing the stream for channel - What: 1 - Extra: -1004
04-04 23:28:13.216 30177 30217 D ChatManager: <:tmi.twitch.tv CAP * ACK :twitch.tv/tags twitch.tv/commands
04-04 23:28:13.410 30177 30217 D ChatManager: <:[email protected] JOIN #channel
04-04 23:28:13.414 30177 30217 D ChatManager: <:porkepix.tmi.twitch.tv 353 porkepix = #channel :porkepix
04-04 23:28:13.414 30177 30217 D ChatManager: <:porkepix.tmi.twitch.tv 366 porkepix #channel :End of /NAMES list
04-04 23:28:13.415 30177 30217 D ChatManager: Failed to find roomstate pattern in:
04-04 23:28:13.415 30177 30217 D ChatManager: @emote-only=0;followers-only=1;r9k=0;rituals=1;room-id=;slow=0;subs-only=0 :tmi.twitch.tv ROOMSTATE #channel
04-04 23:28:13.869 30177 30177 D ViewRootImpl: changeCanvasOpacity: opaque=false
I know the original Pocket Plays support this, so I don't think it'll be too difficult to port. I enjoyed the way it was implemented in that it allowed you to pick the playback quality. Thanks in advance!
I get this in the last version, Im using Android 4.2:
Default landscape view, the video is in wrong aspect ratio - 2.08:1 (same as the whole screen), has top & bottom black bars:
After pulling out the side chat, aspect ratio is still wrong:
Closing the side chat, aspect ratio still the same, but the video now fills full height, cutting off on the right:
Probably related to #56.
some streams don't work here is the network request in order to see more clearly:
here is the url of a stream that works:
04-30 18:15:43.443 992-1835/? E/Parcel: Class not found when unmarshalling: com.perflyst.twire.model.ChannelInfo java.lang.ClassNotFoundException: com.perflyst.twire.model.ChannelInfo at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:308) at java.lang.Class.forName(Class.java:272) at android.os.Parcel.readParcelableCreator(Parcel.java:2275) at android.os.Parcel.readParcelable(Parcel.java:2239) at android.os.Parcel.readValue(Parcel.java:2146) at android.os.Parcel.readArrayMapInternal(Parcel.java:2479) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getString(BaseBundle.java:918) at android.content.Intent.getStringExtra(Intent.java:4960) at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1462) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1046) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4578) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4477) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:144) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3010) at android.os.Binder.execTransact(Binder.java:446) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.perflyst.twire.model.ChannelInfo" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:308) at java.lang.Class.forName(Class.java:272) at android.os.Parcel.readParcelableCreator(Parcel.java:2275) at android.os.Parcel.readParcelable(Parcel.java:2239) at android.os.Parcel.readValue(Parcel.java:2146) at android.os.Parcel.readArrayMapInternal(Parcel.java:2479) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getString(BaseBundle.java:918) at android.content.Intent.getStringExtra(Intent.java:4960) at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1462) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1046) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4578) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4477) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:144) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3010) at android.os.Binder.execTransact(Binder.java:446) Suppressed: java.lang.ClassNotFoundException: com.perflyst.twire.model.ChannelInfo at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 18 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 04-30 18:15:43.603 10166-10166/com.perflyst.twire.debug E/SensorManager: sensor or listener is null
I could notice it through adb logcat
for another issue: after log in one time on Twire, and then log out, it seems to remember user information for the ChatManager component as I could still see my nickname in the logs.
twicht changed api i get preroll (videos) ads before starts stream
With a physical keyboard, the navigation bar has no business showing up when the chat box is focused. It covers the send button, among other things, making the lack of #12 more problematic.
However, the chat box seems to remain focused after tapping another UI element, even without intentionally focusing it at all, so it is still possible to type in chat in landscape without this issue occurring.
It would be nice if the app allowed users to join the chat of streamers who are not currently broadcasting.
an option to show stream runtime would be great.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.