Приложение Camera2 на основе медиа-рекордера записывает видео низкого качества. Кто-нибудь знает почему?
Я разрабатывал приложение для камеры с использованием камеры 2 и принимал коды из этих видеороликов: https://www.youtube.com/watch?v=69J2ycNCtpE&lc=z23lu3jo4xuwzjataacdp43bf4ywaag5x2tpbiljkf1w03c010c Мне пришлось обновить коды со временем выполнения.
Качество видео, которое я получаю, ужасно, и я не знаю почему. Я пытался играть с выходным форматом, видеокодером, битрейтом (в соответствии с тем, что я нашел в других ответах), но качество не меняется, и оно намного хуже по сравнению с исходным приложением камеры. При сравнении двух похожих видео одинаковой длины, разрешения одинаковы (1080x1920), но размер видео, полученного с помощью этого приложения, составляет 0,95 МБ, а у видео, снятого с помощью оригинального приложения камеры, - 12 МБ. Понятно, что-то там не работает, но я не знаю что. PS: это явление, кажется, не происходит с парнем из учебника, когда он пытается приложение на своем телефоне. Любая помощь будет высоко ценится!
2 ответа
Если вы попробуете официальный пример видеозаписи Camera2Video, он также записывает плохое видео?
Если это так, вероятно, имеется ошибка устройства, из-за которой оно игнорирует настроенное качество видео. Если Camera2Video работает нормально, то посмотрите, чем она отличается от вашего собственного приложения.
Я рекомендую вам посмотреть этот образец 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);