Я работаю с ExoPlayer. Я понял, что ByteArratDataSource используется для подготовки видео из byte[], но до сих пор не знаю, как его использовать. Обычно я использую Uri для подготовки исходного кода
private void initPlayer() {
...
DataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(
context,
Util.getUserAgent(context, context.getResources().getString(R.string.app_name)));
MediaSource currentMediaSource = new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(songUri);
simpleExoPlayer.prepare(currentMediaSource, false, true);
}
Но теперь у меня есть источник байтовых данных, как я могу его использовать, я не нашел на этом сайте руководства по байтовым данным https://google.github.io/ExoPlayer/guide.html. Пожалуйста помогите. Большое спасибо
К сожалению, вы не можете сделать
DataSource.Factory dataSourceFactory = new ByteArrayDataSource(bytes);
Это должно бытьByteArrayDataSource dataSource = new ByteArrayDataSource(bytes);
Однако в приведенной выше строке кода произошел сбой.Да, вы правы, это должно быть
DataSource
вместоDataSourceFactory
. Исправленный@CallmeK, знание этого сбоя поможет ответить на ваш вопрос. Не могли бы вы добавить описание этого сбоя к своему вопросу, включая любые сообщения об ошибках в logcat?
Я исправил этот сбой. Однако
MediaSource mediaSource = new ExtractorMediaSource.Factory(factory).createMediaSource(uri);
createMediaSource
принимает только Uri, а не DataSource. Я также пробовалDataSource dataSource = new ByteArrayDataSource(bytes)
<------- это сработало нормально, он вернул что-то вродеcom.google.android.exoplayer2.upstream.ByteArrayDataSource@f013ca4
. НоdataSource.getUri()
было null