我正在尝试使用 ExoPlayer 库FLAC 扩展 https://github.com/google/ExoPlayer/tree/release-v2/extensions/flac在我的安卓应用程序中。我面临以下问题:
- 并非所有文件都可以播放(据我了解高码率文件的问题);
- 并非所有设备都能够播放 flac 格式的音频文件(在模拟器和三星 Galaxy S5 上播放,但在索尼 Xperia XA 上播放 - 像白噪声而不是音频。所有使用 Android 6.0 的设备。我尝试编译 flac版本 1.3.1 和 1.3.2 的扩展)
如何摆脱这种困境?
我的连接库:
设置.gradle
include ':app', ':playbacktests', ':testutils', ':library'
include ':extension-flac'
构建.gradle
...
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:support-v4:25.0.1'
//compile 'com.google.android.exoplayer:exoplayer:r2.1.1'
compile project (':library')
compile project (':extension-flac')
testCompile 'junit:junit:4.12'
}
示例代码:
DefaultBandwidthMeter bandwidthMeterAudio1 = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactoryAudio = new DefaultDataSourceFactory(this.getActivity(),
Util.getUserAgent(this.getActivity(), null), bandwidthMeterAudio1);
ExtractorsFactory extractorsFactoryAudio = new DefaultExtractorsFactory();
if (audioUri != null) { // audioUri - string array with paths of flac audio files
if (audio_name != null){
ArrayAdapter <String> adapter = new ArrayAdapter<String>(getActivity(),
R.layout.row_listview, audio_name);
listViewMusic.setAdapter(adapter);
}
audioSource = new MediaSource[audioUri.length];
for (int i = 0; i < audioUri.length; i++) {
audioSource[i] = new ExtractorMediaSource(Uri.parse(audioUri[i]),
dataSourceFactoryAudio,extractorsFactoryAudio, null, null);
}
ConcatenatingMediaSource concatenatingMediaSourceAudio = new ConcatenatingMediaSource(audioSource);
audioPlayer.prepare(concatenatingMediaSourceAudio);
}