2

Итак, я думаю, что было много вопросов о том, что я прошу. Но кто-нибудь нашел решение или библиотеку, которая может приостановить во время записи фильма? Или есть ли какие-либо доступные apis, которые являются стабильными и могут конкатенировать несколько файлов mp4?mediarecorder как приостановить и возобновить запись видео

ответ

2

Mp4Parser - это Java-библиотека, которая позволяет вам манипулировать потоками h264 и aac. это не кодер или декодер. но вы можете конкатенировать или обрезать поток, переключать потоки или добавлять потоки в контейнер mp4 и т. д.

Для реализации функции паузы/возобновления вы можете использовать MediaRecorder для создания нового записанного файла каждый раз, когда пользователь нажимает паузу (а затем возобновляет). , поэтому у вас будет несколько файлов mp4, которые вы можете сшить вместе с помощью Mp4Parser.

Проблема с этим решением:

Каждый поток в Записанный файл mp4 будет иметь разную длину (разница будет в ~ 100 мс по крайней мере, это то, что я заметил.). когда вы вышиваете более 4-5 файлов, аудио и видео выходят из синхронизации.

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

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