gpt4 book ai didi

android - 我可以在 Exoplayer 或 MediaPlayer 中设置首选音频设备来播放视频吗?

转载 作者:行者123 更新时间:2023-11-29 23:10:59 24 4
gpt4 key购买 nike

在大多数情况下,这似乎是使用系统默认设备处理的。

有没有办法,比如ExoPlayer/MediaPlayer中的AudioTrack.setPreferredDevice(AudioDeviceInfo info)来手动设置输出设备视频?

如果没有,是否有任何替代方案可以让我这样做?

最佳答案

为了解决我的问题,我必须下载 Exoplayer 的源代码并公开一种将硬件设置到轨道的方法:

DefaultAudioSink.Java

private AudioTrack initializeAudioTrack() throws InitializationException {
AudioTrack audioTrack;
if (Util.SDK_INT >= 21) {
audioTrack = createAudioTrackV21();
if (audioAttributes.device != null && Util.SDK_INT >= 23) {
audioTrack.setPreferredDevice(audioAttributes.device);
}
}

在上面的代码中添加了内部 if 语句。

AudioAttributes.Java

public Builder setPreferredDevice(AudioDeviceInfo device) {
this.playbackDevice = device;
return this;
}

public AudioAttributes build() {
return new AudioAttributes(contentType, flags, usage, playbackDevice);
}

这添加了一个公共(public)构建器元素,以允许在 AudioAttributes 上设置首选设备。

public AudioDeviceInfo device;
private @Nullable android.media.AudioAttributes audioAttributesV21;
private android.media.AudioAttributes audioAttributesV21;

private AudioAttributes(@C.AudioContentType int contentType, @C.AudioFlags int flags,
@C.AudioUsage int usage) {
@C.AudioUsage int usage, AudioDeviceInfo device) {
this.contentType = contentType;
this.flags = flags;
this.usage = usage;
this.device = device;
}

为 AudioDeviceInfo 添加变量到 AudioAttributes 构造函数。

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
AudioAttributes other = (AudioAttributes) obj;
return this.contentType == other.contentType && this.flags == other.flags
&& this.usage == other.usage && this.device == other.device;
}

为设备添加了源格式检查以等于覆盖:&& this.device == other.device

这使我能够编译项目并像往常一样添加为库,但还能够设置我想要作为构建器一部分的设备。好处是它也可以动态工作。我相信媒体也可以实现同样的目标播放器

关于android - 我可以在 Exoplayer 或 MediaPlayer 中设置首选音频设备来播放视频吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56024804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com