Android 2.2 VideoView «Извините, видео не воспроизводится» с H264 .MP4 - PullRequest
1 голос
/ 05 сентября 2011

У меня есть действие, которое воспроизводит потоковое видео и кодируется следующим образом:

Компоновка

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <VideoView android:id="@+id/myVideo"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_gravity="center"/>
</LinearLayout>

Активность

public class PlayVideo extends Activity {

    public ProgressDialog progressDialog;

    /** Called when the activity is first created. */
    @Override
    public void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.video );
        progressDialog = ProgressDialog.show( this, "", "Loading...", true );
        Intent i = getIntent();
        startVideo( i.getStringExtra( "videoUrl" ) );
    }

    public void startVideo( String videoUrl ) {
        final VideoView videoView = ( VideoView ) findViewById( R.id.myVideo );

        videoView.setMediaController( new MediaController( this ) );
        videoView.setVideoURI( Uri.parse( videoUrl ) );

        videoView.setOnPreparedListener( new OnPreparedListener() {
            public void onPrepared( MediaPlayer arg0 ) {
                progressDialog.dismiss();
                videoView.requestFocus();
                videoView.start();
            }
        } );
    }    
}

Это прекрасно работает на большинстве устройств, однако мой клиент имеет два устройства, одно из которых - Samsung Galaxy Ace 2.2. А другой - Ideos U8150 (работает под управлением 2.2), видео не будет воспроизводиться на этих двух устройствах. Ideos имеет ошибку, которая появляется и говорит: «Извините, это видео не может быть воспроизведено», в то время как звук воспроизводится в фоновом режиме, а Samsung просто имеет ту же ошибку, однако при подключении к ddms единственный выход, который может указывать на ошибку:

09-05 15:11:03.461: ERROR/QCvdec(95): Omx Flush issued when vdec is not initialized yet.
09-05 15:11:03.461: ERROR/QCvdec(95): Unsupported profile, level, or widht, height
09-05 15:11:03.461: ERROR/QCvdec(95): Unsupported clip
09-05 15:11:03.461: ERROR/QCvdec(95): Omx Flush issued when vdec is not initialized yet.
09-05 15:11:03.461: ERROR/QCvdec(95): Empty this buffer in Invalid State
09-05 15:11:03.461: ERROR/QCvdec(95): Omx Flush issued when vdec is not initialized yet.

Я закодировал видео в H264 + AAC, используя настройки, описанные здесь: http://developer.android.com/guide/appendix/media-formats.html и убедился, что атомы moov находятся в нужном месте с помощью qt-fastart и т. Д. См .: http://www.sciencelearn.org.nz/content/download/7366/430467/version/14/file/08-future-of-radio-telescopes-sllg-ws.mp4

Видео отлично воспроизводится на 2.3.3, Motorola Xoom, Galaxy S, Galaxy Tab и HTC Desire. Есть идеи?

1 Ответ

1 голос
/ 09 сентября 2013

См. Поддержку видеокодека по умолчанию для Android, http://developer.android.com/guide/appendix/media-formats.html, H.263 MPEG-4 (.mp4), хороший выбор для 2.2 устройств ,,,

Или для альтернативы обратитесь к вопросу: FFmpeg на Android

...