1

動画を再生するためのアプリを作成しようとしています。私は2つの問題を抱えています:

1)私はYoutubeのリンクを持っています:rtsp://そして私はします:

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

その後、ビデオが再生されません...ただし、「ビデオビュー」を使用すると機能します。問題は、「mediaplayer」が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.575689 %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 = YES&ソース=ユーチューブ&期限切れ= 1335903378&キー= YT1&ipbits = 8&CP = U0hSSllLUV9MUkNOMl9RRVVEOnduVjJoRkFBMDBn&ID = 8fb5ca7aa1a31f5e '=)

05-01 15:58:25.484:V / ChromiumHTTPDataSource(31648):uid10101に代わって接続します

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 =&はいソースを= =ユーチューブ&= 1335903378&キー= YT1&ipbits = 8&CP = 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の再生が完了しました

お役に立てば幸いです。ありがとう!

4

2 に答える 2

0

実際には、この問題が原因でストリーミング URL エラーが発生しています。それ以外の場合は、ビデオビューでうまく機能します。

URLの後にYouTubeの署名を追加する必要があります。

私はそれに取り組みましたが、完璧に機能します。

于 2012-10-18T06:15:34.620 に答える
0

1) 静的コンストラクターなしで試す 2) 標準コンストラクターで mp オブジェクトを作成し、setDataSource()、prepareAsync() などを使用してみてください。 3) null および不正な状態の例外をキャッチします。

MediaPlayer api にはいくつかのバグと制限があります。

サンプル コードの isCanceleld() は無視してください。

サンプルコード:

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

// Log.d("doInBackground", "mp.getCurrentPosition() after mp.start() "+ mp.getCurrentPosition()); // Log.d("doInBackground","mp.getDuration() after 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 ###");
                }
于 2012-06-12T09:45:05.893 に答える