2015-06-25 5 views
9

В настоящее время я ищу разработку приложения, которое использует Dash через ExoPlayer в Android.Создание простого экземпляра ExoPlayer

Для начала я прохожу через демонстрационный проект, но у меня возникли проблемы с созданием простого рабочего экземпляра ExoPlayer, который может воспроизводить mp3 или подобное.

Понравилась бы любая помощь, которую любой может дать, связанный с получением очень простого экземпляра exoplayer, из которого я могу адаптироваться и основываться, или если у кого есть какие-либо ссылки для получения дополнительных ссылок или руководств, за которыми я могу следовать, поскольку, кажется, имеется небольшая документация.

Большое спасибо за помощь и помощь!

ответ

17

Прежде всего создать экземпляр ExoPlayer с этой линией:

exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs); 

Если вы хотите играть только аудио вы можете использовать эти значения:

RENDERER_COUNT = 1 //since you want to render simple audio 
minBufferMs = 1000 
minRebufferMs = 5000 

Оба значения буфера может быть изменены в соответствии с вашим требования

Теперь вам нужно создать источник данных. Когда вы хотите потоковое mp3, вы можете использовать DefaultUriDataSource. Вы должны передать Контекст и UserAgent. Для того, чтобы держать его просто играют локальный файл и передать нуль, как UserAgent:

DataSource dataSource = new DefaultUriDataSource(context, null); 

Затем создайте sampleSource:

ExtractorSampleSource sampleSource = new ExtractorSampleSource(
        uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize); 

Uri указывает на файл, как экстрактор вы можете использовать простой Mp3Extractor по умолчанию, если вы хотите играть в mp3. requestBufferSize может быть изменен в соответствии с вашими требованиями. Например, используйте 5000.

Теперь вы можете создать свой трек визуализации звука с использованием источника выборки следующим образом:

MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource); 

Наконец позвонить приготовить на вашем экземпляре exoPlayer:

exoPlayer.prepare(audioRenderer); 

Для начала воспроизведения вызова:

exoPlayer.setPlayWhenReady(true); 
+0

Большое спасибо за ваш комментарий. Exoplayer - это, по моему мнению, отличное средство для Android, но в настоящий момент это огорчено представленным в новаторской дружественной документации, хотя, возможно, новички должны держаться подальше, пока они не узнают лучше, а! У меня есть другой вопрос, который я только что спросил, связанный с игроком, который мне понравился бы, если вы почувствуете, что сможете помочь с этим! спасибо! –

+0

Супер, но как вам показать видео? С VideoView? .. Nevermind, только что нашел https://github.com/brianwernick/ExoMedia/ – Stephane

+1

@MaxMarshall и mismor Как я могу играть в aac-файл? Каким должен быть Экстрактор? –

6

Вот как вы это сделаете, используя новый API ExoPlayer 2 и команду SimpleExoPlayer.

Сначала создайте игрока:

DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); 
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, bandwidthMeter); 

TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); 
DefaultTrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); 
LoadControl loadControl = new DefaultLoadControl(); 

SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector, loadControl); 

player.addListener(...); // To receive events from the player 

Затем создайте MediaSource. Для MP3 вы можете использовать ExtractorMediaSource:

ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory(); 
Uri uri = Uri.parse(mp3UriString); 
Handler mainHandler = new Handler(Looper.getMainLooper()); 
MediaSource mediaSource = new ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, mainHandler, mediaSourceListener); // Listener defined elsewhere 

Затем подготовить и играть, когда готов:

player.prepare(mediaSource); 
player.setPlayWhenReady(true); 

Для DASH вы бы использовать DashMediaSource вместо ExtractorMediaSource.

+0

** Обновление **: DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory (контекст, Util.getUserAgent (контекст, «exoplayer2example»), bandwidthMeter) –

Смежные вопросы