Работа с мультимедиа
Для работы с видеоматериалами в стандартном наборе виджетов Android определен класс VideoView, который позволяет воспроизводить видео.
Какие типы видеофайлов можно использовать? Android поддерживает большинство распространенных типов видеофайлов, в частности, 3GPP (.3gp), WebM (.webm), Matroska (.mkv), MPEG-4 (.mp4).
VideoView может работать как с роликами, размещенными на мобильном устройстве, так и с видеоматериалами из сети. В данном случае используем видеоролик, размещенный локально. Для этого добавим в проект какой-нибудь видеоролик. Обычно видеоматериалы помещают в проекте в папку res/raw . По умолчанию проект не содержит подобной папки, поэтому добавим в каталог res подпапку raw. Для этого нажмем на папку res правой кнопкой мыши и в появившемся меню выберем New -> Android Resource Directory :
Затем в появившемся окне в качестве типа папки укажем raw (что также будет использоваться в качестве названия папки):

После добавления папки raw скопируем в нее какой-нибудь видеофайл:

Теперь определим функционал для его воспроизведения. Для этого в файле activity_main.xml укажем следующий код:
Для управления воспроизведением видео здесь определены три кнопки: для запуска видео, для паузы и для его остановки.
И также изменим код MainActivity :
package com.example.mediaapp; import androidx.appcompat.app.AppCompatActivity; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.VideoView; public class MainActivity extends AppCompatActivity < VideoView videoPlayer; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoPlayer = findViewById(R.id.videoPlayer); Uri myVideoUri= Uri.parse( "android.resource://" + getPackageName() + "/" + R.raw.cats); videoPlayer.setVideoURI(myVideoUri); >public void play(View view) < videoPlayer.start(); >public void pause(View view) < videoPlayer.pause(); >public void stop(View view) < videoPlayer.stopPlayback(); videoPlayer.resume(); >>
Во-первых, чтобы управлять потоком воспроизведения, нам надо получить объект VideoView: videoPlayer = findViewById(R.id.videoPlayer);
Чтобы указать источник воспроизведения, необходим объект Uri . В данном случае с помощью выражения Uri myVideoUri= Uri.parse(«android.resource://» + getPackageName() + «/» + R.raw.cats); получаем адрес видеоролика внутри пакета приложения.
Строка URI имеет ряд частей: сначала идет Uri-схема ( http:// или как здесь android.resource:// ), затем название пакета, получаемое через метод getPackageName(), и далее непосредственно название ресурса видео из папки res/raw , которое совпадает с названием файла.
Затем этот Uri устанавливается у videoPlayerа: videoPlayer.setVideoURI(myVideoUri);
Чтобы управлять видеопотоком, обработчики нажатия кнопок вызывают соответствующее действие:
public void play(View view) < videoPlayer.start(); >public void pause(View view) < videoPlayer.pause(); >public void stop(View view)
Метод videoPlayer.start() начинает или продолжает воспроизведение.
Метод videoPlayer.pause() приостанавливает видео.
Метод videoPlayer.stopPlayback() полностью останавливает видео.
Метод videoPlayer.resume() позволяет снова начать воспроизведение видео с начала после его полной остановки.
При запуске приложения мы сможем с помощью кнопок управляь воспроизведением:

MediaController
С помощью класса MediaController мы можем добавить к VideoView дополнительно элементы управления. Для этого изменим код MainActivity:
package com.example.mediaapp; import androidx.appcompat.app.AppCompatActivity; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.VideoView; import android.widget.MediaController; public class MainActivity extends AppCompatActivity < VideoView videoPlayer; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoPlayer = findViewById(R.id.videoPlayer); Uri myVideoUri= Uri.parse( "android.resource://" + getPackageName() + "/" + R.raw.cats); videoPlayer.setVideoURI(myVideoUri); MediaController mediaController = new MediaController(this); videoPlayer.setMediaController(mediaController); mediaController.setMediaPlayer(videoPlayer); >public void play(View view) < videoPlayer.start(); >public void pause(View view) < videoPlayer.pause(); >public void stop(View view) < videoPlayer.stopPlayback(); videoPlayer.resume(); >>
И если мы запустим приложения, то при касании по VideoView внизу появятся инструменты для управления видео. В прицнипе теперь и кнопки, которые мы создали ранее, не нужны:

Воспроизведение файла из интернета
VideoView поддерживает воспроизведение файла из интернета. Но чтобы это стало возможно, необходимо в файле AndroidManifest.xml установить разрешение android.permission.INTERNET , так как мы получаем данные из интернета:
Далее изменим класс MainActivity:
package com.example.mediaapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.VideoView; public class MainActivity extends AppCompatActivity < VideoView videoPlayer; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoPlayer = findViewById(R.id.videoPlayer); videoPlayer.setVideoPath("http://techslides.com/demos/sample-videos/small.mp4"); >public void play(View view) < videoPlayer.start(); >public void pause(View view) < videoPlayer.pause(); >public void stop(View view) < videoPlayer.stopPlayback(); videoPlayer.resume(); >>
Здесь нам надо в метод videoPlayer.setVideoPath() передать интернет-адрес воспроизводимого файла.
Делаем экран загрузки Android приложения правильно
Splash Screen (прим.: тут и далее — экран загрузки) просто отнимает ваше время, верно? Как Android разработчик, когда я вижу экран загрузки, я тут же представляю как некоторые плохие разработчики добавляют трехсекундную задержку в коде.
Я должен смотреть на какое-то изображение в течении нескольких секунд, и до тех пор я не могу использовать приложение. И я должен это делать каждый раз после запуска приложения. Я знаю какое приложение я запустил. Я знаю что оно делает. Просто позвольте мне использовать его!
Что рекомендует Google
Вы будете удивлены, узнав что сторонники Google используют Splash Screen. Это описано прямо вот тут, в спецификации к Material Design.
Так было не всегда. Google был против Splash Screen, и даже назвал его анти-паттерном.

Что же я вижу?
Правильный Splash Screen
Я считаю, что Google не противоречит сам себе. Старый совет и новые рекомендации хорошо сочетаются. (Тем не менее, все-таки не очень хорошая идея использовать экран загрузки который отнимает время пользователя. Пожалуйста, не делайте так)
Однако, Android приложениям требуется некоторое количество времени для запуска, особенно при холодном запуске. Существует задержка которую вы не можете избежать. Вместо того чтобы показывать пустой экран, почему бы не показать пользователю что-то хорошее? Именно за этот подход Google и выступает. Не стоит тратить время пользователя, но не показывайте ему пустой, ненастроенный раздел приложения, когда он запускает его впервые.
Если вы посмотрите на последние обновления Google приложений, вы увидите подобный способ использования экрана загрузки. Например, взгляните на приложение YouTube:
Количество времени, которые вы тратите на просмотр Splash Screen, точно соответствует количеству времени, которое требуется приложению для запуска. При холодном запуске, это означает что Splash Screen будет виден дольше. А если приложение уже закэшировано, заставка исчезнет почти сразу.
Реализация Splash Screen
Реализация Splash Screen правильным способом немного отличается от того что вы можете себе приставить. Представление Splash Screen, который вы видите, должно быть готово немедленно, даже прежде чем вы можете раздуть (прим.: inflate) файл макета в вашей Splash Activity (прим.: Activity — активность, деятельность).
Поэтому мы не будем использовать файл макета. Вместо этого мы укажем фон нашего Splash Screen в фоне темы своей Activity. Для этого, сначала необходимо создать XML drawable в res/drawable.
Примечание: весь код ниже доступен на GitHub.
Здесь я задал цвет фона и изображение.
Дальше, вы должны установить этот drawable в качестве фона для темы вашего Splash Screen Activity. Перейдите в файл styles.xml и добавьте новую тему для Splash Screen Activity:
В вашей новой SplashTheme установите в качестве фона ваш XML drawable. И установите эту тему в своей Splash Screen Activity в вашем AndroidManifest.xml:
И, наконец, ваш класс SplashActivity должен перенаправить вас в ваше основное Activity:
public class SplashActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); >>
Обратите внимание, что вы не настраивает вид для SplashActivity. Представление берется непосредственно из темы. Когда вы задаете вид вашей Splash Screen Activity через тему, он доступен немедленно.
Если у вас есть файл макета для вашей Splash Activity, он будет показан только после того как ваше приложение будет полностью инициализировано, а это что очень поздно. Ведь мы хотим чтобы Splash Screen отображался только небольшой промежуток времени, до того как приложение будет инициализировано.
Делаем это правильно
Как только шаги выше завершены, вы получите Splash Screen реализованный правильным путем:
Вооруженные этим знанием, заставьте ваш Splash Screen работать правильно. Не тратьте время пользователей попусту, но дайте им то, на что им будет приятно смотреть пока они ждут.
- android development
- splash screen
- launch screens
- Программирование
- Разработка мобильных приложений
- Разработка под Android
Как при загрузке android запустить видео файл

Если вы владелец двух смартфонов — одного на iOS и одного на Android, то в курсе, насколько порой сложно обмениваться файлами между ними. Разобравшись с синхронизацией между гаджетами можно столкнуться с другой проблемой — невозможностью воспроизвести на Андроид-смартфоне видео, снятое на Айфон. Ролик либо тормозит, либо вообще не открывается, что может быть критичным, если запись важна для работы. В нашем гайде мы объясним, что нужно сделать, чтобы не попасть в подобные ситуации.
Сжать видео на Айфоне
- откройте видео в приложении;
- настройте разрешение и частоту кадров — желательно выбрать Full HD 30 FPS;
- тапните по кнопке «Compress», чтобы начать конвертацию.
В процессе изменится расширение ролика — это будет формат MOV. Вместе с разрешением уменьшится размер, вы сможете быстрее передать файл на другое устройство.
Еще один способ быстро сжать видео — отправить его через Telegram. Используйте функцию быстрой отправки, в процессе загрузки приложение самостоятельно переконвертирует видео. Плюс, у вас тоже будет возможность настроить степень сжатия, правда, максимальным значением будет 720p. Также вы можете отключить звук и кадрировать ролик.
Изменить формат видео
В отдельных случаях проблема возникает, потому что гаджет на «зеленом роботе» не может воспроизвести формат HEIF, HEVC или ProRes. Если причина в этом, помогут два варианта:
- Скачать на смартфон плеер, поддерживающий необходимый кодек. Популярные приложения VLC, MX Player и KMPlayer легко воспроизводят специфический формат.
- Изменить в настройках iPhone формат записи видео на совместимый. Со старыми роликами это не поможет, однако новые будут записаны в кодеке H.264, а его поддерживают все современные устройства.
Чтобы изменить формат видео, перейдите в «Настройки» и открыть меню «Камера». Здесь найдите вкладку «Форматы» и выберите опцию «Наиболее совместимый» на панели «Захват камерой».
После этого ролики будут записываться с использованием универсального кодека. Правда, у H.264 есть недостаток — файлы больше «весят», это станет проблемой для Айфона, у которого мало свободной памяти.
Как при загрузке android запустить видео файл
Каждый медиаплеер (в том числе встроенный проигрыватель Windows Media), каждый телефон и телевизор совместимы с определенным набором форматов. Чтобы устройство правильно читало ваши файлы, ему необходимы специальные кодеки. Поэтому если на устройстве не воспроизводится видео, то дело может быть именно в них, а точнее в их отсутствии.
Кодеки – это программы для сжатия и воспроизведения медиаданных. Каждый из них оперирует лишь одним форматом. Отсутствие подходящих кодеков является самой частой причиной того, что не работает видео на компьютере. Чтобы ваш плеер воспроизводил файлы в различных видеоформатах, скачайте K-Lite Codec Pack – наиболее популярный пакет кодеков. Если вам нужна более подробная информация, ознакомьтесь с нашими инструкциями. В них мы объясняем, что такое кодеки и как их установить.
Если видео не открывается, попробуйте также обновить ваш медиаплеер, ведь у проигрывателей периодически обновляется список встроенных кодеков. Как это сделать, рассмотрим на примере одного из наиболее популярных плееров – VLC. Чтобы обновить его, запустите плеер, нажмите на кнопку Помощь и выберите опцию Проверить обновления, как показано на рисунке.
Хотите быть уверены, что программный плеер на компьютере или мобильное устройство будет воспроизводить файлы без проблем? Просто сконвертируйте видео в тот формат, который точно поддерживает ваш плеер. Для решения этой задачи идеально подойдет Video Converter от Movavi – он конвертирует файлы во все популярные видеоформаты, включая MKV, AVI, MP4, а также содержит готовые пресеты для смартфонов, в том числе iPhone и Google Nexus, телефонов и планшетов на Андроид и других устройств. Программа подходит для устройств на базе Windows 7, 8, 10 и всех актуальных версиях macOS.
Сконвертируйте видео в другой формат программой Movavi, если плеер не показывает видео.
Нет драйверов видеокарты
Что делать, если установка кодеков не помогла и плеер видео не показывает, хотя должен? Есть еще один вариант. Предположим, что компьютер не воспроизводит видео, но вы уверены, что у вас установлены необходимые кодеки и ваш медиаплеер совместим с форматом ролика. В этом случае причина может крыться в устаревших драйверах видеокарты или их отсутствии.
В этой ситуации не удается воспроизвести ролик, либо изображение не отображается в формате нужной четкости, возникают дефекты картинки и музыки. Чтобы установить драйверы, вам нужно знать модель видеокарты. Посмотрите, какая видеокарта у вас установлена: в меню Пуск или на панели задач (если у вас компьютер на Windows 10) найдите строку поиска, введите Диспетчер устройств и нажмите Enter.
В открывшемся окне раскройте опцию Видеоадаптеры нажатием на стрелочку слева от соответствующей строки. В списке видеоадаптеров вы увидите модель вашей видеокарты. Если таким способом не удалось узнать модель видеокарты, обратитесь к документации на ваш компьютер или свяжитесь с его производителем.
Вы узнали, какая у вас видеокарта, и теперь сможете без труда найти нужные драйверы на просторах Интернета. Скачайте драйверы с официального сайта производителя, запустите установочный файл и следуйте инструкции. Процесс полностью завершится уже через несколько минут.
- Перейти на сайт NVIDIA
- Перейти на сайт Intel
- Перейти на сайт AMD
Если, несмотря на обновление кодеков и драйверов видеокарты, видео не загружается и не воспроизводится корректно, обратитесь к специалистам по компьютерному обслуживанию.
Почему не воспроизводится видео в браузере?
Пользователи часто сообщают о том, что ролики иногда не проигрываются не только на устройствах с некоторыми операционными системами, например, на ОС Ubuntu на базе Linux, но и в популярных браузерах. Самый распространенный вопрос: почему я не могу смотреть видео на сайтах, если все кодеки уже установлены?
На самом деле браузер не грузит ролики не по причине отсутствия кодеков и даже не из-за переполненного жесткого диска. За воспроизведение видео на сайтах раньше отвечал Adobe Flash Player, сейчас многие разработчики перешли на более совершенную технологию HTML5. Вы можете узнать, относится ли к их числу ваш браузер. Для этого перейдите на страницу установки Flash Player. Если вы увидите сообщение о том, что приложение уже установлено, но отключено – ваш браузер поддерживает технологию HTML5.
Хотя рекомендации по обновлению Adobe Flash Player до сих пор актуальны, например, для браузера Хром. Поддержка обычно советует не только установить актуальную версию, но и отключить аппаратное ускорение для декодирования видео. Это же касается и других браузеров, созданных на базе движка Chromium. Если проблема была в Flash Player, то после обновления вы сможете просматривать видео на любых сайтах, в частности на «Ютуб» и в социальных сетях.
Иногда видео не запускается и из-за отключения в браузере Java Script. По умолчанию он должен быть активен во всех новых версиях Chrome, Опера, Firefox, Яндекс Браузер и других. Проверьте, работает ли компонент – перейдите в расширенные или дополнительные настройки и найдите соответствующую опцию. На примере Chrome:
- Перейдите в настройки и выберите пункт меню Показать дополнительные настройки.
- Найдите раздел Личные данные и здесь нажмите на кнопку Настройка контента.
- Посмотрите, активен ли Java Script. Если нет – разрешите его использование.
Активировать опцию стоит и в случаях, если видео не просматривается и в других браузерах. Однако она может мешать нормальной работе некоторых сайтов. Если после активации наблюдаются такие проблемы, то добавьте адреса ресурсов-исключений в настройках. Тогда конкретно на них будет запрещено использование Java Script.
Почему не показывает видео на телефоне на базе iOS и Android?
Если вы любите фиксировать моменты в движении, то можете столкнуться с проблемой невозможности воспроизведения видео, снятого на камеру телефона. Фото при этом открываются, равно как и веб-страницы. А вот записанное видео нет. Если вы используете новые модели iPhone, то причина может быть в следующем:
- Невозможно подгрузить онлайн видео из Интернета из-за отсутствия подключения – попробуйте перезагрузить Wi-Fi или само устройство.
- В приложениях не идет видео из-за технического сбоя – стоит удалить и заново установить приложение, а также убедиться в том, что вы используете актуальную версию софта.
- Если невозможно посмотреть собственные ролики, сохраненные в памяти телефона, то проблема может крыться в повреждении воспроизводимого файла – стоит скачать его заново или попробовать восстановить при помощи специальных программ.
Еще одна распространенная проблема, из-за которой на экране iPhone не воспроизводятся снятые на этот же телефон видео – активация функции оптимизации места. Перейдите в меню Настройки, выберите iCloud и пункт Оптимизировать хранилище, после чего нажмите на кнопку Отключить.
На Андроиде ролики могут не воспроизводиться примерно по тем же причинам. Если вы смотрите видео в браузерах – убедитесь, что Java Script не отключен. Вспомните также, ставили ли вы в последнее время приложения, особенно с коррекцией, инверсией цвета, активацией ночного режима и изменения цветовой температуры? Если да – попробуйте удалить их и запустить видео.
Если в браузере ролики работают, а во встроенных на телефоне плеерах не воспроизводятся, то попробуйте активировать или деактивировать аппаратное ускорение в настройках, открыть видео в других плеерах, запустить режим разработчика или сбросить настройки. Убедитесь и в том, что формат видео поддерживается вашим устройством. Если это не так – конвертируйте ролик в подходящий формат.
У проблем с воспроизведением видео на компьютерах и мобильных устройствах есть универсальные решения. Если скачанные видео не включаются, то стоит попробовать преобразовать его в подходящий формат при помощи Movavi Video Converter. В этой программе можно не только конвертировать медиафайлы, но и редактировать видео, извлекать из него звук, сжимать видеофайлы и многое другое.
