Giter VIP home page Giter VIP logo

jellyfin-androidtv's Introduction

Jellyfin Android TV

Part of the Jellyfin Project


Logo banner

GPL 2.0 License Current Release Translation Status
Donate Feature Requests Chat on Matrix Join our Subreddit
Jellyfin on Google Play Jellyfin on Amazon Appstore Jellyfin on F-Droid
Download archive

Jellyfin Android TV is a Jellyfin client for Android TV, Nvidia Shield, and Amazon Fire TV devices. We welcome all contributions and pull requests! If you have a larger feature in mind please open an issue so we can discuss the implementation before you start.

Translating

Translations can be improved very easily from our Weblate instance. Look through the following graphic to see if your native language could use some work!

Detailed Translation Status

Build Process

Dependencies

  • Android Studio

Build

  1. Clone or download this repository

    git clone https://github.com/jellyfin/jellyfin-androidtv.git
    cd jellyfin-androidtv
  2. Open the project in Android Studio and run it from there or build an APK directly through Gradle:

    ./gradlew assembleDebug

    Add the Android SDK to your PATH environment variable or create the ANDROID_SDK_ROOT variable for this to work.

Deploy to device/emulator

./gradlew installDebug

You can also replace the "Debug" with "Release" to get an optimized release binary.

jellyfin-androidtv's People

Contributors

alanazar avatar andreasgb avatar anthonylavado avatar danielxb-ar avatar davidfair avatar djcand avatar dkanada avatar ebr11 avatar florianisme avatar hoanghuy309 avatar joshuaboniface avatar kucharczykl avatar linetrimmer avatar millallo avatar moritzleick avatar mrchip53 avatar mueslimak3r avatar newton181 avatar nextlooper42 avatar nielsvanvelzen avatar oatavandi avatar olavinto avatar queeup avatar renovate-bot avatar renovate[bot] avatar thornbill avatar tschwery avatar weblate avatar wolonggl avatar wwwesten avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jellyfin-androidtv's Issues

Android TV unable to log in

Hi,

I have upgraded jellyfin to the latest server version, 10.3.1, and also installed the latest android TV beta 5 version.

After installing and adding the jellyfin hostname, a new screen opens and ask's to select the user
I would like to log in. In this instance I have one user on my server that doesn't have a password configured. I select the user to log in, an error pops out; invalid user name and password.

This is happening since I update the apk to beta5.

I have tried with android mobile and web interface, both of them dont have this issue.

I also capture a screenshot and a video. If you guys want me to share the video or photo, please let me know.

Regards,

Unable to FF/RW in Live TV Android TV

Live TV works on both! Hooray! I cannot, however, FF/RW on either Android TV or Amazon (though I can't FF/RW in it at all). I did see a setting that had live tv in 'direct play' mode or something similarly named. I unchecked this option and live tv does not play at all. I've never used Emby before so I don't know if I should be able to FF/RW but that certainly would be desirable.

Live TV->Latest Recordings shows a 'Loading' message but nothing comes up (Android TV and Amazon APKs)

Going to Live TV->Latest Recordings shows a 'Loading' message but nothing comes up even after waiting a terrible long time. I see this in the logs:

[2019-01-11 23:53:35.726 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/LiveTv/Recordings?Fields=Overview%2CPrimaryImageAspectRatio&UserId=f20538e1abdd403ca460e6a8fdcc4bef&Id=f20538e1abdd403ca460e6a8fdcc4bef&Limit=40&EnableImages=true&format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-11 23:53:35.769 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "43""ms". "http://192.168.0.25:8096/emby/LiveTv/Recordings?Fields=Overview%2CPrimaryImageAspectRatio&UserId=f20538e1abdd403ca460e6a8fdcc4bef&Id=f20538e1abdd403ca460e6a8fdcc4bef&Limit=40&EnableImages=true&format=json" "" [2019-01-11 23:53:36.009 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/LiveTv/Timers?format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-11 23:53:37.214 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "1205""ms (slow)". "http://192.168.0.25:8096/emby/LiveTv/Timers?format=json" ""

Android TV app not playing live tv

A few days ago I received an APK for Android TV WIP to test that the Premium checks were removed. I used that same install and I can indeed playback things from my library after the FFMPEG version switch. I did, however, run into a problem when trying to watch a live stream from my HD Homerun. The stream never started.

This is what I see in the logs:

[2019-01-07 22:51:37.866 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "118""ms". "http://192.168.0.25:8096/emby/LiveTv/Recordings?Fields=Overview%2CPrimaryImageAspectRatio&UserId=f20538e1abdd403ca460e6a8fdcc4bef&Id=f20538e1abdd403ca460e6a8fdcc4bef&Limit=40&EnableImages=true&ImageTypeLimit=1&format=json" "" [2019-01-07 22:51:38.156 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/769cee9210c1d83bdaa07ec9ef317826/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=ff71a8a6980194e51585c9ec07097cbd". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:38.158 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "2""ms". "http://192.168.0.25:8096/emby/Items/769cee9210c1d83bdaa07ec9ef317826/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=ff71a8a6980194e51585c9ec07097cbd" "" [2019-01-07 22:51:38.555 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/bc9938d328e33dba20571a0159494f39/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=bc66624f2b01fa30c091b7a5ca949722". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:38.556 +00:00] [INF] HttpClientManager "GET": "https://s3.amazonaws.com/schedulesdirect/assets/p15525607_st_v8_aa.jpg" [2019-01-07 22:51:38.571 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/49c7cc7b27a1181d9e4415c4c64f4e3a/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=0aacc408eb648043613cd37e87e8c455". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:38.572 +00:00] [INF] HttpClientManager "GET": "https://s3.amazonaws.com/schedulesdirect/assets/p208539_b_v8_ac.jpg" [2019-01-07 22:51:38.582 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/657f5569b838226e7f5bce91073b2e59/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=f049328330038b91755edb3fe7baec98". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:38.583 +00:00] [INF] HttpClientManager "GET": "https://s3.amazonaws.com/schedulesdirect/assets/p12133555_b_v8_aa.jpg" [2019-01-07 22:51:38.594 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/8f3bf19809b84f96aa9f6acc3c81ed53/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=841456610384abd5e47b6e699d8aca87". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:38.595 +00:00] [INF] HttpClientManager "GET": "https://s3.amazonaws.com/schedulesdirect/assets/p184111_b_v8_aa.jpg" [2019-01-07 22:51:39.222 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "640""ms". "http://192.168.0.25:8096/emby/Items/657f5569b838226e7f5bce91073b2e59/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=f049328330038b91755edb3fe7baec98" "" [2019-01-07 22:51:39.308 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/dd23cdd5292384304007a5b4084750e0/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=bc66624f2b01fa30c091b7a5ca949722". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:39.309 +00:00] [INF] HttpClientManager "GET": "https://s3.amazonaws.com/schedulesdirect/assets/p15525607_st_v8_aa.jpg" [2019-01-07 22:51:40.131 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "1559""ms (slow)". "http://192.168.0.25:8096/emby/Items/49c7cc7b27a1181d9e4415c4c64f4e3a/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=0aacc408eb648043613cd37e87e8c455" "" [2019-01-07 22:51:40.166 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "1611""ms (slow)". "http://192.168.0.25:8096/emby/Items/bc9938d328e33dba20571a0159494f39/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=bc66624f2b01fa30c091b7a5ca949722" "" [2019-01-07 22:51:40.215 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/8d9331e90f8db83e647f7185c79fab85/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=98b55e3e31d3b2f402faca11fcabc48a". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:40.218 +00:00] [INF] HttpClientManager "GET": "https://s3.amazonaws.com/schedulesdirect/assets/p184577_b_v8_aa.jpg" [2019-01-07 22:51:40.240 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "1646""ms (slow)". "http://192.168.0.25:8096/emby/Items/8f3bf19809b84f96aa9f6acc3c81ed53/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=841456610384abd5e47b6e699d8aca87" "" [2019-01-07 22:51:40.732 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "1424""ms (slow)". "http://192.168.0.25:8096/emby/Items/dd23cdd5292384304007a5b4084750e0/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=bc66624f2b01fa30c091b7a5ca949722" "" [2019-01-07 22:51:41.833 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "1617""ms (slow)". "http://192.168.0.25:8096/emby/Items/8d9331e90f8db83e647f7185c79fab85/Images/Primary?EnableImageEnhancers=true&MaxHeight=280&Tag=98b55e3e31d3b2f402faca11fcabc48a" "" [2019-01-07 22:51:47.402 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Users/f20538e1abdd403ca460e6a8fdcc4bef/Items/83c6121ebaf37d2d2016174cbb922231?format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:47.405 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "3""ms". "http://192.168.0.25:8096/emby/Users/f20538e1abdd403ca460e6a8fdcc4bef/Items/83c6121ebaf37d2d2016174cbb922231?format=json" "" [2019-01-07 22:51:47.632 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/83c6121ebaf37d2d2016174cbb922231/Images/Primary?EnableImageEnhancers=true&MaxHeight=600&Tag=9cc6f3637f309cb41ee1e0799bc55d08". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:47.682 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "50""ms". "http://192.168.0.25:8096/emby/Items/83c6121ebaf37d2d2016174cbb922231/Images/Primary?EnableImageEnhancers=true&MaxHeight=600&Tag=9cc6f3637f309cb41ee1e0799bc55d08" "" [2019-01-07 22:51:49.986 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Users/f20538e1abdd403ca460e6a8fdcc4bef/Items/ca79d630766063b60d8f4c15751c26d8?format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:49.991 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "5""ms". "http://192.168.0.25:8096/emby/Users/f20538e1abdd403ca460e6a8fdcc4bef/Items/ca79d630766063b60d8f4c15751c26d8?format=json" "" [2019-01-07 22:51:50.172 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/LiveTv/Channels/ca79d630766063b60d8f4c15751c26d8?userId=f20538e1abdd403ca460e6a8fdcc4bef&format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:50.177 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "5""ms". "http://192.168.0.25:8096/emby/LiveTv/Channels/ca79d630766063b60d8f4c15751c26d8?userId=f20538e1abdd403ca460e6a8fdcc4bef&format=json" "" [2019-01-07 22:51:50.190 +00:00] [INF] "HTTP GET" "http://192.168.0.25:8096/emby/Items/ca79d630766063b60d8f4c15751c26d8/PlaybackInfo?UserId=f20538e1abdd403ca460e6a8fdcc4bef&format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:50.192 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "2""ms". "http://192.168.0.25:8096/emby/Items/ca79d630766063b60d8f4c15751c26d8/PlaybackInfo?UserId=f20538e1abdd403ca460e6a8fdcc4bef&format=json" "" [2019-01-07 22:51:50.322 +00:00] [INF] "HTTP POST" "http://192.168.0.25:8096/emby/LiveStreams/Open?format=json". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:50.325 +00:00] [INF] Opening channel stream from "Emby", external channel Id: "hdhr_3.1" [2019-01-07 22:51:50.325 +00:00] [INF] Streaming Channel hdhr_3.1 [2019-01-07 22:51:50.325 +00:00] [INF] GetChannelStream: channel id: "hdhr_3.1". stream id: "native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82" profile: "native" [2019-01-07 22:51:50.325 +00:00] [INF] Opening SharedHttpStream Live stream from "http://192.168.0.44:5004/auto/v3.1" [2019-01-07 22:51:50.325 +00:00] [INF] HttpClientManager "GET": "http://192.168.0.44:5004/auto/v3.1" [2019-01-07 22:51:50.591 +00:00] [INF] Beginning "SharedHttpStream" stream to "/config/transcoding-temp/bba5b0cee053461e94c028978bcccd63.ts" [2019-01-07 22:51:50.591 +00:00] [INF] Live stream opened after 266.0642ms [2019-01-07 22:51:50.594 +00:00] [INF] Returning mediasource streamId "native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82", mediaSource.Id "native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82", mediaSource.LiveStreamId null [2019-01-07 22:51:50.595 +00:00] [INF] Live tv media info probe took "0.0005131" seconds [2019-01-07 22:51:50.595 +00:00] [INF] Live stream opened: {"Protocol":"Http","Id":"native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82","Path":"http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts","Type":"Default","Container":"mpegts","IsRemote":false,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"MediaStreams":[{"Codec":"mpeg2video","ColorTransfer":"bt709","ColorPrimaries":"bt709","ColorSpace":"bt709","TimeBase":"1/90000","CodecTimeBase":"1001/60000","VideoRange":"SDR","DisplayTitle":"720I MPEG2VIDEO","IsInterlaced":true,"BitRate":8000000,"RefFrames":1,"IsDefault":false,"IsForced":false,"Height":720,"Width":1280,"AverageFrameRate":59.94006,"RealFrameRate":59.94006,"Profile":"Main","Type":"Video","AspectRatio":"16:9","Index":-1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"PixelFormat":"yuv420p","Level":4,"IsAnamorphic":false},{"Codec":"ac3","CodecTag":"AC-3","TimeBase":"1/90000","CodecTimeBase":"1/48000","DisplayTitle":"Dolby Digital stereo","IsInterlaced":false,"ChannelLayout":"stereo","BitRate":192000,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Type":"Audio","Index":-1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0}],"Formats":[],"Bitrate":8192000,"RequiredHttpHeaders":{},"AnalyzeDurationMs":3000} [2019-01-07 22:51:50.595 +00:00] [INF] User policy for "dinki". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2019-01-07 22:51:50.595 +00:00] [INF] RemoteClientBitrateLimit: 1000000, RemoteIp: "192.168.0.6", IsInLocalNetwork: True [2019-01-07 22:51:50.595 +00:00] [INF] Profile: "Android", Path: "http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts", isEligibleForDirectPlay: True, isEligibleForDirectStream: True [2019-01-07 22:51:50.595 +00:00] [INF] Profile: "Android", No direct play profiles found for Path: "http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts" [2019-01-07 22:51:50.595 +00:00] [INF] RemoteClientBitrateLimit: 1000000, RemoteIp: "192.168.0.6", IsInLocalNetwork: True [2019-01-07 22:51:50.596 +00:00] [INF] Profile: "Android", Path: "http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts", isEligibleForDirectPlay: True, isEligibleForDirectStream: True [2019-01-07 22:51:50.596 +00:00] [INF] Profile: "Android", No direct play profiles found for Path: "http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts" [2019-01-07 22:51:50.596 +00:00] [INF] HTTP Response 200 to "192.168.0.6". Time: "274""ms". "http://192.168.0.25:8096/emby/LiveStreams/Open?format=json" "" [2019-01-07 22:51:50.669 +00:00] [INF] HTTP "GET" "http://192.168.0.25:8096/emby/videos/ca79d630766063b60d8f4c15751c26d8/stream.mkv?DeviceId=dde51e1926ad87cf&MediaSourceId=native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82&VideoCodec=h264&AudioCodec=aac&AudioStreamIndex=-1&VideoBitrate=69944993&AudioBitrate=128000&MaxAudioChannels=2&Level=51&Profile=high&PlaySessionId=28ab4b3b9cd94a669c38f925e458c4aa&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_797bf9f08cf7121fd313bb4cfbd5416a_b34b06d72db8079ba572eb86d4395e82&CopyTimestamps=true&ForceLiveStream=false". "User-Agent=EMVideoView 2.5.6 (25600) / Android 8.0.0 / MIBOX3, Accept-Encoding=identity, Host=192.168.0.25:8096, Connection=Keep-Alive" [2019-01-07 22:51:50.671 +00:00] [INF] ffmpeg -analyzeduration 3000000 -fflags +igndts -f mpegts -i "http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts" -sn -codec:v:0 libx264 -force_key_frames "expr:gte(t,n_forced*5)" -vf "yadif=0:-1:0,scale=trunc(min(max(iw\,ih*dar)\,1920)/2)*2:trunc(ow/dar/2)*2" -pix_fmt yuv420p -preset superfast -crf 23 -maxrate 8000000 -bufsize 16000000 -profile:v high -level 4.1 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -flags -global_header -vsync cfr -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 aac -strict experimental -ac 2 -ab 128000 -y "/config/transcoding-temp/58d2e99365cec2d84a162345c4c1adcc.mkv" [2019-01-07 22:51:50.698 +00:00] [INF] "HTTP GET" "http://127.0.0.1:8096/LiveTv/LiveStreamFiles/bba5b0cee053461e94c028978bcccd63/stream.ts". UserAgent: "Lavf/58.12.100" [2019-01-07 22:51:50.716 +00:00] [INF] "HTTP POST" "http://192.168.0.25:8096/emby/Sessions/Playing". UserAgent: "Dalvik/2.1.0 (Linux; U; Android 8.0.0; MIBOX3 Build/OPR6.170623.013)" [2019-01-07 22:51:50.721 +00:00] [INF] HTTP Response 204 to "192.168.0.6". Time: "5""ms". "http://192.168.0.25:8096/emby/Sessions/Playing" "" [2019-01-07 22:51:54.053 +00:00] [INF] FFMpeg exited with code 1 [2019-01-07 22:51:54.079 +00:00] [ERR] Error this.ProcessRequest(context)(Exception while writing error to the response)

Several other members confirm that Live TV is not working for them either. Outside of this, the app appears to be fully functional.

Subtitle default option per user

The option to setup a default subtitle option for all movies/tv-shows is not present like in the android app or in browser. This means that I have to enable for each movie and episode by episode.

Movie / TVShow Trailer link

Not sure if this is an issue or just an enhancement, in the beta 4 apk the option to watch the trailer is not present for Movies or TV-Shows like in the android app or in browser.

Video with MP2 has no sound

Same video plays ok (normal sound) in VLC, Plex, etc.
Complete codec is:
Media Info
Video
Title 1080P H264
Codec H264
AVC Yes
Profile High
Level 42
Resolution 1920x1080
Aspect ratio 16:9
Interlaced No
Framerate 50
Bitrate 6612 kbps
Bit depth 8 bit
Pixel format yuv420p
Ref frames 1
NAL 4
Audio
TitleEng MP2 stereo Default
Languageeng
Codec MP2
Layout stereo
Channels 2 ch
Bitrate 256 kbps
Sample rate 48000 Hz
Default Yes
Container mkv

Invalid Password/Login

Hello,
Whenever I am trying to connect through my Android TV the authentication shows as Login/Password as invalid. But it works absolutely fine with the normal Android software running on my phone.

This is the log from the server side:
Authentication request for upal has been denied.

Movie rollback

I try to use Jellyfin and remove from Emby, but at each movie, after a while, it goes back to the beginning and when I advance in the video manually the volume is loud for a few seconds.

I use the Xiaomi Mi Box 3, no problem with Emby app and Kodi

Video playback never loads with Amazon Fire TV

I recently set up a Jellyfin server and installed the app on my Fire TV Stick. I can connect just fine and play videos through the browser, and I can log in and browse through the app. However, playback won't work through the app. I select the video, and a blue spinner shows up and the media just never loads. I'm not sure if this is a bug or PEBKAC, but I'm not really sure where to start and I was hoping someone here could help me out.

Jellyfin app version: Beta 4 amazon release
Server version: 10.2.2
I use Apache as a reverse proxy and letsencrypt for TLS. I can also pastebin logs if needed.

Movie poster size and text field with year

In the browser interface the ratio between an episode thumb and a movie poster is pretty similar but in the android tv app the movie is much more smaller and in a big tv is even more noticeable.
I guess giving a size is very subjective but I think at least it should be close to the episode thumb/backdrop or maybe adding some configuration setting: small/medium/large .. etc.
About the text field I think adding the year to the side of the movie rating it would be a good idea.
Browser interface: [episode width is 1.5 of a movie poster width]
image
Android TV: [episode width is 2.5 of a movie poster width]
IMG_20190312_135142

Some media information showing 'null'

I am seeing some 'null' values in some of the program descriptions that I do not see in the web interface. I'm uncertain how to describe this other than to type it out and perhaps someone can identify what variable is not being populated. Here's and example:

CBS Evening News with Jeff Glor
null - 5:30PM-6:00PM
The latest world and national news

Unable to FF/RW with Amazon APK

I am not able to FF/RW with Amazon. When pressing left/right on remote I get the information pop up thing at the bottom of the screen that shows media info, remaining time, etc but it does not FF/RW.

Unable to play video with subtitles .ass format

I have the Jellyfin Android TV Beta 5 client installed in a Xiaomi Mi TV Box S, I have problems when playing certain H265 content, at first it is able to play it without transcoding, but I have some chapters of a series that is not able to play them.

When you press play, it says that it is not capable of playing, which implies that it plays directly, but it does not transcode either, so the video is caught and the sound is played and after a few seconds it switches to the next chapters automatically.

Mediainfo of an H265 file that is not produced

General
Unique ID                                : 311077928508893737886846367393499813895 (0xEA076E0471E1AC4D5A18E0753ABF9807)
Complete name                            : /mnt/Series/One Piece (1999)/Temporada 20/S20E01 - El mundo se sorprende. ¡Surge el quinto Emperador del Mar!.mkv
Format                                   : Matroska
Format version                           : Version 4 / Version 2
File size                                : 198 MiB
Duration                                 : 23 min 50 s
Overall bit rate                         : 1 159 kb/s
Encoded date                             : UTC 2019-03-31 19:12:15
Writing application                      : mkvmerge v32.0.0 ('Astral Progressions') 64-bit
Writing library                          : libebml v1.3.7 + libmatroska v1.5.0

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : [email protected]@Main
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 23 min 50 s
Bit rate                                 : 1 068 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Bits/(Pixel*Frame)                       : 0.021
Stream size                              : 182 MiB (92%)
Default                                  : Yes
Forced                                   : No

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : A_AAC
Duration                                 : 23 min 50 s
Bit rate                                 : 89.5 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 spf)
Compression mode                         : Lossy
Delay relative to video                  : 22 ms
Stream size                              : 15.3 MiB (8%)
Title                                    : Japanese Stereo
Language                                 : Japanese
Default                                  : Yes
Forced                                   : No

Menu
00:00:10.510                             : en:Opening Theme
00:02:40.661                             : en:Part A
00:15:18.252                             : en:Part B
00:23:15.687                             : en:Next Episode Preview

Mediainfo of an H265 file that if it is produced

General
Unique ID                                : 269545154367288098883274608464355098215 (0xCAC882278DC9C5BC7A18C405515F7E67)
Complete name                            : /mnt/Series/El Mentalista (2008)/Temporada 01/S01E01 - Piloto.mkv
Format                                   : Matroska
Format version                           : Version 4 / Version 2
File size                                : 1 022 MiB
Duration                                 : 45 min 9 s
Overall bit rate                         : 3 165 kb/s
Encoded date                             : UTC 2019-02-23 21:09:39
Writing application                      : mkvmerge v30.1.0 ('Forever And More') 64-bit
Writing library                          : libebml v1.3.6 + libmatroska v1.4.9

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L4@Main
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 45 min 8 s
Bit rate                                 : 2 460 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.049
Stream size                              : 794 MiB (78%)
Writing library                          : x265 2.7+1-2aa737a99f51:[Windows][GCC 8.0.1][64 bit] 10bit
Encoding settings                        : cpuid=1173503 / frame-threads=3 / numa-pools=12 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / interlace=0 / total-frames=64929 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=4 / no-allow-non-conformance / no-repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=70 / lookahead-slices=4 / scenecut=40 / radl=0 / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=3 / limit-refs=3 / limit-modes / me=3 / subme=5 / merange=57 / temporal-mvp / weightp / weightb / no-analyze-src-pics / deblock=-1:-1 / sao / no-sao-non-deblock / rd=4 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=1.70 / psy-rdoq=1.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=21.0 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / ipratio=1.40 / pbratio=1.30 / aq-mode=3 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=0 / overscan=0 / videoformat=5 / range=0 / colorprim=2 / transfer=2 / colormatrix=2 / chromaloc=0 / display-window=0 / max-cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.00 / no-opt-cu-delta-qp / aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1
Default                                  : Yes
Forced                                   : No

Audio #1
ID                                       : 2
Format                                   : AC-3
Format/Info                              : Audio Coding 3
Mode extension                           : CM (complete main)
Format settings, Endianness              : Big
Codec ID                                 : A_AC3
Duration                                 : 45 min 4 s
Bit rate mode                            : Constant
Bit rate                                 : 320 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 31.250 FPS (1536 spf)
Bit depth                                : 16 bits
Compression mode                         : Lossy
Stream size                              : 103 MiB (10%)
Language                                 : Spanish
Default                                  : Yes
Forced                                   : No

Audio #2
ID                                       : 3
Format                                   : AC-3
Format/Info                              : Audio Coding 3
Mode extension                           : CM (complete main)
Format settings, Endianness              : Big
Codec ID                                 : A_AC3
Duration                                 : 45 min 9 s
Bit rate mode                            : Constant
Bit rate                                 : 384 kb/s
Channel(s)                               : 6 channels
Channel positions                        : Front: L C R, Side: L R, LFE
Sampling rate                            : 48.0 kHz
Frame rate                               : 31.250 FPS (1536 spf)
Bit depth                                : 16 bits
Compression mode                         : Lossy
Stream size                              : 124 MiB (12%)
Language                                 : English
Default                                  : No
Forced                                   : No

Menu
00:00:00.000                             : en:Chapter 1
00:07:30.742                             : en:Chapter 2
00:16:31.824                             : en:Chapter 3
00:26:18.744                             : en:Chapter 4
00:32:39.666                             : en:Chapter 5
00:41:40.511                             : en:Chapter 6

transcode when webui and kodi with embycon does not

at first I noticed the server was transcoding on a normal mp4 file. I checked the difference of the two files, the only difference is the original audio codec mp4a-40-2 and the new codec id A-AAC-2. They are both AAC LC format, so it is not necessary. Then I noticed it also transcodes codec A-AAC-2 and 10-2, I have no idea why because they are all AAC.
I tried webui and embycon and they do not trigger transcoding for all these files. It seems the reason for transcoding is mainly audio, is there any way that I get around it ?

Google Android TV using incorrect icon

The icon being used for JF on Android TV appears to be a banner when it should be just the fin/triangle icon. Here's what it looks like on my Xiaomi Mibox 3:

image

and this is how Emby's icon looks:
image

Live TV issues (TV Guide and playback)

I'm using the amazon beta 3 version on a Fire TV stick. TV Guide never displays, just shows "Loading...". Weirdly, TV Guide works fine on the beta 6 android client but that version is basically unusable navigation-wise on a Fire TV stick. Seemingly no explanation of what the issue is in the logs.

Also, when tuning to channels, for about the first minute it plays a few seconds then loops / jumps back to the start. That does seem to sort itself out after a while but obviously hardly ideal. Again, nothing in the logs to indicate what's going on, otherwise I'd post a snippet...

Add ability to filter content by MPAA rating

We need the ability to go into a list of content (movies, TV), and be able to sort it by MPAA rating. I want to be able to look at my giant list of movies, but only see things that are rated G or PG.

Android TV fails to play certain formats

Whenever I try to play any media on an Nvidia Shield it says "Failed to load content"

Server errors when trying to play:

Feb 19 14:21:04 jelly jellyfin[17612]: [14:21:04] [ERR] AcceptWebSocketAsync error
    Feb 19 14:21:04 jelly jellyfin[17612]: SocketHttpListener.WebSocketException: net_WebSockets_AcceptUnsupportedWebSocketVersion
    Feb 19 14:21:04 jelly jellyfin[17612]:    at SocketHttpListener.Net.WebSockets.HttpWebSocket.ValidateWebSocketHeaders(HttpListenerContext context) in /jellyfin/SocketHttpListener/Net/WebSockets/HttpWebSocket.cs:line 155
    Feb 19 14:21:04 jelly jellyfin[17612]:    at SocketHttpListener.Net.WebSockets.HttpWebSocket.AcceptWebSocketAsyncCore(HttpListenerContext context, String subProtocol, Int32 receiveBufferSize, TimeSpan keepAliveInterval, Nullable`1 internalBuffer) in /jellyfin/SocketHttpListener/Net/WebSockets/HttpWebSocket.Managed.cs:line 23
    Feb 19 14:21:04 jelly jellyfin[17612]:    at Jellyfin.Server.SocketSharp.WebSocketSharpListener.ProcessWebSocketRequest(HttpListenerContext ctx) in /jellyfin/Jellyfin.Server/SocketSharp/WebSocketSharpListener.cs:line 151
    Feb 19 14:21:24 jelly jellyfin[17612]: [14:21:24] [ERR] Error processing request
    Feb 19 14:21:24 jelly jellyfin[17612]: MediaBrowser.Common.Extensions.ResourceNotFoundException: Nickelodeon does not have an image of type Primary
    Feb 19 14:21:24 jelly jellyfin[17612]:    at MediaBrowser.Api.Images.ImageService.GetImage(ImageRequest request, Guid itemId, BaseItem item, Boolean isHeadRequest) in /jellyfin/MediaBrowser.Api/Images/ImageService.cs:line 572
    Feb 19 14:21:24 jelly jellyfin[17612]:    at Emby.Server.Implementations.Services.ServiceExecGeneral.Execute(Type serviceType, IRequest request, Object instance, Object requestDto, String requestName) in /jellyfin/Emby.Server.Implementations/Services/ServiceExec.cs:line 88
    Feb 19 14:21:24 jelly jellyfin[17612]:    at Emby.Server.Implementations.Services.ServiceController.Execute(HttpListenerHost appHost, Object requestDto, IRequest req) in /jellyfin/Emby.Server.Implementations/Services/ServiceController.cs:line 177
    Feb 19 14:21:24 jelly jellyfin[17612]:    at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, ILogger logger, String operationName, CancellationToken cancellationToken) in /jellyfin/Emby.Server.Implementations/Services/ServiceHandler.cs:line 95
    Feb 19 14:21:24 jelly jellyfin[17612]:    at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IHttpRequest httpReq, String urlString, String host, String localPath, CancellationToken cancellationToken) in /jellyfin/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs:line 608
    Feb 19 14:21:27 jelly jellyfin[17612]: [14:21:27] [ERR] Error this.ProcessRequest(context)(Exception while writing error to the response)
    Feb 19 14:21:27 jelly jellyfin[17612]: System.InvalidOperationException: Operation is not valid due to the current state of the object.
    Feb 19 14:21:27 jelly jellyfin[17612]:    at SocketHttpListener.Net.HttpListenerResponse.set_ContentLength64(Int64 value) in /jellyfin/SocketHttpListener/Net/HttpListenerResponse.cs:line 89
    Feb 19 14:21:27 jelly jellyfin[17612]:    at Emby.Server.Implementations.HttpServer.HttpListenerHost.Write(IResponse response, String text) in /jellyfin/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs:line 688
    Feb 19 14:21:27 jelly jellyfin[17612]:    at Emby.Server.Implementations.HttpServer.HttpListenerHost.ErrorHandler(Exception ex, IRequest httpReq, Boolean logExceptionStackTrace, Boolean logExceptionMessage) in /jellyfin/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs:line 229`

Server info

  • OS: Debian 9
  • Jellyfin Version: 10.2.0 from PPA

Client info

  • Nvidia Shield
  • jellyfin-androidtv_google-release_beta3.apk

Addition info
Streaming works with the regular Android app on the Shield.
According to other users, it only seems to be a problem on Debian servers (works with Windows server)

does not support external subtitles while using external player

external srts cannot be found by external players, I tried kodi and mx player. If I set subtitles option to always play subtitles, the external player will fail to load and the internal player will trigger a transcode to embedded the subtitle into the video. Embycon with kodi works with external subtitles well and not transcoding and I dont know why. I attached my log, at [09:03:32] I played a video with embycon and then I switched to jellyfin client and played the same video and another video with external player, both failed to load.
jellyfin.log.txt
Edit: The videos I tested played without transcoding via internal or external player if I disable subtitles in subtitle option.

HEVC Support

I just started using Jellyfin looking for Plex alternatives and so far is working great the only caveat at the moment is that is not playing HEVC without transcoding (I have a Nvidia Shield).
Is this a known limitation or maybe something wrong with my video files or setup?

Pause screen with no gui

As suggested on Reddit here's an issue.

When pausing playback there should be an option to hide the gui. By this the still image can be seen without obstructions to read subtitles, that are part of the picture, or other things shown.

This can work the same way as in the FireTv Prime Video App: button play/pause pauses the playback and brings up the gui as normal. Now pressing down or back (not sure atm) hides the gui an the full screen picture is shown.

Amazon Fire TV 4k beta1 release not prompted for port number

Just installed the amazon beta1 release on grandma's Fire TV 4K stick hoping she could connect to our jellyfin server but it doesn't prompt for port number anywhere. I tried adding the custom port number at the end of our address as well (media.domain.com:80) and it didn't connect that way either.

Unable to use voice search with Nvidia Shield TV.

When using the search functionality, I get prompted to allow Jellyfin to record audio. After allowing this, I'm not able to use the voice search functionality. Tried the big search button as well as the small magnifying glass button at the top of a section, both don't work with voice search using the nvidia shield remote.

Play Next and Channel section

At the moment the Android TV app doesn't show up in the Play Next section or available in the list of apps to include in the Channel section. This would be nice to have in future versions.

Program Guide takes long time to load

Program guide takes an awful long time to load on my Amazon Fire Stick Gen 1 over wifi and it takes a noticeable amount of time to load on my Android TV. This may be something to look at the future with some sorts of optimizations or perhaps a smaller query for data based on less time. I've got about 30 channels. I can only imagine what it would be like for someone with many more than this.

Support Leanback on any android box

Hi there.

I remember using Emby for Android TV on my Android TV Box and there was no Leanback because my android box is not "certified" by Google. Plex android app has a leanback mode setting, you just have to enable it. VLC media player also has that option.

It's really important if you guys create an option called "Enable Leanback theme" inside Jellyfin app so that we don't need a Fire TV or a Mi Box or an Nvidia Shield device.

App won't play anything

Some form of issue with the version of ffmpeg in the jellyfin docker.

Resovled via ffmpeg 4.x usage.

This issue exists for reference

I cant compile

With my version of Android-Studio (3.2.1) and (3.3) i can't build APK.
what version of Gradle is use ?

Configuration 'amazonCompile' is obsolete and has been replaced with 'amazonImplementation' and 'amazonApi'.
Configuration 'googleCompile' is obsolete and has been replaced with 'googleImplementation' and 'googleApi'.
Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018.

Android TV App doesn't support HDR

The Android TV app on my Shield TV will direct play my 4k movies, but doesn't enable HDR.
The same movie will enable HDR on the emby app.

[bug] Automatic refresh rate always set to 1080p

When playing video files the resolution is always set to 1080p no matter which is the file's resolution.

I'm using Debian buster with the latest jellyfin server from the repo and the jellyfin app for Android TV compiled from source (commit #54ba26c).

Devices used:

A) NVIDIA Shield and a 4k screen.
B) Mi Box 3 and a 1080p screen.

Steps to reproduce:

  1. Enable autoframerate option in settings.
  2. Play a video file.

Current behaviour:

  • Scenario A): When playing a 2160p24 file, the screen resolution is set to 1080p24.
  • Scenario B): When playing a 480p25 file, the screen resolution is set to 1080p25.

Expected behaviour:

  • Scenario A): When playing a 2160p24 file, the screen resolution should be set to 2160p24.
  • Scenario B): When playing a 480p25 file, the screen resolution should be set to 480p25.

Video speeds up and slows down breaking the sense of motion

TV is a Philips 43pus7303.

The motion runs at a normal pace and then jumps so that the frames aren't consistently delivered. It interacts very badly with the TVs inbuilt motion smoothing to produce a very unpleasant image that does not give you the sense of motion.

Present in beta 1 and beta 3 builds for androidTV google version.

Send Logs does nothing

The "Send Logs" option in the app does nothing since we removed the LogReporter in #9. We should evaluate if there is a way to do this without depending on a centralized service. If not the UI for this should be removed.

Quality selector - transcode option

The original Emby TV apps had the ability to change the quality (resolution, bit rate). Completely missing from this Android TV app (present on the mobile Android app).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.