Приложение Camera2 на основе медиа-рекордера записывает видео низкого качества.Кто-нибудь знает почему? - PullRequest
0 голосов
/ 05 февраля 2019

Я разрабатывал приложение для камеры, используя камеру 2 и принимая коды из этих серий видео: https://www.youtube.com/watch?v=69J2ycNCtpE&lc=z23lu3jo4xuwzjataacdp43bf4ywaag5x2tpbiljkf1w03c010c Мне пришлось обновить коды с разрешениями времени выполнения.

Качество видео, которое я получаюэто ужасно и я не знаю почему.Я пытался играть с выходным форматом, видеокодером, битрейтом (в соответствии с тем, что я нашел в других ответах), но качество не меняется, и оно намного хуже по сравнению с исходным приложением камеры.При сравнении двух похожих видео одинаковой длины, разрешения одинаковы (1080x1920), но размер видео, полученного с помощью этого приложения, составляет 0,95 МБ, а у видео, снятого с помощью оригинального приложения камеры, - 12 МБ.Понятно, что-то там не работает, но я не знаю что.PS: это явление, кажется, не происходит с парнем из учебника, когда он пытается приложение на своем телефоне.Любая помощь будет высоко ценится!

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Если вы попробуете официальный пример видеозаписи, Camera2Video , это также записывает плохое видео?

Если это так, вероятно, имеется ошибка устройства, из-за которой оно игнорирует настроенное качество видео.Если Camera2Video работает нормально, посмотрите, чем он отличается от вашего собственного приложения.

0 голосов
/ 05 февраля 2019

Я рекомендую вам посмотреть этот образец https://github.com/googlesamples/android-Camera2Basic

Может быть, с такой конфигурацией можно решить

// For still image captures, we use the largest available size.
            Size largest = Collections.max(
                    Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)),
                    new CompareSizesByArea());
            mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(),
                    ImageFormat.JPEG, /*maxImages*/2);
            mImageReader.setOnImageAvailableListener(
                    mOnImageAvailableListener, mBackgroundHandler);
...