From d715fe48b6b441eaf1b542596a20328798b4e329 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 04:08:08 +0800 Subject: [PATCH 01/27] get playurl via api for transcoded play --- .../sifacai/vlcjellyfin/Utils/JfClient.java | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 005cad5..5f2c85d 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -200,8 +200,46 @@ public class JfClient { * @return */ public static String GetPlayUrl(String itemid) { - String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - return playurl; + String playbackurl = config.getJellyfinUrl() + "/Items/" + itemid + "/PlaybackInfo?UserId=" + UserId + "&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + // 可以修改各种具体参数如比特率,允许的编码方式,字幕烧录方式等 + // 此处为 仅使用 h264 强制烧录字幕 + String deviceProfile = "{\"DeviceProfile\":{\"MaxStreamingBitrate\":120000000,\"MaxStaticBitrate\":100000000,\"MusicStreamingTranscodingBitrate\":384000,\"DirectPlayProfiles\":[{\"Container\":\"mp4,m4v\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"mov\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"mp3\",\"Type\":\"Audio\"},{\"Container\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4a\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4b\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"flac\",\"Type\":\"Audio\"},{\"Container\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"wav\",\"Type\":\"Audio\"},{\"Container\":\"ogg\",\"Type\":\"Audio\"}],\"TranscodingProfiles\":[{\"Container\":\"ts\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"ts\",\"Type\":\"Video\",\"AudioCodec\":\"aac,mp3\",\"VideoCodec\":\"h264\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true}],\"ContainerProfiles\":[],\"CodecProfiles\":[{\"Type\":\"Video\",\"Codec\":\"h264\",\"Conditions\":[{\"Condition\":\"NotEquals\",\"Property\":\"IsAnamorphic\",\"Value\":\"true\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoProfile\",\"Value\":\"high|main|baseline|constrained baseline|high 10\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoRangeType\",\"Value\":\"SDR\",\"IsRequired\":false},{\"Condition\":\"LessThanEqual\",\"Property\":\"VideoLevel\",\"Value\":\"52\",\"IsRequired\":false},{\"Condition\":\"NotEquals\",\"Property\":\"IsInterlaced\",\"Value\":\"true\",\"IsRequired\":false}]}],\"SubtitleProfiles\":[{\"Format\":\"vtt\",\"Method\":\"Embed\"},{\"Format\":\"ass\",\"Method\":\"Embed\"},{\"Format\":\"ssa\",\"Method\":\"Embed\"}],\"ResponseProfiles\":[{\"Type\":\"Video\",\"Container\":\"m4v\",\"MimeType\":\"video/mp4\"}]}}"; + + SendPost(url, deviceProfile, new JJCallBack() { + @Override + public void onSuccess(String str) { + try { + // 使用Gson解析JSON数据 + Gson gson = new Gson(); + JsonObject jsonObject = gson.fromJson(str, JsonObject.class); + JsonArray mediaSources = jsonObject.getAsJsonArray("MediaSources"); + + // 检查MediaSources是否为空 + if (mediaSources != null && mediaSources.size() > 0) { + JsonObject mediaSource = mediaSources.get(0).getAsJsonObject(); + String transcodingUrl = mediaSource.get("TranscodingUrl").getAsString(); + + // 检查TranscodingUrl是否为空 + if (transcodingUrl != null && !transcodingUrl.isEmpty()) { + String playurl = config.getJellyfinUrl() + transcodingUrl; + // 返回TranscodingUrl + return playurl; + } else { + // 返回默认的URL + String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + return playurl; + } + } else { + String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + return playurl; + } + } catch (Exception e) { + err.onError("寻找播放地址失败:" + e.getMessage() + "\n" + str) + String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + return playurl; + } + } + }, err); } public static void SearchByTerm(String term, int limit, JJCallBack scb, JJCallBack errcb) { From e5fc57b911931b60a91e8d453869f14127c5f229 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 10:14:23 +0800 Subject: [PATCH 02/27] Create android.yml --- .github/workflows/android.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/android.yml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..64e865f --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,31 @@ +name: Android CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: my-artifact + path: app/build/outputs/apk/*.apk From 5dec3cd941e68d172cc5969d44a8b4db183675c8 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 10:18:11 +0800 Subject: [PATCH 03/27] typo fix --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 5f2c85d..7d14866 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -234,7 +234,7 @@ public class JfClient { return playurl; } } catch (Exception e) { - err.onError("寻找播放地址失败:" + e.getMessage() + "\n" + str) + err.onError("寻找播放地址失败:" + e.getMessage() + "\n" + str); String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; return playurl; } From 75cd9c9db6eab80b4d4e44e4af105b0c38981286 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 10:22:51 +0800 Subject: [PATCH 04/27] typo fix --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 7d14866..53edfa1 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -234,7 +234,6 @@ public class JfClient { return playurl; } } catch (Exception e) { - err.onError("寻找播放地址失败:" + e.getMessage() + "\n" + str); String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; return playurl; } From df66b8ad2cd6b6d44fcc0576cd8adb8e3e8812fb Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 10:35:54 +0800 Subject: [PATCH 05/27] fix code --- .../sifacai/vlcjellyfin/Utils/JfClient.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 53edfa1..aca35a1 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -204,11 +204,12 @@ public class JfClient { // 可以修改各种具体参数如比特率,允许的编码方式,字幕烧录方式等 // 此处为 仅使用 h264 强制烧录字幕 String deviceProfile = "{\"DeviceProfile\":{\"MaxStreamingBitrate\":120000000,\"MaxStaticBitrate\":100000000,\"MusicStreamingTranscodingBitrate\":384000,\"DirectPlayProfiles\":[{\"Container\":\"mp4,m4v\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"mov\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"mp3\",\"Type\":\"Audio\"},{\"Container\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4a\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4b\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"flac\",\"Type\":\"Audio\"},{\"Container\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"wav\",\"Type\":\"Audio\"},{\"Container\":\"ogg\",\"Type\":\"Audio\"}],\"TranscodingProfiles\":[{\"Container\":\"ts\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"ts\",\"Type\":\"Video\",\"AudioCodec\":\"aac,mp3\",\"VideoCodec\":\"h264\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true}],\"ContainerProfiles\":[],\"CodecProfiles\":[{\"Type\":\"Video\",\"Codec\":\"h264\",\"Conditions\":[{\"Condition\":\"NotEquals\",\"Property\":\"IsAnamorphic\",\"Value\":\"true\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoProfile\",\"Value\":\"high|main|baseline|constrained baseline|high 10\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoRangeType\",\"Value\":\"SDR\",\"IsRequired\":false},{\"Condition\":\"LessThanEqual\",\"Property\":\"VideoLevel\",\"Value\":\"52\",\"IsRequired\":false},{\"Condition\":\"NotEquals\",\"Property\":\"IsInterlaced\",\"Value\":\"true\",\"IsRequired\":false}]}],\"SubtitleProfiles\":[{\"Format\":\"vtt\",\"Method\":\"Embed\"},{\"Format\":\"ass\",\"Method\":\"Embed\"},{\"Format\":\"ssa\",\"Method\":\"Embed\"}],\"ResponseProfiles\":[{\"Type\":\"Video\",\"Container\":\"m4v\",\"MimeType\":\"video/mp4\"}]}}"; - - SendPost(url, deviceProfile, new JJCallBack() { + String playurl = ""; // Declare the playurl variable + + SendPost(playbackurl, deviceProfile, new JJCallBack() { @Override public void onSuccess(String str) { - try { + try { // 使用Gson解析JSON数据 Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(str, JsonObject.class); @@ -221,25 +222,22 @@ public class JfClient { // 检查TranscodingUrl是否为空 if (transcodingUrl != null && !transcodingUrl.isEmpty()) { - String playurl = config.getJellyfinUrl() + transcodingUrl; - // 返回TranscodingUrl - return playurl; + playurl = config.getJellyfinUrl() + transcodingUrl; } else { - // 返回默认的URL - String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - return playurl; + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } } else { - String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - return playurl; + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } } catch (Exception e) { - String playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - return playurl; + err.onError("寻找播放地址失败:" + e.getMessage() + "\n" + str); + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + } } - } }, err); - } + + return playurl; // Return the playurl variable +} public static void SearchByTerm(String term, int limit, JJCallBack scb, JJCallBack errcb) { String BaseUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items?"; From fdbfd10d8447be1b62ebd9bd2360627fbbaa1897 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 10:46:12 +0800 Subject: [PATCH 06/27] don't use any error --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index aca35a1..55bcd4a 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -230,11 +230,10 @@ public class JfClient { playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } } catch (Exception e) { - err.onError("寻找播放地址失败:" + e.getMessage() + "\n" + str); playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } } - }, err); + }, null); return playurl; // Return the playurl variable } From e50210fd12e13fde998780d5c3fc87e8203e997c Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 11:00:56 +0800 Subject: [PATCH 07/27] move playurl fallback --- .../sifacai/vlcjellyfin/Utils/JfClient.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 55bcd4a..1596ef6 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -209,7 +209,7 @@ public class JfClient { SendPost(playbackurl, deviceProfile, new JJCallBack() { @Override public void onSuccess(String str) { - try { + try { // 使用Gson解析JSON数据 Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(str, JsonObject.class); @@ -219,22 +219,22 @@ public class JfClient { if (mediaSources != null && mediaSources.size() > 0) { JsonObject mediaSource = mediaSources.get(0).getAsJsonObject(); String transcodingUrl = mediaSource.get("TranscodingUrl").getAsString(); - // 检查TranscodingUrl是否为空 if (transcodingUrl != null && !transcodingUrl.isEmpty()) { playurl = config.getJellyfinUrl() + transcodingUrl; - } else { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - } - } else { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - } + } + } } catch (Exception e) { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + e.printStackTrace(); } } }, null); + // if playurl is still "", return config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + if (playurl == null || playurl.isEmpty()) { + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + } + return playurl; // Return the playurl variable } From eb9e4bd6e9b1a3894a9174ead8b3f543c846c4ac Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 11:00:56 +0800 Subject: [PATCH 08/27] move playurl fallback --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 1596ef6..5955614 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -227,7 +227,7 @@ public class JfClient { } catch (Exception e) { e.printStackTrace(); } - } + } }, null); // if playurl is still "", return config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; From 5432654d9feab6146d1164e2457e2c13245e04d5 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 11:09:13 +0800 Subject: [PATCH 09/27] upd --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 5955614..042ecd0 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -221,7 +221,7 @@ public class JfClient { String transcodingUrl = mediaSource.get("TranscodingUrl").getAsString(); // 检查TranscodingUrl是否为空 if (transcodingUrl != null && !transcodingUrl.isEmpty()) { - playurl = config.getJellyfinUrl() + transcodingUrl; + playurl = transcodingUrl; } } } catch (Exception e) { @@ -233,6 +233,8 @@ public class JfClient { // if playurl is still "", return config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; if (playurl == null || playurl.isEmpty()) { playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + } else { + playurl = config.getJellyfinUrl() + playurl; } return playurl; // Return the playurl variable From aacca5e67a36384909c52376666fcda3e4b5c267 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 11:35:42 +0800 Subject: [PATCH 10/27] fix --- .../org/sifacai/vlcjellyfin/Utils/JfClient.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 042ecd0..b134519 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -204,7 +204,6 @@ public class JfClient { // 可以修改各种具体参数如比特率,允许的编码方式,字幕烧录方式等 // 此处为 仅使用 h264 强制烧录字幕 String deviceProfile = "{\"DeviceProfile\":{\"MaxStreamingBitrate\":120000000,\"MaxStaticBitrate\":100000000,\"MusicStreamingTranscodingBitrate\":384000,\"DirectPlayProfiles\":[{\"Container\":\"mp4,m4v\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"mov\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"mp3\",\"Type\":\"Audio\"},{\"Container\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4a\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4b\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"flac\",\"Type\":\"Audio\"},{\"Container\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"wav\",\"Type\":\"Audio\"},{\"Container\":\"ogg\",\"Type\":\"Audio\"}],\"TranscodingProfiles\":[{\"Container\":\"ts\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"ts\",\"Type\":\"Video\",\"AudioCodec\":\"aac,mp3\",\"VideoCodec\":\"h264\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true}],\"ContainerProfiles\":[],\"CodecProfiles\":[{\"Type\":\"Video\",\"Codec\":\"h264\",\"Conditions\":[{\"Condition\":\"NotEquals\",\"Property\":\"IsAnamorphic\",\"Value\":\"true\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoProfile\",\"Value\":\"high|main|baseline|constrained baseline|high 10\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoRangeType\",\"Value\":\"SDR\",\"IsRequired\":false},{\"Condition\":\"LessThanEqual\",\"Property\":\"VideoLevel\",\"Value\":\"52\",\"IsRequired\":false},{\"Condition\":\"NotEquals\",\"Property\":\"IsInterlaced\",\"Value\":\"true\",\"IsRequired\":false}]}],\"SubtitleProfiles\":[{\"Format\":\"vtt\",\"Method\":\"Embed\"},{\"Format\":\"ass\",\"Method\":\"Embed\"},{\"Format\":\"ssa\",\"Method\":\"Embed\"}],\"ResponseProfiles\":[{\"Type\":\"Video\",\"Container\":\"m4v\",\"MimeType\":\"video/mp4\"}]}}"; - String playurl = ""; // Declare the playurl variable SendPost(playbackurl, deviceProfile, new JJCallBack() { @Override @@ -219,10 +218,6 @@ public class JfClient { if (mediaSources != null && mediaSources.size() > 0) { JsonObject mediaSource = mediaSources.get(0).getAsJsonObject(); String transcodingUrl = mediaSource.get("TranscodingUrl").getAsString(); - // 检查TranscodingUrl是否为空 - if (transcodingUrl != null && !transcodingUrl.isEmpty()) { - playurl = transcodingUrl; - } } } catch (Exception e) { e.printStackTrace(); @@ -230,11 +225,11 @@ public class JfClient { } }, null); - // if playurl is still "", return config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; - if (playurl == null || playurl.isEmpty()) { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + String playurl = ""; // Declare the playurl variable + if (transcodingUrl != null && !transcodingUrl.isEmpty()) { + playurl = config.getJellyfinUrl() + transcodingUrl; } else { - playurl = config.getJellyfinUrl() + playurl; + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } return playurl; // Return the playurl variable From fc0a6e7a1583e3912d79560408e23ef47f9ca990 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 11:54:26 +0800 Subject: [PATCH 11/27] fix? --- .../main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index b134519..eaaaf7c 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -219,6 +219,7 @@ public class JfClient { JsonObject mediaSource = mediaSources.get(0).getAsJsonObject(); String transcodingUrl = mediaSource.get("TranscodingUrl").getAsString(); } + final String playpath = transcodingUrl; } catch (Exception e) { e.printStackTrace(); } @@ -226,8 +227,8 @@ public class JfClient { }, null); String playurl = ""; // Declare the playurl variable - if (transcodingUrl != null && !transcodingUrl.isEmpty()) { - playurl = config.getJellyfinUrl() + transcodingUrl; + if (playpath != null && !playpath.isEmpty()) { + playurl = config.getJellyfinUrl() + playpath; } else { playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } From 78c3895a9cee61268624939c0885fbf870837b5b Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 11:59:32 +0800 Subject: [PATCH 12/27] =?UTF-8?q?fix=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index eaaaf7c..0c45e2e 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -218,8 +218,8 @@ public class JfClient { if (mediaSources != null && mediaSources.size() > 0) { JsonObject mediaSource = mediaSources.get(0).getAsJsonObject(); String transcodingUrl = mediaSource.get("TranscodingUrl").getAsString(); + final String playpath = transcodingUrl; } - final String playpath = transcodingUrl; } catch (Exception e) { e.printStackTrace(); } From 39fc0227fd379a34c076edd787e90d4f95e90071 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 12:12:11 +0800 Subject: [PATCH 13/27] test --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 0c45e2e..a904371 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -205,6 +205,7 @@ public class JfClient { // 此处为 仅使用 h264 强制烧录字幕 String deviceProfile = "{\"DeviceProfile\":{\"MaxStreamingBitrate\":120000000,\"MaxStaticBitrate\":100000000,\"MusicStreamingTranscodingBitrate\":384000,\"DirectPlayProfiles\":[{\"Container\":\"mp4,m4v\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"mov\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"mp3\",\"Type\":\"Audio\"},{\"Container\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4a\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4b\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"flac\",\"Type\":\"Audio\"},{\"Container\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"wav\",\"Type\":\"Audio\"},{\"Container\":\"ogg\",\"Type\":\"Audio\"}],\"TranscodingProfiles\":[{\"Container\":\"ts\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"ts\",\"Type\":\"Video\",\"AudioCodec\":\"aac,mp3\",\"VideoCodec\":\"h264\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true}],\"ContainerProfiles\":[],\"CodecProfiles\":[{\"Type\":\"Video\",\"Codec\":\"h264\",\"Conditions\":[{\"Condition\":\"NotEquals\",\"Property\":\"IsAnamorphic\",\"Value\":\"true\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoProfile\",\"Value\":\"high|main|baseline|constrained baseline|high 10\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoRangeType\",\"Value\":\"SDR\",\"IsRequired\":false},{\"Condition\":\"LessThanEqual\",\"Property\":\"VideoLevel\",\"Value\":\"52\",\"IsRequired\":false},{\"Condition\":\"NotEquals\",\"Property\":\"IsInterlaced\",\"Value\":\"true\",\"IsRequired\":false}]}],\"SubtitleProfiles\":[{\"Format\":\"vtt\",\"Method\":\"Embed\"},{\"Format\":\"ass\",\"Method\":\"Embed\"},{\"Format\":\"ssa\",\"Method\":\"Embed\"}],\"ResponseProfiles\":[{\"Type\":\"Video\",\"Container\":\"m4v\",\"MimeType\":\"video/mp4\"}]}}"; + String playpath = "" SendPost(playbackurl, deviceProfile, new JJCallBack() { @Override public void onSuccess(String str) { From 7bbe6942792918869dde019cb5aeb542e3ba273e Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 12:16:22 +0800 Subject: [PATCH 14/27] typo --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index a904371..1ab0e37 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -205,7 +205,7 @@ public class JfClient { // 此处为 仅使用 h264 强制烧录字幕 String deviceProfile = "{\"DeviceProfile\":{\"MaxStreamingBitrate\":120000000,\"MaxStaticBitrate\":100000000,\"MusicStreamingTranscodingBitrate\":384000,\"DirectPlayProfiles\":[{\"Container\":\"mp4,m4v\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"mov\",\"Type\":\"Video\",\"VideoCodec\":\"h264\",\"AudioCodec\":\"aac,mp3,opus,flac,vorbis\"},{\"Container\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"opus\",\"Type\":\"Audio\"},{\"Container\":\"mp3\",\"Type\":\"Audio\"},{\"Container\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4a\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"m4b\",\"AudioCodec\":\"aac\",\"Type\":\"Audio\"},{\"Container\":\"flac\",\"Type\":\"Audio\"},{\"Container\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"webm\",\"AudioCodec\":\"webma\",\"Type\":\"Audio\"},{\"Container\":\"wav\",\"Type\":\"Audio\"},{\"Container\":\"ogg\",\"Type\":\"Audio\"}],\"TranscodingProfiles\":[{\"Container\":\"ts\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Streaming\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"opus\",\"Type\":\"Audio\",\"AudioCodec\":\"opus\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"mp3\",\"Type\":\"Audio\",\"AudioCodec\":\"mp3\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"aac\",\"Type\":\"Audio\",\"AudioCodec\":\"aac\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"wav\",\"Type\":\"Audio\",\"AudioCodec\":\"wav\",\"Context\":\"Static\",\"Protocol\":\"http\",\"MaxAudioChannels\":\"2\"},{\"Container\":\"ts\",\"Type\":\"Video\",\"AudioCodec\":\"aac,mp3\",\"VideoCodec\":\"h264\",\"Context\":\"Streaming\",\"Protocol\":\"hls\",\"MaxAudioChannels\":\"2\",\"MinSegments\":\"1\",\"BreakOnNonKeyFrames\":true}],\"ContainerProfiles\":[],\"CodecProfiles\":[{\"Type\":\"Video\",\"Codec\":\"h264\",\"Conditions\":[{\"Condition\":\"NotEquals\",\"Property\":\"IsAnamorphic\",\"Value\":\"true\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoProfile\",\"Value\":\"high|main|baseline|constrained baseline|high 10\",\"IsRequired\":false},{\"Condition\":\"EqualsAny\",\"Property\":\"VideoRangeType\",\"Value\":\"SDR\",\"IsRequired\":false},{\"Condition\":\"LessThanEqual\",\"Property\":\"VideoLevel\",\"Value\":\"52\",\"IsRequired\":false},{\"Condition\":\"NotEquals\",\"Property\":\"IsInterlaced\",\"Value\":\"true\",\"IsRequired\":false}]}],\"SubtitleProfiles\":[{\"Format\":\"vtt\",\"Method\":\"Embed\"},{\"Format\":\"ass\",\"Method\":\"Embed\"},{\"Format\":\"ssa\",\"Method\":\"Embed\"}],\"ResponseProfiles\":[{\"Type\":\"Video\",\"Container\":\"m4v\",\"MimeType\":\"video/mp4\"}]}}"; - String playpath = "" + String playpath = ""; SendPost(playbackurl, deviceProfile, new JJCallBack() { @Override public void onSuccess(String str) { From f6cbc18e422e116b2dafa1beeb199814c1538b22 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 12:25:52 +0800 Subject: [PATCH 15/27] Update android.yml --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 64e865f..a25b8ec 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -23,7 +23,7 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew build + run: ./gradlew build --debug - name: Upload Artifact uses: actions/upload-artifact@v3 with: From 78ff45f8fc7031d9d2012038e29a740fa9d52398 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 12:45:46 +0800 Subject: [PATCH 16/27] Update build.gradle --- build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build.gradle b/build.gradle index 5ae9a7b..847585a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,4 +6,9 @@ plugins { task clean(type: Delete) { delete rootProject.buildDir +} +android { + lintOptions { + abortOnError false + } } \ No newline at end of file From a23bdfd05f4768198f558b96953b5fbbbd27058e Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 12:54:40 +0800 Subject: [PATCH 17/27] Update android.yml --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index a25b8ec..64e865f 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -23,7 +23,7 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew build --debug + run: ./gradlew build - name: Upload Artifact uses: actions/upload-artifact@v3 with: From 3f3609c8567b8dcd9e6a98f744e15d6789e0de75 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 13:06:15 +0800 Subject: [PATCH 18/27] fix --- app/build.gradle | 3 +++ build.gradle | 5 ----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5986f4a..b1b44e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,6 +34,9 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + lintOptions { + abortOnError false + } } dependencies { diff --git a/build.gradle b/build.gradle index 847585a..5ae9a7b 100644 --- a/build.gradle +++ b/build.gradle @@ -6,9 +6,4 @@ plugins { task clean(type: Delete) { delete rootProject.buildDir -} -android { - lintOptions { - abortOnError false - } } \ No newline at end of file From 70f30c2fa74e7fca10c7d8e14d0e51f3b8dfccdd Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 13:19:48 +0800 Subject: [PATCH 19/27] test --- .github/workflows/android.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 64e865f..922543d 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -28,4 +28,9 @@ jobs: uses: actions/upload-artifact@v3 with: name: my-artifact - path: app/build/outputs/apk/*.apk + path: app/build/outputs + - name: Upload lint + uses: actions/upload-artifact@v3 + with: + name: my-artifact + path: app/build/reports From dc34127785bb8db490358548d0adffec726bfbbe Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 13:33:11 +0800 Subject: [PATCH 20/27] upd build --- .github/workflows/android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 922543d..b5ed3d0 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -28,9 +28,9 @@ jobs: uses: actions/upload-artifact@v3 with: name: my-artifact - path: app/build/outputs + path: app/build/outputs/apk/release/*.apk - name: Upload lint uses: actions/upload-artifact@v3 with: - name: my-artifact + name: lint path: app/build/reports From 2b15f03a83e4ac494ed42f68f541814fbfff8f9a Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 13:33:27 +0800 Subject: [PATCH 21/27] on all events --- .github/workflows/android.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index b5ed3d0..0ee76bc 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -2,9 +2,7 @@ name: Android CI on: push: - branches: [ "master" ] pull_request: - branches: [ "master" ] jobs: build: From ba4f4ec5c0f6913054e6f7a3163a8b33c8fa703a Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 14:01:16 +0800 Subject: [PATCH 22/27] rename --- .github/workflows/android.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 0ee76bc..3ad00dc 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -25,10 +25,5 @@ jobs: - name: Upload Artifact uses: actions/upload-artifact@v3 with: - name: my-artifact + name: apks path: app/build/outputs/apk/release/*.apk - - name: Upload lint - uses: actions/upload-artifact@v3 - with: - name: lint - path: app/build/reports From 7710e93e91057df47132cf3618b4d682d2eb77ce Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 14:10:03 +0800 Subject: [PATCH 23/27] use debug due to signiture problems, release can't be installed without flags. --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 3ad00dc..0decf6e 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -26,4 +26,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: apks - path: app/build/outputs/apk/release/*.apk + path: app/build/outputs/apk/debug/*.apk From d17b3b4ac290006610afc6ac661a2fb6a7dc37be Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 07:05:50 +0000 Subject: [PATCH 24/27] ignore .vscode --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index aa724b7..70d9285 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ .externalNativeBuild .cxx local.properties +.vscode/ From 4b3e8cfca131b4ca44b10e2da478f54bc363c594 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 07:06:00 +0000 Subject: [PATCH 25/27] debug --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 1ab0e37..de72716 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -231,7 +231,7 @@ public class JfClient { if (playpath != null && !playpath.isEmpty()) { playurl = config.getJellyfinUrl() + playpath; } else { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken + "&debug=" + jsonObject; } return playurl; // Return the playurl variable From 34fe131a13cbab48acb3f1a2dc6e78c0652e031e Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 07:08:43 +0000 Subject: [PATCH 26/27] dev --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index de72716..3b2d725 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -231,7 +231,7 @@ public class JfClient { if (playpath != null && !playpath.isEmpty()) { playurl = config.getJellyfinUrl() + playpath; } else { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken + "&debug=" + jsonObject; + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken + "&debug=" + str; } return playurl; // Return the playurl variable From fe365fc3393e1090683139f4b31e4b48886b1b56 Mon Sep 17 00:00:00 2001 From: Ovler Date: Mon, 16 Oct 2023 07:10:44 +0000 Subject: [PATCH 27/27] revert --- app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java index 3b2d725..1ab0e37 100644 --- a/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java +++ b/app/src/main/java/org/sifacai/vlcjellyfin/Utils/JfClient.java @@ -231,7 +231,7 @@ public class JfClient { if (playpath != null && !playpath.isEmpty()) { playurl = config.getJellyfinUrl() + playpath; } else { - playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken + "&debug=" + str; + playurl = config.getJellyfinUrl() + "/videos/" + itemid + "/stream.mp4?static=true&DeviceId=" + DeviceId + "&api_key=" + AccessToken; } return playurl; // Return the playurl variable