Потоковое видео в Android: работа с форматом и заголовками - PullRequest
2 голосов
/ 06 мая 2011

В настоящее время я пытаюсь транслировать потоковое видео с устройства Android.К сожалению, я не могу прочитать поток, полученный через сеть.

Я выяснил, что проблема связана с форматом, используемым для записи видео (ISO Media, MPEG v4 system, 3GPP).

Вот как я инициализирую рекордер:

    // Sources
    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

    // HD
    CamcorderProfile highProfile = CamcorderProfile
            .get(CamcorderProfile.QUALITY_HIGH);
    recorder.setProfile(highProfile);
    recorder.setOutputFile(PATH);

Если видео в данный момент снимается (все еще пишет на FS), вот что я получаю, когда читаю начало файла (я получилэтот файл с $ adb pull /sdcard/video):

MacBook-Romain:result rbochet$ hexdump video-current.mp4 | head -2
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000010 00 00 00 00 00 00 00 00 00 00 00 08 6d 64 61 74

Когда запись заканчивается, заголовок выглядит так:

MacBook-Romain:result rbochet$ hexdump video.mp4 | head -2
0000000 00 00 00 18 66 74 79 70 33 67 70 34 00 00 03 00
0000010 33 67 70 34 33 67 70 36 00 07 56 83 6d 64 61 74

Дело в том, что этот метод не самый лучший для прямой трансляции, так как мы просто не знаем, насколько большим и длинным будет файл…

Вопрос: Как я могу сделать реальную потоковую передачу?Одним из решений, которое я вижу, является отправка небольших кусков, но я думаю, что это решение на самом деле отстой ... Должно существовать что-то лучшее, так как такие программы, как SipDroid, могут выполнять потоковую передачу.Если вы в состоянии понять их код, можете ли вы объяснить это?Я посмотрел на код , но мне было не так ясно.

Код будет выпущен как открытый исходный код, поэтому ваша помощь будет приятна всем, кто ищетспособ решить эту сложную ситуацию (я знаю, что в SO много похожих тем).

Вот код основного приложения камеры: https://github.com/rbochet/Simple-Camera-App

Спасибо за вашу помощь.

...