Add Codec on AudioTrack

It would be great to have Codec info on the AudioTrack Objec (com.bitmovin.player.api.media.audio.AudioTrack).

Why ?

When we have multiple track on the same language, for example one with Dolby system active and the other without the Dolby system.

It would be great to display to the user the choice of the track like this :

  • French (5.1)
  • French
  • English (5.1)
  • English

Right now, we don’t have those information.

We can only get the information on the active track.

On your web library, we can do this like this :
const audiosAvailable = this.playerBitmovin.getAvailableAudio();

for (let i = 0; i < audiosAvailable.length; i++) {
    const hasSurround = audiosAvailable[i].getQualities().some(c => c.codec === 'ec-3');
}
1 Like

Hi Raphael,

Thank you for logging this request and providing us with such detail.

Fortunately, we have had similar requests from existing customers so we’re already tracking interest for this feature and assessing it for our roadmap. I’ve added your request as another upvote!

While I don’t have a timeline for you right now, we’ll let you know in this thread when we have some updates and also when we add the audio codec info to the Android SDK.

Thanks,
Jacob

Hi,

Any news concerning this feature ?

By the way, I can’t upgrade the Bitmovin SDK more than 3.33.0 otherwise it crashes due to the analytics module. Are you aware of this ?

FATAL EXCEPTION: main
                                                                                                    Process: homedia.sky.sport.debug, PID: 23559
                                                                                                    java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:502)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
                                                                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
                                                                                                    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.bitmovin.player.BuildConfig" on path: DexPathList[[zip file "/data/app/homedia.sky.sport.debug-uVIFmrjHtkgMyVk9b7ffqg==/base.apk"],nativeLibraryDirectories=[/data/app/homedia.sky.sport.debug-uVIFmrjHtkgMyVk9b7ffqg==/lib/arm, /system/lib, /product/lib]]
                                                                                                    	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
                                                                                                    	at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                                                                                                    	at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                                                    	at com.bitmovin.analytics.bitmovin.player.BitmovinUtil.getPlayerVersion(BitmovinUtil.kt:10)
                                                                                                    	at com.bitmovin.analytics.bitmovin.player.BitmovinSdkAdapter.manipulate(BitmovinSdkAdapter.kt:195)
                                                                                                    	at com.bitmovin.analytics.data.EventDataFactory.create(EventDataFactory.kt:65)
                                                                                                    	at com.bitmovin.analytics.adapters.DefaultPlayerAdapter.createEventData(DefaultPlayerAdapter.kt:29)
                                                                                                    	at com.bitmovin.analytics.stateMachines.DefaultStateMachineListener.onStartup(DefaultStateMachineListener.kt:21)
                                                                                                    	at com.bitmovin.analytics.stateMachines.PlayerStates$Companion$STARTUP$1$onExitState$1.invoke(PlayerStates.kt:29)
                                                                                                    	at com.bitmovin.analytics.stateMachines.PlayerStates$Companion$STARTUP$1$onExitState$1.invoke(PlayerStates.kt:28)
                                                                                                    	at com.bitmovin.analytics.ObservableSupport.notify(ObservableSupport.kt:30)
                                                                                                    	at com.bitmovin.analytics.stateMachines.PlayerStates$Companion$STARTUP$1.onExitState(PlayerStates.kt:28)
                                                                                                    	at com.bitmovin.analytics.stateMachines.PlayerStateMachine.transitionState(PlayerStateMachine.kt:141)
                                                                                                    	at com.bitmovin.analytics.stateMachines.PlayerStateMachine.transitionState(PlayerStateMachine.kt:130)
                                                                                                    	at com.bitmovin.analytics.bitmovin.player.BitmovinSdkAdapter.onPlayerEventPlaying(BitmovinSdkAdapter.kt:365)
                                                                                                    	at com.bitmovin.analytics.bitmovin.player.BitmovinSdkAdapter.access$onPlayerEventPlaying(BitmovinSdkAdapter.kt:39)
                                                                                                    	at com.bitmovin.analytics.bitmovin.player.BitmovinSdkAdapter$addPlayerListeners$4.invoke(BitmovinSdkAdapter.kt:85)
                                                                                                    	at com.bitmovin.analytics.bitmovin.player.BitmovinSdkAdapter$addPlayerListeners$4.invoke(BitmovinSdkAdapter.kt:85)
                                                                                                    	at com.bitmovin.player.t.b.b(SourceFile:206)
                                                                                                    	at com.bitmovin.player.t.e.a(SourceFile:1)
                                                                                                    	at com.bitmovin.player.e.q0.a(SourceFile:40)
                                                                                                    	at com.bitmovin.player.e.q0.a(SourceFile:1)
                                                                                                    	at com.bitmovin.player.e.q0.b(SourceFile:1)
                                                                                                    	at com.bitmovin.player.e.q0$a.a(SourceFile:2)
                                                                                                    	at com.bitmovin.player.e.q0$a.invoke(SourceFile:1)
                                                                                                    	at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2.emit(Emitters.kt:223)
                                                                                                    	at kotlinx.coroutines.flow.StateFlowImpl.collect(StateFlow.kt:398)
                                                                                                    	at kotlinx.coroutines.flow.StateFlowImpl$collect$1.invokeSuspend(Unknown Source:15)
                                                                                                    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
                                                                                                    	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:883)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:100)
                                                                                                    	at android.os.Looper.loop(Looper.java:214)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7356)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

BR,
Raphael

Hi Raphael,

Thanks for the follow up. No update to share with you yet, but I’ll be sure to post in here once we have some movement.

Sorry to hear about the issue you’re having updating the Android SDK. Could you please open another community support post so one of our engineers can help you on that specific topic?

Thanks,
Jacob

Hi Jacob,

Any update on this? Or any workaround?

Not being able to show if audio is stereo or 5.1 really affect to the user experience.

Thank you