音频/ mp4文件无法在棒棒糖前设备上播放

时间:2015-11-19 09:20:20

标签: android audio mp4

我正在尝试播放此文件:

 https://r2---sn-o097zne7.googlevideo.com/videoplayback?id=f7f0d0f6c9fc16f0&itag=141&source=youtube&requiressl=yes&nh=IgpwcjAxLnNqYzA3KgkxMjcuMC4wLjE&pl=21&mv=u&ms=au&mm=31&mn=sn-o097zne7&ratebypass=yes&mime=audio/mp4&gir=yes&clen=6859545&lmt=1393625541659713&dur=215.132&fexp=9408087,9408208,9408710,9413278,9416126,9416984,9417683,9418044,9418204,9419444,9419966,9420452,9422150,9422565,9422596,9422618,9422676,9423420,9423510,9423662,9423991,9424257,9424298,9424508&upn=fMq3m7OnpOU&sver=3&signature=4DD9C70769C99B2B769A9A4DEB2D2F750128D10A.7556708E037F26F71D430C20C897957676CBACB9&mt=1447923721&key=dg_yt0&ip=198.57.171.34&ipbits=0&expire=1447945674&sparams=ip,ipbits,expire,id,itag,source,requiressl,nh,pl,mv,ms,mm,mn,ratebypass,mime,gir,clen,lmt,dur
在使用Android 4.2.2的设备上

但播放无法启动。在日志中,我收到以下消息;

    11-19 12:07:13.695 23678-23678/com.radioafrica.music V/MediaPlayer-JNI: reset
    11-19 12:07:13.695 23678-23678/com.radioafrica.music V/MediaPlayer: reset
    11-19 12:07:13.703 23678-23678/com.radioafrica.music V/MediaPlayer-JNI: setAudioStreamType: 3
    11-19 12:07:13.703 23678-23678/com.radioafrica.music V/MediaPlayer: MediaPlayer::setAudioStreamType
    11-19 12:07:13.718 23678-23678/com.radioafrica.music V/MediaPlayer: setVideoSurfaceTexture
    11-19 12:07:13.718 23678-23678/com.radioafrica.music V/MediaPlayer: prepareAsync
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: message received msg=3, ext1=3, ext2=0
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: buffering 3
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: callback application
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: back from callback
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: message received msg=200, ext1=973, ext2=0
    11-19 12:07:26.203 23678-23689/com.radioafrica.music W/MediaPlayer: info/warning (973, 0)
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: callback application
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: back from callback
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: message received msg=5, ext1=0, ext2=0
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: New video size 0 x 0
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: callback application
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: back from callback
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: message received msg=1, ext1=0, ext2=0
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: prepared
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: callback application
    11-19 12:07:26.203 23678-23689/com.radioafrica.music V/MediaPlayer: back from callback
    11-19 12:07:26.203 23678-23678/com.radioafrica.music I/MediaPlayer: Info (973,0)
    11-19 12:07:26.203 23678-23678/com.radioafrica.music I/MediaPlayer: Don't send intent. msg.arg1 = 0, msg.arg2 = 0
    11-19 12:07:26.203 23678-23678/com.radioafrica.music V/MediaPlayer-JNI: setVolume: left 1.000000  right 1.000000
    11-19 12:07:26.203 23678-23678/com.radioafrica.music V/MediaPlayer: MediaPlayer::setVolume(1.000000, 1.000000)
    11-19 12:07:26.210 23678-23678/com.radioafrica.music V/MediaPlayer: isPlaying: 0
    11-19 12:07:26.210 23678-23678/com.radioafrica.music V/MediaPlayer-JNI: isPlaying: 0
    11-19 12:07:26.210 23678-23678/com.radioafrica.music V/MediaPlayer-JNI: start
    11-19 12:07:26.210 23678-23678/com.radioafrica.music V/MediaPlayer: start
    11-19 12:07:26.414 23678-23690/com.radioafrica.music V/MediaPlayer: message received msg=2, ext1=0, ext2=0
    11-19 12:07:26.414 23678-23690/com.radioafrica.music V/MediaPlayer: playback complete
    11-19 12:07:26.414 23678-23690/com.radioafrica.music V/MediaPlayer: callback application
    11-19 12:07:26.414 23678-23690/com.radioafrica.music V/MediaPlayer: back from callback
    11-19 12:07:27.203 23678-23689/com.radioafrica.music V/MediaPlayer: message received msg=3, ext1=3, ext2=0
    11-19 12:07:27.203 23678-23689/com.radioafrica.music V/MediaPlayer: buffering 3
    11-19 12:07:27.203 23678-23689/com.radioafrica.music V/MediaPlayer: callback application
    11-19 12:07:27.203 23678-23689/com.radioafrica.music V/MediaPlayer: back from callback

似乎文件确实缓冲但没有开始播放,而是播放器调用播放完成并跳到下一首歌曲。

但是,该文件在Android 5及更高版本上播放没有任何问题。可能有什么问题?

播放器代码:

try {
//manualUrl is the link mentioned above
                    if (manualUrl != null) {
                        createMediaPlayerIfNeeded();
                        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        mPlayer.setDataSource(manualUrl);
                        mIsStreaming = manualUrl.startsWith("http:") || manualUrl.startsWith("https:");
                mSongTitle = track.getTitle();
                mSongArtist = track.getArtist();

                //mState = State.Preparing;
                PrefUtils.putString(PrefUtils.STATE, PREPARING);

                MediaButtonHelper.registerMediaButtonEventReceiverCompat(
                        mAudioManager, mMediaButtonReceiverComponent);

                if (mRemoteControlClientCompat == null) {
                    Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
                    intent.setComponent(mMediaButtonReceiverComponent);

                    mRemoteControlClientCompat = new RemoteControlClientCompat(
                            PendingIntent.getBroadcast(MusicService.this, 0, intent, 0));

                    RemoteControlHelper.registerRemoteControlClient(mAudioManager,
                            mRemoteControlClientCompat);
                }

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                    mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);

                    mRemoteControlClientCompat.setTransportControlFlags(
                            RemoteControlClient.FLAG_KEY_MEDIA_PLAY |
                                    RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
                                    RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
                                    RemoteControlClient.FLAG_KEY_MEDIA_STOP);
                }

                mRemoteControlClientCompat.editMetadata(true)
                        .putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, track.getArtist())
                        .putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, "")
                        .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, track.getTitle())
                        .apply();

                mPlayer.prepareAsync();

                if (mIsStreaming)
                    mWifiLock.acquire();
                else if (mWifiLock.isHeld())
                    mWifiLock.release();

                sendBroadcast(mSongTitle, "Loading...", true);

                if (duration != 0) {
                    Music.setCurrentTrackDuration(duration);
                }
            } else {
                playSong(Music.getCurrentPlaylist(), true);

                Toast.makeText(MusicService.this, "Track unavailable, playing next tune.", Toast.LENGTH_SHORT).show();
            }

        } catch (IllegalArgumentException | SecurityException | IOException | IllegalStateException | NullPointerException e) {
            playSong(Music.getCurrentPlaylist(), true);
            Toast.makeText(MusicService.this, "Track unavailable, playing next tune.", Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }

0 个答案:

没有答案