Потоковая передача аудио AAC с Android

Можно также использовать BOOST_CHECK_EXCEPTION, который позволяет Вам определять тестовую функцию, которая проверяет Ваше исключение.

20
задан bdls 21 March 2012 в 21:40
поделиться

4 ответа

Это дикий выстрел в темноте, но я видел аналогичное поведение с флэш-плеером, когда он фактически игнорирует имя файла и полагается только на тип MIME, отправленный сервером. Есть идеи, какие заголовки отправляются с example.com ? Возможно, вы захотите попробовать обернуть свой blah.m4a на странице, которая может устанавливать заголовки, а затем передавать двоичные данные. Попробуйте эти типы, и сообщество будет признательно за подтверждение того, что работает:

audio / mpeg аудио / mp4a аудио / mp4a-latm аудио / aac audio / x-aac

0
ответ дан 30 November 2019 в 01:31
поделиться

Этот обходной путь позволяет воспроизводить файлы M4A из сети (и файлы AAC в других контейнерах, таких как MP4 и 3GP). Он просто загружает файл и воспроизводит его из кеша.

private File mediaFile;

private void playAudio(String mediaUrl) {
    try {
        URLConnection cn = new URL(mediaUrl).openConnection();
        InputStream is = cn.getInputStream();

        // create file to store audio
        mediaFile = new File(this.getCacheDir(),"mediafile");
        FileOutputStream fos = new FileOutputStream(mediaFile);   
        byte buf[] = new byte[16 * 1024];
        Log.i("FileOutputStream", "Download");

        // write to file until complete
        do {
            int numread = is.read(buf);   
            if (numread <= 0)  
                break;
            fos.write(buf, 0, numread);
        } while (true);
        fos.flush();
        fos.close();
        Log.i("FileOutputStream", "Saved");
        MediaPlayer mp = new MediaPlayer();

        // create listener to tidy up after playback complete
        MediaPlayer.OnCompletionListener listener = new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                // free up media player
                mp.release();
                Log.i("MediaPlayer.OnCompletionListener", "MediaPlayer Released");
            }
        };
        mp.setOnCompletionListener(listener);

        FileInputStream fis = new FileInputStream(mediaFile);
        // set mediaplayer data source to file descriptor of input stream
        mp.setDataSource(fis.getFD());
        mp.prepare();
        Log.i("MediaPlayer", "Start Player");
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
5
ответ дан 30 November 2019 в 01:31
поделиться

try --

1) MP.prepareAsync()

2) onPrepared() { mp.start() }

-2
ответ дан 30 November 2019 в 01:31
поделиться

Я написал небольшой блог об облачном решении, которое я использую для разрабатываемого мной музыкального плеера. Он основан на молодом проекте Android Cloud Services (ACS), который пока недоступен, но тем не менее показывает потенциальное решение с использованием облачного транскодирования для потоковой передачи любых медиафайлов. Посмотрите: http://positivelydisruptive.blogspot.com/2010/08/streaming-m4a-files-using-android-cloud.html

Джоэл

0
ответ дан 30 November 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: