У меня есть действие, которое воспроизводит потоковое видео и кодируется следующим образом:
Компоновка
<?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. Есть идеи?