Потоковая передача Android с помощью MediaPlayer: ошибка (1, -1004) и видео 3GPP

Я пытаюсь сделать приложение для воспроизведения видео. У меня 2 проблемы:

1) У меня есть ссылка на Youtube: rtsp:// и я делаю:

"Uri myUri = Uri.parse(link); //link = rtsp://... mMediaPlayer.setDataSource(getApplicationContext(), myUri);"

Затем видео не воспроизводится ... однако, если я использую «видеопросмотр», работает. Я думаю, проблема в том, что «медиаплеер» не воспроизводит кодек mpeg. Любые идеи?

2) У меня есть несколько ссылок с разным качеством, и я играю по ним, подключенным к Wi-Fi и без проблем, но с подключением для передачи данных:

05-01 15:58:25.453: E/Link:(31565): http%3A%2F%2Fo-o.preferred.mad01s04.v16.lscache3.c.youtube.com%2Fvideoplayback%3Fupn%3D35Zn4tL7Ibc%26sparams%3Dcp % 252Cid% 252Cip% 252Cipbits% 252Citag% 252Cratebypass% 252Csource% 252Cupn% 252Cexpire% 26fexp% 3D900147% 26itag% 3D18% 26ip% 3D85.0.0.0% 26signature% 3DAACE528D596873408192BCDDF4ECFC7DDFD68EBB.575689C34D97BA9D750C7B40CC63B427E40E7838% 26sver% 3D3% 26ratebypass% 3Dyes% 26source% 3Dyoutube %26expire%3D1335903378%26key%3Dyt1%26ipbits%3D8%26cp%3DU0hSSllLUV9MUkNOMl9RRVVEOnduVjJoRkFBMDBn%26id%3D8fb5ca7aa1a31f5e

05-01 15:58:25.464: I/AwesomePlayer(31648): setDataSource_l('http://oo.preferred.mad01s04.v16.lscache3.c.youtube.com/videoplayback?upn=35Zn4tL7Ibc&sparams=cp%2Cid%2Cip % 2Cipbits% 2Citag% 2Cratebypass% 2Csource% 2Cupn% 2Cexpire & Fexp = 900147 & ITAG = 18 & Ip = 85.0.0.0 & подпись = AACE528D596873408192BCDDF4ECFC7DDFD68EBB.575689C34D97BA9D750C7B40CC63B427E40E7838 & SVER = 3 & ratebypass = да и источник = YouTube & истекают = 1335903378 & ключ = yt1 & ipbits = 8 & р = U0hSSllLUV9MUkNOMl9RRVVEOnduVjJoRkFBMDBn & ID = 8fb5ca7aa1a31f5e ')

05-01 15:58:25.484: V/ChromiumHTTPDataSource(31648): подключение от имени uid 10101

05-01 15:58:25.484: I/ChromiumHTTPDataSource(31648): подключиться к http://oo.preferred.mad01s04.v16.lscache3.c.youtube.com/videoplayback?upn=35Zn4tL7Ibc&sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&Fexp=900147&ITAG=18&Ip=85.0.0.0&подпись=AACE528D596873408192BCDDF4ECFC7DDFD68EBB.575689C34D97BA9D750C7B40CC63B427E40E7838&SVER=3&ratebypass=даиисточник=YouTube&истекают=1335903378&ключ=yt1&ipbits=8&р=U0hSSllLUV9MUkNOMl9RRVVEOnduVjJoRkFBMDBn&ID=8fb5ca7aa1a31f5e @ 0

05-01 15:58:26.226: I/ChromiumHTTPDataSourceSupport(31648): сервер ответил со статусом http 403

05-01 15:58:26.226: I/AwesomePlayer(31648): mConnectingDataSource->connect() вернул -1004

05-01 15:58:26.226: E/MediaPlayer(31565): ошибка (1, -1004)

05-01 15:58:26.242: E/MediaPlayer(31565): ошибка (1,-1004)

05-01 15:58:26.242: E/RS(31565): ОШИБКА воспроизведения MediaPlayer

05-01 15:58:26.242: V/(31565): Ошибка носителя, неизвестная ошибка -1004

05-01 15:58:26.242: I/RS(31565): Воспроизведение MediaPlayer ЗАВЕРШЕНО

Я надеюсь, что вы можете помочь. Спасибо!


person jesuslinares    schedule 01.05.2012    source источник
comment
У меня такая же проблема при воспроизведении ссылки на видео rtsp через mediaPlayer. вы нашли какое-нибудь решение?   -  person Usama Sarwar    schedule 17.05.2012


Ответы (2)


1) попробуйте без статического конструктора 2) создайте объект mp со стандартным конструктором, попробуйте использовать setDataSource(), prepareAsync() и т. д. 3) Перехват нулевых и недопустимых исключений состояния.

В MediaPlayer API есть некоторые ошибки и ограничения.

Пожалуйста, игнорируйте isCanceleld() в моем примере кода.

образец кода:

if (mp == null && isCancelled() != true) {
                    mp = new MediaPlayer();
                    mp.setDataSource(chnlUrlParam);
                    mp.prepareAsync();
                    mp.start();

// Log.d("doInBackground", "mp.getCurrentPosition() после mp.start() "+ mp.getCurrentPosition()); // Log.d("doInBackground","mp.getDuration() после mp.start() " + mp.getDuration()); mp.setOnBufferingUpdateListener (новый OnBufferingUpdateListener() {

                        @Override
                        public void onBufferingUpdate(MediaPlayer mp,
                                int percent) {
                            Log.d("TAG_Async", "percent: " + percent);
                        }
                    });

                }

                if (mp == null) {
                    Log.d(TAG_Async,"### Failed to create media player from static constructor ###");
                }
person Sree Rama    schedule 12.06.2012

На самом деле есть ошибка - это ошибка URL-адреса потоковой передачи, из-за которой эта проблема существует ... в противном случае она хорошо работает в видеопросмотре.

Вы должны добавить подпись YouTube после URL-адреса.

Я работал над этим, и это работает отлично.

person user1381420RKS    schedule 18.10.2012