react-native-track-player icon indicating copy to clipboard operation
react-native-track-player copied to clipboard

PLS URL not working on Android

Open glopez-askit opened this issue 1 year ago • 10 comments

Describe the Bug I have the following streaming URL for my radio station:

https://cast6.my-control-panel.com/stream/unica/stream.pls

I'm attempting to use the react-native-track-player library to play audio from this URL. I've implemented it as follows:

  // ...
  const initPlayer = async (audio: string) => {
    await TrackPlayer.setupPlayer();

    await TrackPlayer.updateOptions({
      android: {
        appKilledPlaybackBehavior:
          AppKilledPlaybackBehavior.StopPlaybackAndRemoveNotification,
      },
      capabilities: [Capability.Play, Capability.Pause],
      compactCapabilities: [Capability.Play, Capability.Pause],
      notificationCapabilities: [Capability.Play, Capability.Pause],
    });

    TrackPlayer.add({
      url: audio,
      title: 'My Stream',
      artist: 'My Stream',
      artwork: require('@assets/logo.png'),
      type: TrackType.HLS,
    });
  };
  // ...

And in the service.stream.js section:

//...

export const PlaybackService = async function() {
  const listenerService = new ListenerService();

  TrackPlayer.addEventListener(Event.PlaybackState, ({ state }) => {
    if ([State.Playing, State.Paused].includes(state)) {
      listenerService.register(state === State.Playing);
    }
  });

  TrackPlayer.addEventListener(Event.RemotePlay, () => {
    TrackPlayer.play();
  });

  TrackPlayer.addEventListener(Event.RemotePause, () => {
    TrackPlayer.pause();
  });

  TrackPlayer.addEventListener(Event.PlaybackError, event => {
    console.log(event);
  });
};

The issue arises when pressing the play button on Android, and the console displays the following message:

{"code": "android-parsing-manifest-malformed", "message": "Source error"}

Strangely, this issue only occurs on Android; the configuration works perfectly on iOS.

Steps To Reproduce

  1. Press the play button on Android.

Code To Reproduce Unfortunately, I can't provide a simple code example to replicate the bug.

Replicable on Example App? I'm unsure if this bug can be replicated in the React Native Track Player Example App.

Environment Info:

System:
  OS: macOS 14.2.1
  CPU: (8) arm64 Apple M2
  Memory: 117.11 MB / 8.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.15.0
    path: /usr/local/bin/node
  Yarn:
    version: 1.22.19
    path: /usr/local/bin/yarn
  npm:
    version: 9.5.0
    path: /usr/local/bin/npm
  Watchman:
    version: 2023.12.04.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.14.3
    path: /usr/local/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.2
      - iOS 17.2
      - macOS 14.2
      - tvOS 17.2
      - visionOS 1.0
      - watchOS 10.2
  Android SDK:
    API Levels:
      - "32"
      - "33"
      - "33"
      - "34"
    Build Tools:
      - 30.0.3
      - 31.0.0
      - 33.0.0
      - 33.0.1
      - 33.0.2
      - 34.0.0
    System Images:
      - android-28 | Google APIs ARM 64 v8a
      - android-33 | Google APIs ARM 64 v8a
      - android-33 | Google APIs Intel x86_64 Atom
      - android-34 | Google Play ARM 64 v8a
      - android-UpsideDownCake-ext5 | Google APIs ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2022.1 AI-221.6008.13.2211.9619390
  Xcode:
    version: 15.2/15C500b
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.9
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.73.2
    wanted: 0.73.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false

"react-native-track-player": "^4.0.1"
Running on Simulator (Android)

How I can Help

What can you do to help resolve this? I need to confirm if the library truly supports the format of my streaming URL.

Have you investigated the underlying JS or Swift/Android code causing this bug? Yes.

Can you create a Pull Request with a fix? No.

glopez-askit avatar Jan 23 '24 01:01 glopez-askit

RNTP on android uses exoplayer; see https://developer.android.com/media/media3/exoplayer/supported-formats https://github.com/google/ExoPlayer/issues/1947

PLS is probably not supported out of the box

lovegaoshi avatar Jan 23 '24 17:01 lovegaoshi

RNTP on android uses exoplayer; see https://developer.android.com/media/media3/exoplayer/supported-formats google/ExoPlayer#1947

PLS is probably not supported out of the box

Thank you very much, but I have even tried with the address that contains the PLS file, and the error is the same.

[playlist]
numberofentries=1
File1=https://cast6.my-control-panel.com/proxy/unica/stream
Title1=
Length1=-1
version=2

The address is https://cast6.my-control-panel.com/proxy/unica/stream, it's working on iOS, the problem is Android.

glopez-askit avatar Jan 23 '24 17:01 glopez-askit

ru sure? i put https://cast6.my-control-panel.com/proxy/unica/stream in place of https://github.com/doublesymmetry/react-native-track-player/blob/47b2d08033563ef4d7e76a7f061c244ac3dba1ec/example/src/assets/data/playlist.json#L3 and it works fine.

lovegaoshi avatar Jan 23 '24 18:01 lovegaoshi

ru sure? i put https://cast6.my-control-panel.com/proxy/unica/stream in place of

https://github.com/doublesymmetry/react-native-track-player/blob/47b2d08033563ef4d7e76a7f061c244ac3dba1ec/example/src/assets/data/playlist.json#L3

and it works fine.

Hi i tried but diidm't work i am having same issue. getting output {"buffered": 0, "duration": 0, "position": 0}

here is code await TrackPlayer.add([ { id: 1, url: "https://cast6.my-control-panel.com/proxy/unica/stream.mp3", // Load media from the network title: "Avaritia", artist: "deadmau5", album: "while(1<2)", genre: "Progressive House, Electro House", date: "2014-05-20T07:00:00+00:00", // RFC 3339 currentIndex: index, // artwork: "http://example.com/cover.png", // Load artwork from the network //duration: 402, // Duration in seconds }, ]); await TrackPlayer.play();

AmmarKhan21 avatar Jan 23 '24 20:01 AmmarKhan21

weell dont add .mp3 just use the stream url

On Tue, Jan 23, 2024, 12:39 PM Ammar khan @.***> wrote:

ru sure? i put https://cast6.my-control-panel.com/proxy/unica/stream in place of

https://github.com/doublesymmetry/react-native-track-player/blob/47b2d08033563ef4d7e76a7f061c244ac3dba1ec/example/src/assets/data/playlist.json#L3

and it works fine.

Hi i tried but diidm't work i am having same issue. getting output {"buffered": 0, "duration": 0, "position": 0}

here is code await TrackPlayer.add([ { id: 1, url: "https://cast6.my-control-panel.com/proxy/unica/stream.mp3", // Load media from the network title: "Avaritia", artist: "deadmau5", album: "while(1<2)", genre: "Progressive House, Electro House", date: "2014-05-20T07:00:00+00:00", // RFC 3339 currentIndex: index, // artwork: "http://example.com/cover.png", // Load artwork from the network //duration: 402, // Duration in seconds }, ]); await TrackPlayer.play();

— Reply to this email directly, view it on GitHub https://github.com/doublesymmetry/react-native-track-player/issues/2239#issuecomment-1906880458, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZMOVVVJNZKOLVUYHQ4MCNDYQANWTAVCNFSM6AAAAABCGEQYGOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBWHA4DANBVHA . You are receiving this because you commented.Message ID: @.*** com>

lovegaoshi avatar Jan 23 '24 20:01 lovegaoshi

https://cast6.my-control-panel.com/proxy/unica/stream

weell dont add .mp3 just use the stream url On Tue, Jan 23, 2024, 12:39 PM Ammar khan @.> wrote: ru sure? i put https://cast6.my-control-panel.com/proxy/unica/stream in place of https://github.com/doublesymmetry/react-native-track-player/blob/47b2d08033563ef4d7e76a7f061c244ac3dba1ec/example/src/assets/data/playlist.json#L3 and it works fine. Hi i tried but diidm't work i am having same issue. getting output {"buffered": 0, "duration": 0, "position": 0} here is code await TrackPlayer.add([ { id: 1, url: "https://cast6.my-control-panel.com/proxy/unica/stream.mp3", // Load media from the network title: "Avaritia", artist: "deadmau5", album: "while(1<2)", genre: "Progressive House, Electro House", date: "2014-05-20T07:00:00+00:00", // RFC 3339 currentIndex: index, // artwork: "http://example.com/cover.png", // Load artwork from the network //duration: 402, // Duration in seconds }, ]); await TrackPlayer.play(); — Reply to this email directly, view it on GitHub <#2239 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZMOVVVJNZKOLVUYHQ4MCNDYQANWTAVCNFSM6AAAAABCGEQYGOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBWHA4DANBVHA . You are receiving this because you commented.Message ID: @. com>

Hi just tried without .mp3 still didn't worked: await TrackPlayer.add([ { id: 1, url: "https://cast6.my-control-panel.com/proxy/unica/stream", // Load media from the network title: "Avaritia", artist: "deadmau5", album: "while(1<2)", genre: "Progressive House, Electro House", date: "2014-05-20T07:00:00+00:00", // RFC 3339 currentIndex: index, // artwork: "http://example.com/cover.png", // Load artwork from the network //duration: 402, // Duration in seconds }, ]); await TrackPlayer.play();

          **Hi can you  telll me which version you are  using for this package? i'm using  ^4.0.1**
image

AmmarKhan21 avatar Jan 23 '24 20:01 AmmarKhan21

whelp. this url works with the example app and i suggest you to also fork the example, use your url to rule out any device issues or your app setup first

On Tue, Jan 23, 2024, 12:50 PM Ammar khan @.***> wrote:

https://cast6.my-control-panel.com/proxy/unica/stream

weell dont add .mp3 just use the stream url … <#m_-7224350574644903054_> On Tue, Jan 23, 2024, 12:39 PM Ammar khan @.> wrote: ru sure? i put https://cast6.my-control-panel.com/proxy/unica/stream https://cast6.my-control-panel.com/proxy/unica/stream in place of https://github.com/doublesymmetry/react-native-track-player/blob/47b2d08033563ef4d7e76a7f061c244ac3dba1ec/example/src/assets/data/playlist.json#L3 https://github.com/doublesymmetry/react-native-track-player/blob/47b2d08033563ef4d7e76a7f061c244ac3dba1ec/example/src/assets/data/playlist.json#L3 and it works fine. Hi i tried but diidm't work i am having same issue. getting output {"buffered": 0, "duration": 0, "position": 0} here is code await TrackPlayer.add([ { id: 1, url: "https://cast6.my-control-panel.com/proxy/unica/stream.mp3 https://cast6.my-control-panel.com/proxy/unica/stream.mp3", // Load media from the network title: "Avaritia", artist: "deadmau5", album: "while(1<2)", genre: "Progressive House, Electro House", date: "2014-05-20T07:00:00+00:00", // RFC 3339 currentIndex: index, // artwork: "http://example.com/cover.png http://example.com/cover.png", // Load artwork from the network //duration: 402, // Duration in seconds }, ]); await TrackPlayer.play(); — Reply to this email directly, view it on GitHub <#2239 (comment) https://github.com/doublesymmetry/react-native-track-player/issues/2239#issuecomment-1906880458>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZMOVVVJNZKOLVUYHQ4MCNDYQANWTAVCNFSM6AAAAABCGEQYGOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBWHA4DANBVHA https://github.com/notifications/unsubscribe-auth/AZMOVVVJNZKOLVUYHQ4MCNDYQANWTAVCNFSM6AAAAABCGEQYGOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBWHA4DANBVHA . You are receiving this because you commented.Message ID: @. com>

Hi just tried without .mp3 still didn't worked: await TrackPlayer.add([ { id: 1, url: "https://cast6.my-control-panel.com/proxy/unica/stream", // Load media from the network title: "Avaritia", artist: "deadmau5", album: "while(1<2)", genre: "Progressive House, Electro House", date: "2014-05-20T07:00:00+00:00", // RFC 3339 currentIndex: index, // artwork: "http://example.com/cover.png", // Load artwork from the network //duration: 402, // Duration in seconds }, ]); await TrackPlayer.play();

      **Hi can you  telll me which version you are  using for this package? i'm using  ^4.0.1**

image.png (view on web) https://github.com/doublesymmetry/react-native-track-player/assets/62397964/9b834423-6d37-4a97-b355-b4f631a3fe4a

— Reply to this email directly, view it on GitHub https://github.com/doublesymmetry/react-native-track-player/issues/2239#issuecomment-1906895422, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZMOVVRNWHT5HN34ZO5XN2LYQAPAFAVCNFSM6AAAAABCGEQYGOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBWHA4TKNBSGI . You are receiving this because you commented.Message ID: @.*** com>

lovegaoshi avatar Jan 23 '24 21:01 lovegaoshi

actually seeing your screenshot does it not work? its a stream so the log in ur screenshot looks normal

lovegaoshi avatar Jan 23 '24 22:01 lovegaoshi

actually seeing your screenshot does it not work? its a stream so the log in ur screenshot looks normal

Nope by default even there is no track it shows all content 0. So surely its bug in 4.1 i just verify by down the version to 3.2 and there same ur that you proved and also check with mine url its also working at that version.

So anybody who is having same issue like playing audio using url doesn't not work on android but working on iOS you can downgrade to 3.2 its working there

And also I'm requesting the this package manager please have a look and please fix the issue i wasted alot of time on it.Hopefully we see the fix soon thanks.

AmmarKhan21 avatar Jan 23 '24 22:01 AmmarKhan21

This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 7 days.

github-actions[bot] avatar Apr 23 '24 01:04 github-actions[bot]

This issue was closed because it has been stalled for 7 days with no activity.

github-actions[bot] avatar May 01 '24 01:05 github-actions[bot]