Невозможно потоковое видео

Вот мой код видеообзора:

    Uri uri = Uri.parse(vidurl);
    MediaController mediaController = new MediaController(this);
    videoView.setMediaController(mediaController);
    videoView.requestFocus();
    videoView.setVideoURI(uri);

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            videoView.start();
        }
    });

Видео, которые я пытаюсь воспроизвести, хранятся на моем сервере. Они отправляются туда из одного приложения, используя пользовательскую камеру. Вот параметры захвата видео: (На всякий случай что-то не так с ними, я пробовал каждую комбинацию, VP8 Format сделал поток, за исключением того, что на выходе не было звука и вращался вбок)

    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

    if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
        mMediaRecorder.setOrientationHint(90);
    } else {
        mMediaRecorder.setOrientationHint(270);
    }

    mMediaRecorder.setVideoSize(list.get(sizex).width, list.get(sizex).height);
    mMediaRecorder.setVideoEncodingBitRate(1500000);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    mMediaRecorder.setVideoFrameRate(30);
    mMediaRecorder.setMaxDuration(15000);
    mMediaRecorder.setOutputFile(getVidFile().getAbsolutePath());

Я пытался решить это в течение долгого времени, но теперь я не в курсе. Я хотел бы передать эти видеоролики в виде видео. Но вместо этого, я должен ждать 10-20 секунд. После этого запускается либо видео, либо сообщение об ошибке, которую невозможно воспроизвести.

Дополнительная информация:

Минимальный размер проекта sdk равен 18, но я могу его изменить, если это поможет.

Мое тестовое устройство - Asus Zenfone 2 (5.0)

Я не тестировал никакое другое устройство

Видео хранятся в хостинге Linux. www.mydomain.com/videos/

Видеокодирование - это базовый профиль h264

Моовский атом находится наверху (после fytp (или что-то в этом роде)), как рекомендовано

Я пробовал использовать сторонние видеоплееры, такие как exomedia

Некоторые видео работают, например:

http://www.html5videoplayer.net/videos/toystory.mp4

Я проверил, что кодирование видео. Он закодирован в h264 MAIN PROFILE (из моего исследования, основной профиль не поддерживается для большинства устройств Android, рекомендуется использовать базовый профиль) И MOOV ATOM IS ПОСЛЕДНЕЕ ПОЛОЖЕНИЕ. Но это видео играет просто отлично... dafuq?

РЕДАКТИРОВАТЬ: Свойства этого звукового видео, которое работает:

1

2

И вот видео, снятое из моего приложения с параметрами, приведенными выше (обратите внимание, что атом moov находится в нужном месте, но это все еще не работает)

3

4

Ответы

Ответ 1

Какой сетевой протокол используется, когда ваше видео передается с сервера на приложение? Возможно, сетевой протокол, который вы используете, не поддерживается VideoView. VideoView поддерживает только ограниченные протоколы. Согласно андроидным документам на "Поддерживаемые медиаформаты":

Поддерживаются следующие сетевые протоколы для воспроизведения аудио и видео:

- RTSP (RTP, SDP)

- прогрессивная потоковая передача HTTP/HTTPS Протокол черновика HTTPS/HTTPS:

MPEG-2 TS media files only

Protocol version 3 (Android 4.0 and above)

Protocol version 2 (Android 3.x)

Not supported before Android 3.0

- Примечание: HTTPS не поддерживается до Android 3.1.