8. Легкий путь: MediaRecorder
- MediaRecorder объект
- MediaRecorder объект
- Источник видео/аудио
- Путь к файлу с результатами записи
- Источник видео/аудио
- Prepare
- Start
- Путь к файлу с результатами записи
- Stop
- Release
- Prepare
- Start
- Stop
- Release
10. Пытаемся прочитать файл
- Описание типа файла
- Секция с бинарными данными (в семплах)
- Таблица описания семплов (оффсет, длина)
А почему таблица
описания идет в конце?
А почему таблица
Начали запись....
Мы семплов пустая???все
же должны читать
Читаем файл...
последовательно
12. Процесс записи файла
Секция данных (aka data atom)
raw 1 raw 2 raw 3 raw 4
raw 5 raw 6 raw 7 raw 8
raw 9 raw 10 raw 11 raw 12
raw 13 raw 14 raw 15 raw 16
Секция расположения данных (aka data alloc atom)
alloc 1 alloc 2 alloc 3 alloc 4
alloc 5 alloc 6 alloc 7 alloc 8
alloc 9 alloc 10 alloc 11 alloc 12
alloc 13 alloc 14 alloc 15 alloc 16
21. А почему мы не можем
использовать драйвера linux?
Сетевой драйвер Video4Linux драйвер
Отсутствие прав у пользователя
22. Большая картинка
Драйвера Linux
RAW RAW
Аудио поток Видео поток
RAW RAW
Аудио Видео
пайп пайп
23. Большая картнка 2
Аудио Видео пайп
пайп
Тоже отдельный
поток
RTP packages
Internets
Пайп с RTP
Наше приложение
пакетами
24. Выводы
- Видео и аудио стриминг в андроиде - это
реальность
- Не все так просто, как может показаться
- Есть слабые места в любой реализации
- Не бойтесь экспериментировать