Подтвердить что ты не робот

Сохранение видеозаписи в режиме реального времени на SD-карте с помощью Local Socket в Android - Видео не воспроизводится

Попытка захватить видео и сохранить его на SD-карте в форматах Mp4/3gp с использованием локального сокета. Возможность записывать байты по байтам на SD-карту, но видеофайл не воспроизводится. Я рассмотрел множество примеров:

https://github.com/fyhertz/spydroid-ipcamera

https://github.com/mconf/sipdroid

и многое другое. Я заметил, что люди предполагают, что это может быть проблемой заголовка файла. Я попытался пропустить эти данные "mdat" тоже из заголовка:

private void skipHeader() throws IOException {
    // Skip all atoms preceding mdat atom
    byte[] buffer = new byte[3];
    while (true) {
        while (mReceiver.getInputStream().read() != 'm');
        mReceiver.getInputStream().read(buffer,0,3);
        if (buffer[0] == 'd' && buffer[1] == 'a' && buffer[2] == 't') break;
    }
}

Наконец-то ничего не работало для меня. Что мне нужно сделать для создания этих видеофайлов с помощью Local Socket

4b9b3361

Ответ 1

Из вашего объяснения, что вы имеете в виду для реализации, является экранный рекордер. Конечно, вы намерены, что система будет реализована как часть технологии, предлагаемой вашим программным обеспечением.

enter image description here

В таком случае наилучшим подходом является улучшение того, что уже существует, включение кода с новыми функциями или новая производительность и предоставление кредита исходному источнику, с которым вы столкнулись и который входит в состав вашего программного обеспечения, как и ожидалось. Это красота Open Source, которая позволяет повторно использовать, распространять и улучшать код.

enter image description here

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

enter image description here

Также важно достичь хорошей скорости, позволяющей по меньшей мере захватить 20 экранов в секунду в Android для разных размеров экрана, обеспечивая четкое разрешение и низкое использование ЦП. Все эти характеристики сохранят ваше решение стабильным и все еще выглядящим твердотельным.

enter image description here

Я думаю, что лучший подход, который вы можете предпринять, который сэкономит время и массу головных болей, будет включать код "sji-android-capture-capture" как часть вашего проекта. Если ваши целевые устройства - Android 4.2 ~ 4.4, вам хорошо идти, поскольку поддерживает эти версии Android. Более подробную информацию и исходный код вы найдете в репозиторий Github. Кроме того, вы можете использовать Android ScreenCapture Sample для захвата экрана устройства в режиме реального времени.