Avplayer ios: ‎App Store: AVPlayer

Содержание

‎App Store: AVPlayer

Снимки экрана (iPhone)

Описание

Do you enjoy watching videos on your iPhone? Do you hate not being able to because your iPhone cannot support the video format? Or do you hate the inconvenient and time-consuming hassle of trying to convert video formats to fit into one that your iPhone can support?
This is why the AVPlayer was created. The AVPlayer can play almost any computer video file format such as AVI, Xvid, WMV and much more clearly and effortlessly. No converting hassles. Just copy files via USB and just drag and drop into the AVPlayer’s Media Explorer.
The AVPlayer can also support external subtitle files such as SMI and SRT. So if you enjoy watching videos on your iPad, then the AVPlayer is an absolute necessity.

• Support Formats
— Dolby Digital (AC3), Dolby Digital Plus (EAC3)
— Support High quality video clips ( 720P, 1080P )
— MP4,MOV,M4V
— XVID,AVI,WMV,RMVB,ASF,h364,MKV… most of all movie file formats.
— SMI, SRT, TXT, SubStationAlpha Subtitles

• Post Processing
— High quality video processing
— Contrast,Saturation,Brightness
— TV-Out

• Control the playback speed (From 0.5X to 2.0X)
— User setting support
— Sweep to the left : move to backword 10 sec
— Sweep to the right : move to forward 10 sec
— Sweep to the top : 1.5X speed
— Sweep to the down : normal speed

• Additional features
— Rotation Lock / Aspect ratio:auto/16:9/4:3/Full screen
— Folder Management:Pass code/Move/Rename/Create
— Resume play from last position
— Scrubbing search
— supports e-mail attachment by «Open In» feature

• USB/WIFI Transfer

• Note
1. How to add video with USB
— Run iTunes 9.1 or above
— Device->My Device(My iPad)->Apps, drag and drop files to the AVplayer’s documents

2. Support High quality video clips ( 720P, 1080P )
— High quality video clips of 720P (1280 x 720) or more are recommended for MP4 format.
— MP4, MOV, M4V formats that QuickTime supports can be played up to 1080P by using H/W Decoder but, Post Processing function isn’t provided.
— Support H/W decoding for MKV and AVI (720P supported on iPad1, 1080P supported on iPad2 / The New iPad)
— Hybrid decoding mode is added and now it is able to play high resolution videos by using hardware accelerator feature embedded in iPhone/iPad even for mkv or avi in h364. Also battery use time has extended.
— Application may crash in iPhone 3GS / iPod Touch due to heavy use of memory in Hybrid decoding. Try turning off all application running in background and reboot the device by holding down sleep mode button for long time.  
— If screen shakes it means hardware decoding is not supported. Try turning off hybrid decoding.
— When the file formats are available for MKV or AVI the player supports hardware decoding.
— If you cannot choose audio in mp4 or avi, change the extension to mkv temporarily and chosen audio channel will be applied.

3. The optimal speed when advancing its playing speed can differ depending on the way it’s compressed and the size.
Video clips of XVID (AVI) 720 x 480 can be fast played up to 1.3-1.5 times faster than normal.

Версия 2.95

— Open In(Share/Copy) and Inbox bug fixes
— Screen layout and 4K video playback bug fixes
— Other bug fixes

Оценки и отзывы

Оценок: 394

Поддержка DTS

Плеер функциональный, пользовался много лет купленной версией пока не понадобилась поддержка DTS и DTS-HD, которая здесь отсутствует, к сожалению. Пришлось «переехать» на другое приложение это удалил.

Вопрос разработчикам:
Планируется ли поддержка DTS и DTS-HD?

Поддержка iOS 13

Планируется ли обновление приложения до iOS 13, а так же дальнейшая его поддержка? С приложением невозможно работать после нескольких минут прослушивания музыки, начинает тормозить, звук прерывается. iPhone XS Max.

Не было нареканий…

пока не появилась необходимость отсортировать файлы в папке. Нет такой возможности. Только перемешать.

Разработчик EPLAYWORKS указал, что в соответствии с политикой конфиденциальности приложения данные могут обрабатываться так, как описано ниже. Подробные сведения доступны в политике конфиденциальности разработчика.

Сбор данных не ведется

Разработчик не ведет сбор данных в этом приложении.

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

Информация

Провайдер
EPLAYWORKS

Размер
55 МБ

Категория

Развлечения

Возраст
17+
Неограниченный доступ к Сети

Copyright
© 2010 eplayworks

Цена
279,00 ₽

  • Сайт разработчика

  • Поддержка приложения

  • Политика конфиденциальности

Поддерживается

Другие приложения этого разработчика

Вам может понравиться

Avplayer для iPad — программа для просмотра видео

В предыдущих обзорах мы уже говорили о том, что есть масса удобных и функциональных способов смотреть фильмы в форматах mp4, avi и mkv на устройствах под управлением iOS — iPad, iPhone, iPod. Сегодня мы познакомим вас с двумя простыми способами, имеющими большое количество преимуществ. Мы рассмотрим их оба и в итоге вы сами сможете выбрать тот, который больше всего нравится и подходит именно вам.

Что такое AVPlayer

Лучший плеер, который даёт наиболее широкую поддержку различных форматов и типов видео, в том числе avi и mkv, это программа AVPlayer для iOS, которую вы можете скачать в магазине App Store. Для воспроизведения видео avi вам также совсем необязательно использовать конвертеры вроде Aleesoft Free ipad Video Converter. Относительно своих аналогов, AVPlayer выделяется тем, что смотреть фильмы более удобно за счёт наличия большого выбора способов работы с файлами.

Основные возможности AVPlayer

  • Для того чтобы смотреть фильмы, сериалы и любое другое видео avi или mkv на iOS при помощи этого плеера, вам не нужно прибегать к сложным процессам синхронизации в iTunes. Загружать видео вы можете с компьютера при помощи кабеля, по беспроводной сети Wi-Fi, из ваших персональных облачных хранилищ или даже напрямую воспроизводить из интернета, имея прямую ссылку на видео avi.

Файлы, которые вы загрузили в память плеера на вашем iPhone или iPad, вы можете переименовывать, сортировать по папкам и удалять просмотренные прямо из меню приложения. В настройках вы можете задать персональные параметры для воспроизведения фильмов avi и отображения тех или иных элементов. Поддержка и правильная настройка управления жестами поможет сделать просмотр видео на iPhone максимально удобным.

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

Прямо во время просмотра плеер может регулировать настройки изображения: яркость, контраст, интенсивность цветов и другие параметры. В любой момент вам будет также доступна функция AirPlay, если вы захотите продолжить просмотр на большом экране, при помощи Apple TV или компьютера под управлением MacOS.

Как загрузить видео в AVPlayer

Из iTunes

Для загрузки видео в память плеера вы можете воспользоваться компьютером, кабелем USB и программой iTunes. Подключив ваш iPhone или другой гаджет на iOS к компьютеру при помощи кабеля, запустите iTunes и откройте вкладку управления вашим устройством.

В пункте Программы, там, где вы обычно управляете установкой приложений, найдите меню Общие файлы и выберите в нём AVPlayer. В правой части экрана вы увидите окно Документы AVPlayer, куда вам и нужно загрузить ваши видео простым перетаскиванием. По завершении загрузки фильмов в плеер, следить за которой можно в верхней части окна iTunes, вы можете отключить устройство от компьютера и, запустив приложение, начать смотреть видео.

Через Веб-браузер на компьютере

Если у вас нет желания прибегать к помощи iTunes и кабелей, но при этом и компьютер и iPad подключены к сети Wi-Fi, вы можете воспользоваться встроенной в видеоплеер AVPlayer функцией Wi-Fi Transfer. Для этого запустите плеер в вашем iPhone/iPad и выберите пункт Wi-Fi Transfer. В открывшемся меню выберите HTTP Server и ничего не меняя и не вписывая в настройки соединения, нажмите кнопу Start.

После этого вы увидите инструкцию и адрес, по которому вам нужно перейти в любом интернет-браузере на вашем компьютере. По этому адресу откроется простое меню, состоящее из двух кнопок: Одна из них открывает проводник, чтобы вы могли выбрать видео из памяти вашего компьютера, вторая начинает загрузку выбранного файла в память вашего iPhone или другого гаджета. По окончании загрузки, можете закрыть меню и начать смотреть фильм или повторить процедуру, чтобы загрузить ещё несколько файлов.

Из интернета

В видеоплеере AVPlayer присутствует возможность загрузки фильмов напрямую из интернета. Для такой загрузки вам потребуется открыть меню Wi-Fi Transfer и в пункте Streaming URL ввести адрес видеофайла. Стоит заметить, что зайти на сайт таким образом не получится. Поэтому ссылка, вписываемая в адресную строку этого меню должна быть прямой, то-есть в её конце должно содержаться имя того файла, который вы собираетесь скачать в плеер, иначе программа ничего не сможет сделать и выдаст вам сообщение об ошибке.

Из облачных хранилищ

Если у вас есть аккаунты в сервисах облачного хранения файлов Dropbox и Google Drive, и там хранятся какие-либо видео или фильмы в форматах avi или mkv, то вы можете загрузить их прямо в видеоплеер на своё iOS-устройство. Для этого в меню Wi-Fi Transfer выберите соответствующий пункт и при необходимости пройдите авторизацию, используя свой логин и пароль Dropbox или Google. После этого вы увидите полный список файлов и папок, содержащихся в вашем хранилище, и сможете загрузить их в память вашего гаджета iOS — iPhone или iPad.

Для чего нужен Aleesoft Free ipad Video Converter

В том случае, если вы собираетесь воспроизводить ваши видео на большом экране, используя функцию AirPlay и Apple TV, то вам пригодится Aleesoft Free ipad Video Converter. Дело в том, что в силу некоторых ограничений просмотра, корректная работа AirPlay гарантирована компанией Apple только в том случае, если ваши фильмы и сериалы сохранены в формате mp4. Поддержка avi и mkv в iOS и на Apple TV отсутствует.

Скачав бесплатный Aleesoft Free ipad Video Converter на официальном сайте, вы сможете легко конвертировать ваши видео в совместимые форматы. Aleesoft Free ipad Video Converter лучший вариант для быстрой и качественной конвертации. В нём содержатся готовые настройки для всех iOS-устройств.




  • Информация была полезной?
  • 2 3

Опубликовал ProfiAppler

Не забывайте читать комментарии, там тоже много полезной информации. Если на ваш вопрос нет ответа, а на более поздние комментарии есть ответ, значит ответ на ваш вопрос содержится в статье, уважайте чужое время.



Avplayer для iPhone: vlc для ipad

Для меня iPad давно превратился в гаджет для путешествий. Чаще всего я использую его лишь для долгих поездок, в качестве переносного кинотеатра. Всё усложняется тем, что я смотрю фильмы и сериалы в оригинале с английскими субтитрами, а поэтому найти плеер, который нормально работает со всеми форматами фильмов и субтитрами было непросто. Для меня им стал AVPlayer.

AVPlayer — это видеоплеер для iPhone и iPad, который был выпущен очень давно. У разработчиков приложения даже были какие-то проблемы с редакцией App Store из-за того, что плеер мог конвертировать форматы видео в реальном видео и позволял просматривать Full HD даже на iPad 2, который этого не поддерживал. Хорошо, что все проблемы были решены и AVPlayer снова доступен для покупки. Потому что это лучший видеоплеер из всех, что я встречал.

AVPlayer поддерживает 720p и 1080p, большинство видеоформатов (MKV, AVI, MP4, MOV и другие) и звуковые дорожки вместе с субтитрами.

В самом плеере очень удобные жесты для управления перемоткой и громкостью. Более того, загружать видео в приложение можно не только с помощью провода, но и через Wi-Fi Direct или с любого облачного хранилища. Правда время загрузки увеличивается в разы.

С выходом Waltr, который позволяет загружать фильмы и сериалы в стандартное приложение «Видео», я разрываюсь между двумя вариантами. Но Waltr стоит немало, поэтому, если вы еще его не купили, то AVPlayer — это великолепное приложение для просмотра видео.

Вопрос, как скачать фильм на iPhone через VLC, всегда актуален. Айфоны, айпады и другие устройства Apple не имеют файлового менеджера. Загрузить контент напрямую в телефон, как это работает на Android, не получится. Bluetooth также недоступен для приема файлов от другого гаджета. Чтобы скопировать файлы из интернета или мобильного устройства используются сторонние программы, такие как VLC for iOS.

Содержание

  • Как скачать фильм на iPhone и iPad через VLC
  • Способ 1. Передача видео по Wi-Fi через VLC
  • Способ 2. Копирование файла через iTunes
    • Загрузка через iTunes без USB-кабеля
    • Загрузка ролика из интернета на iPhone через VLC
    • Копирование файла из «облака»
    • Файлы в локальной сети
    • Защита фильма паролем и другие функции
  • Поддержка форматов
  • Простое управление
  • Режим просмотра трансляций
    • Полезные материалы:

Как скачать фильм на iPhone и iPad через VLC

Медиа-проигрыватель VLC от VideoLAN можно загрузить в iTunes или магазине AppStore. Стандартные форматы видео-файлов: MOV и MP4. ВЛС Медиа Плеер воспроизводит даже формат MKV, работает с MP4-кодеками, поддерживающими декодирование. Для передачи файлов потребуется только компьютер с видеороликом и смартфон или планшет. Есть два способа отправить видеоматериалы с ноутбука на смартфон:

  1. по Wi-Fi;
  2. через iTunes.

В первом случае необходимо чтобы мобильное устройство и ноутбук (или ПК) были подключены к одной беспроводной сети Wi-Fi. Тогда их IP-адреса будут находиться в одной подсети. Это необходимо для обмена данными по единому протоколу. Во втором – достаточно подсоединить гаджет к компьютеру кабелем и запустить на ПК приложение iTunes. Для передачи видеоклипа с ПК на iPad или iPhone приложение VLC должно быть установлено в мобильном устройстве. Инструкция VLC iPhone как пользоваться переносом медиа-файлов разными способами приводится ниже.

Способ 1. Передача видео по Wi-Fi через VLC

Приведенная здесь инструкция отвечает на вопрос, как скачать фильмы на iPad через VLC Media Player. Используется ноутбук, беспроводная сеть Wi-Fi и устройство Apple iPhone.

  • Загрузить, установить и запустить медиа проигрыватель VLC на Айфоне или Айпаде.
  • Открыть основное меню по кнопке конуса в левом верхнем углу и активировать пункт «Доступ через WiFi».
  • Под надписью пункта меню покажется IP-адрес, строчкой ниже – HTTP-адрес сервера для загрузки. Любой из вариантов нужно ввести в адресную строку любого браузера на ноутбуке, например, 192.168.0.14.
  • Перейдя по указанной ссылке, веб-браузер откроет страницу загрузки контента через VLC. Можно просто перетащить нужные видеоролики в это окно или нажать по значку «+» справа, а затем выбрать файлы из списка.
  • Подождать завершения процесса передачи файлов с компьютера на планшет (или смартфон). Некоторые веб-браузеры не показывают процент загрузки или строку прогресса, но передача данных также выполняется.
  • Завершив копирование материалов, можно просмотреть видеоклип на мобильном устройстве iPad.

Замечание. Бывает, что проигрыватель не отображает закачанные видео-файлы в плей-листе, но клипы занимают место в памяти смартфона. Такое происходит, когда файл имеет слишком длинное название на русском языке или знаки препинания и другие символы. Рекомендуется давать загружаемым фильмам простые имена.

Способ 2. Копирование файла через iTunes

Используем iPhone, USB-провод от него для подключения к ПК, ноутбук с установленным на нем iTunes. Следующая инструкция покажет, как закачать фильм с компьютера на телефон по VLC.

  • Подключить iPhone к персональному компьютеру или ноутбуку, открыть программу iTunes (обычно запускается автоматически).
  • В меню слева выбрать Айфон, нажав на него.
  • В разделе «Настройки» выбираем подменю «Приложения». Пролистать вниз и нажать «VLC for iOS».
  • Переместить видео-файлы в раздел «Документы VLC» и нажать кнопку добавления фильмов, отметить нужные ролики.
  • Ожидать завершения загрузки видеоклипов на смартфон.
  • После копирования видео-, аудио-материалов, можно просмотреть или прослушать их в медиа-плеере на Айфоне.

Примечание. При загрузке через HTTP-сервер больших объемов данных рекомендуется использовать USB-провод для подключения телефона к компьютеру. Это повысит стабильность передачи файлов и увеличит скорость соединения и загрузки.

Загрузка через iTunes без USB-кабеля

Другим подобным способом закачивания фильма в iPhone будет соединение обоих устройств по Wi-Fi, без кабеля USB. Для этого надо «раздать интернет» с мобильного устройства. Чтобы включить режим передачи проделаем следующее.

  • Открыть на главном экране Айфона «Настройки». Найти и выбрать пункт «Режим модема».
  • Установить переключатель в активное положение. Если ранее компьютер подключался к интернету через этот iPhone, вверху экрана появится информация о подключении.

Дальнейшие действия по загрузке фильма с ноутбука на смартфон будут такими же, когда подключение выполняется через USB-кабель. В результате загружаемый видеоролик появится в разделе «Фото» смартфона. Открыв ролик, можно просмотреть его.

Есть и другие инструменты, способные передавать документы, картинки, фильмы на iOS-устройства. Они также доступны в интернет-маркете AppStore.

Примечание. С помощью ВЛС Media Player можно передавать не только видео-файлы, но и документы.

Загрузка ролика из интернета на iPhone через VLC

Это еще один способ загрузить видео на смартфон или планшет через VLC for iOS. Потребуется только знать полный адрес файла для скачивания – прямую ссылку.

  • В плеере нажать кнопку меню, выбрать пункт «Загрузки».
  • В поле сверху ввести ссылку – полный адрес видеоролика. Нажать по кнопке «Загрузить».
  • После скачивания в пункте меню «Все файлы» появится загруженный видеоклип, картинка или другой документ.

Копирование файла из «облака»

Подключение медиа-плеера к одному из облачных хранилищ – OneDrive, Dropbox, Гугл Диск, Box. Подключение предполагает авторизацию в «облаке» по логину и паролю от учетной записи.

  • В меню выбрать раздел «Облачные службы», указать сетевой диск, на котором есть аккаунт (здесь Google Drive).
  • На странице сервиса нажать кнопку «Войти» и выполнить авторизацию в Гугл Диске.
  • После входа в «облако», останется выбрать там нужный файл и скопировать его на iPad или iPhone.

Примечание. Если надо обменяться видеоклипом с другими пользователями, то потребуется открыть общий доступ к папке с файлом.

Файлы в локальной сети

При соединении смартфона и ПК по Wi-Fi можно подключиться к локальному серверу для просмотра и закачивания видео. Необходимо знать сетевые параметры сервера (ноутбука): IP-адрес или имя компьютера, номер порта, логин, пароль и имя рабочей группы (задается автоматически).

  • В разделе меню «Сеть» выбрать пункт «Локальная сеть». Выбрать файловый сервер (имя ПК).
  • Во вкладке «SMB» ввести учетные данные и нажать «Открыть».
  • После соединения с файл-сервером по SMB можно будет скопировать любой медиа-файл с ПК на мобильное устройство.

Защита фильма паролем и другие функции

Если требуется ограничить просмотр видеороликов для конкретных лиц можно поставить пароль на видеоконтент. Для этого открываем пункт меню «Настройки» в VLC for iOS и ставим переключатель защиты в активное положение.

Затем останется указать 4-значный PIN-код для ограничения просмотра материала. В меню настроек есть и другие полезные опции для работы с видео, аудио, синхронизацией. Можно управлять воспроизведением, установить размер кэша или натсроить субтитры.

Мобильная версия медиа-плеера позволит решить проблему переноса медиа-контента на Apple-устройство из любого источника. С помощью одного приложения можно скопировать фильм на смартфон с помощью USB-кабеля или Wi-Fi.

В 2016 году компания VideoLAN анонсировала данные о повторной разработке новой версии культового плеера VLC для мобильных платформ. Первой операционной системой, на которой был реализован проигрыватель стала IOS. Выпуская адаптированную для смарт-устройств прошивку плеера, команда разработчиков не уступила своим принципами сделала утилиту абсолютно бесплатной для использования. В VLC для IPhone нет рекламы, скрытых подписок и платных функций.

ПО отлично работает во всех версиях операционной системы: как на старых Айфонах и Айпадах, так и на гаджетах из новой линейки.

Рассмотрим детальнее особенности мобильного клиента для смартфонов и планшетов.

на скачивание приложения.

Поддержка форматов

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

Уникальный интерфейс

В VLC IOS встроена возможность добавления кастомных обложек для фильмов и музыкальных альбомов. Таким образом, вы можете создавать свое оформление сохраненного плейлиста или библиотеки файлов.

Простое управление

Несмотря на огромное количество функций, пользователь не будет сталкиваться со сложностями в управлении программой. Есть контроль над ПО сводиться к нажатию нескольких клавиш. Благодаря поддержке более 50 языков, работать с плеером стало еще проще.

Режим просмотра трансляций

Сегодня каждый второй пользователь какой-либо мобильной платформы регулярно просматривает онлайн-трансляции с различных видеохостингов и других сервисов. Потоковое видео можно с смотреть и в VLC для iPad или iPhone.

Откройте главное меню и выберите пункт «Сетевой ресурс». Затем вставьте скопированную из браузера ссылку на трансляцию и дождитесь начала её воспроизведения.

Такой способ просмотра потоков гораздо удобнее и быстрее, ведь браузеры достаточно медленно обрабатывают полученные от сервера данные, что приводит к задержкам в показе изображения.

Также в программе доступна функция использования хранилища маршрутизатора Wi-Fi. Просто подключитесь к роутеру через главное меню и копируйте в хранилище файлы, которые нужно передать на компьютер или другое смарт-устройство.

AVPlayer — лучший видеоплеер для iPad

Все для iPad / Программы для iPad / Мультимедиа, Платные








Все знают для чего в основном используется iPad. На нем очень удобно лазить по WEB-сайтам, читать книги. На iPad-е есть довольно интересные игрушки, которые не позволят вам заскучать в дороге. Музыку на iPad-e слушать не очень удобно, так как его приходится держать в руках, а размеры из-за экрана у него не самые маленькие (сравните со специальными mp3-плеерами), зато смотреть фильмы на таком экране намного приятнее, чем на том же смартфоне. Особенно где-то в дороге. Но здесь кроется некая неприятность. iPad изначально понимает лишь специальный формат видео и вы не сможете посмотреть на нем фильмы, например, в формате avi. И вот тогда на помощь приходят сторонние программы, которые умеют воспроизводить большинство видеоформатов.

Сначала я попробовал несколько бесплатных программ типа Flex. Возникали различного рода проблемы. Некоторые воспроизводили avi, но не могли воспроизвести mkv и наоборот. Мысль использовать разные плееры под разные видеофайлы мне не очень нравилась. Один из плееров радостно показывал баннеры во время просмотра фильма. Ну то есть смотрите вы фильм, а сверху или снизу на черных полосах вам показывают рекламу. Замечательное зрелище. И тут я наткнулся на плеер AVPlayer, который не был бесплатным, но стабильно висел в топе лучших приложений AppStore. Рискнул, купил. Оказалось, что это — отличный плеер. Мне еще не попадалось видео, которое он не смог бы воспроизвести. Читает и avi, и mkv, и mpg. Правда в видеофайлах качества HD возможны подтормаживания. С другой стороны..зачем смотреть HD — видео на iPad ? Ну и для ооочень дальней дороги я бы все-таки порекомендовал заливать фильмы родного для iPad формата, так как они меньше напрягают процессор и меньше сажают батарею. Это совет, чтобы надольше хватило. Но сейчас давайте все-таки рассмотрим AVPlayer.

Вот так выглядит основное меню программы:

Если зайти в Settings, то все настройки там на русском языке ! А настроек очень много, поэтому я не буду их рассматривать здесь, посмотрите сами. Настройки в принципе стандартные для плееров, ну вроде включения субтитров или изменения параметров отображения. Еще можно настроить жесты, но я с этим не экспериментировал. Обычно я смотрю кино, а не вожу по экрану пальцами

Довольно забавен пунктик Wi-Fi Transfer, особенно если у вас настроена Wi-Fi сеть. У меня она настроена, все подключилось и вот что вывело:

Иероглифы — это названия папок и файлов на русском. То есть русские названия он не понимает. Имейте ввиду. Зашел внутрь папки Clips:
Вообще я изначально думал, что можно будет прямо через Wi-Fi посмотреть фильмы, но при выборе файла программа просто предлагает вам его скачать:
Кому-то это будет удобнее использования iTunes для этих же целей.

А вот я зашел в пункт Media Explorer:

То есть видно, что в плеере можно создавать папки, как я сделал папку под фильмы. Клипы пока валяются просто в корне, все никак не наведу порядок. Здесь же можно перемещать и удалять файлы просто помечая их. Все очень удобно.

Вот содержимое папки Films:

Тут два фильма. «Драйв» и «Мальчишник2. Из Вегаса в Бангкок». Обратите внимание на размер второго фильма. 3 Гигабайта, а воспроизводится отлично.

Ну и наконец примеры видео. Это Dan Balan — Justify sex. Клип в HD-качестве, разрешение 1920х1080. Четырехминутный клип весом 352мб !!! Идет неплохо, хотя некоторые подтормаживания имеются (если сильно всматриваться):

Поверх картинки вы видите меню плеера. Здесь есть настройки регулировки громкости звука, также можно перемотать видео в любое место, переключиться на другое видео по списку. Слева вынесены основные настройки плеера. Это меню можно убрать простым тапом пальца по экрану.

Вот это же видео уже без меню:

Темновато, но клип сам по себе темный. А вот клип Никита — Искусаю. Тормозов нет совершенно. Качество великолепное:

А это фильм «Мальчишник2. Из Вегаса в Бангкок» со включенными субтитрами:
При повороте iPad-а изображение также поворачивается:
Вообщем этот плеер обязательно должен быть в коллекции киномана — обладателя iPad. Ну и всем другим он будет не лишним, особенно если вы часто путешествуете. Одно удовольствие смотреть кино на таком экране, поверьте мне.


Разработчик: EPLAYWORKS
Цена: 229 р
Размер: 50.1 Мб
Требования: Требуется iOS 9.0 или более поздняя версия. Совместимо с iPad.

Скачать приложение AVPlayer для iPad





Вам также могут понравиться:


Как закачать видео с компьютера на iPad с помощью iTunes

Большой экран iPad идеально подходит для вывода видео и на нем действительно очень удобно смотреть фильмы, сериалы, клипы, передачи и тд. Но человек, впервые севший за планшет от Apple будет несколько ошарашен, так как сходу разобраться, каким образом закачать видео с компьютера на iPad практически …

Air Video — смотрим на iPad видео с любого компьютера

Еще совсем недавно мы говорили про передачу файлов между iPad и компьютером посредством FTP. Такой способ обмена файлами довольно удобен, действительно поддерживается очень многими приложениями, но все же имеет некоторые недостатки. Скачивание книг или музыки не доставляет особых неудобств ввиду мал…

VLC for iOS — бесплатный видеоплеер для iPad

Возрадуйтесь, владельцы iPad-ов, не успевшие обзавестись хорошим платным медиа-плеером. На вашей улице сегодня праздник. После длительного перерыва отличный видеоплеер «VLC for iOS» вновь появился в «App Store». Напомню, что примерно два года назад он был удален из данного магазина по причинам несоо…

EVGPlayer. Универсальный всеядный медиа-плеер для iPad

Что чаще всего ищут пользователи продвинутых мобильных устройств от компании «Apple» во всемирной паутине? Какие вопросы чаще всего задают нам в «Twitter»? Да, и друзья при встрече донимают этом делом не слабо. Речь идет о том, какой мультимедийный плеер для «iOS» самый лучший. Причем, обычно идет р…

Видео в iOS 7

До официального выхода операционной системы iOS 7 остались считанные дни. Но ее предрелизную версию можно установить уже сейчас. Чем я вчера и занимался и даже написал небольшую инструкцию по прошивке на iOS 7 GM и откату обратно на iOS 6.1. 3 (а это пока еще можно сделать без особых проблем), посмот…



22-12-2011, 02:00  Посмотрели: 18318  Написал: admin 

Комментарии: 1

‎AVPlayer в App Store

Скриншоты iPhone

Описание

Вам нравится смотреть видео на iPhone? Вы ненавидите, что не можете, потому что ваш iPhone не поддерживает формат видео? Или вы ненавидите неудобные и трудоемкие попытки преобразовать видеоформаты в формат, поддерживаемый вашим iPhone?
Вот почему был создан AVPlayer. AVPlayer может воспроизводить практически любой компьютерный видеоформат, такой как AVI, Xvid, WMV и многое другое, более четко и без усилий. Никаких проблем с конвертацией. Просто скопируйте файлы через USB и просто перетащите их в Media Explorer AVPlayer.
AVPlayer также может поддерживать внешние файлы субтитров, такие как SMI и SRT. Так что, если вам нравится смотреть видео на iPad, вам абсолютно необходим AVPlayer.

• Поддержка форматов
— Dolby Digital (AC3), Dolby Digital Plus (EAC3)
— Поддержка видеоклипов высокого качества (720P, 1080P)
— MP4,MOV,M4V
— XVID,AVI,WMV,RMVB,ASF, h364, MKV… большинство форматов файлов фильмов.
— SMI, SRT, TXT, SubStationAlpha Субтитры

• Постобработка
— Высококачественная обработка видео
— Контраст, Насыщенность, Яркость
— ТВ-выход

• Управление скоростью воспроизведения (от 0,5X до 2,0X)
— Поддержка пользовательских настроек
— Прокрутка влево: переход к предыдущему слову на 10 секунд
— Прокрутка вправо : движение вперед на 10 секунд
— Прокрутка вверх : скорость 1,5X
— Прокрутка вниз : нормальная скорость

• Дополнительные функции
— Блокировка поворота / Соотношение сторон: авто/16:9/4:3/Полный экран
— Управление папками: Пароль/Переместить/Переименовать/Создать
— Возобновить воспроизведение с последней позиции
— поиск с прокруткой
— поддержка вложений электронной почты с помощью функции «Открыть в»

• Передача через USB/WIFI

• Примечание
1. Как добавить видео с помощью USB
— Запустите iTunes 9.1 или выше
— Устройство->Мое Устройство (Мой iPad) -> Приложения, перетащите файлы в документы AVplayer

2. Поддержка видеоклипов высокого качества (720P, 1080P)
— Видеоклипы высокого качества 720P (1280 x 720) или более рекомендуются для MP4 формат.
— форматы MP4, MOV, M4V, поддерживаемые QuickTime, могут воспроизводиться с разрешением до 1080P с помощью аппаратного декодера, но функция постобработки не предусмотрена.
— поддержка декодирования H/W для MKV и AVI (720P поддерживается на iPad1, 1080P поддерживается на iPad2 / новом iPad) iPhone/iPad даже для mkv или avi в формате h364. Также увеличилось время использования батареи.
— приложение может аварийно завершать работу на iPhone 3GS/iPod Touch из-за интенсивного использования памяти при гибридном декодировании. Попробуйте отключить все приложения, работающие в фоновом режиме, и перезагрузите устройство, удерживая кнопку спящего режима в течение длительного времени.
— Если экран дрожит, это означает, что аппаратное декодирование не поддерживается. Попробуйте отключить гибридное декодирование.
— Когда форматы файлов доступны для MKV или AVI, проигрыватель поддерживает аппаратное декодирование.
— Если вы не можете выбрать аудио в формате mp4 или avi, временно измените расширение на mkv, и выбранный аудиоканал будет применен.

3. Оптимальная скорость при увеличении скорости воспроизведения может различаться в зависимости от способа сжатия и размера.
Видеоклипы формата XVID (AVI) 720 x 480 можно быстро воспроизводить в 1,3-1,5 раза быстрее, чем обычно.

Версия 2.95

— Исправлены ошибки открытия (поделиться/копировать) и папки «Входящие»
— Исправлены ошибки макета экрана и воспроизведения видео 4K
— Другие исправления ошибок

Рейтинги и обзоры

263 Оценки

Запрос функции и отчет об ошибке

Я был рад видеть, что он уже поддерживает iPhone X 2 месяца назад, но последнее обновление все еще не использует все преимущества аппаратного обеспечения iPhone X.
Во-первых, это HDR, ну, он декодирует HDR-видео, но цветовое пространство не совсем правильное, в результате чего изображение несколько размыто.
Второй — масштабирование, теперь он не будет использовать весь экран, самая большая область, которую он покрывает, — это безопасная область, я думаю, лучше добавить режим, который покрывает весь экран, оставляя пользователям решать, использовать они или нет. .
И у него также есть некоторые ошибки, о которых вам нужно позаботиться, одна из них заключается в том, что правая часть экрана настроек предпочтений немного опущена на iPhone X в ландшафтном режиме; с другим я столкнулся как на iPad, так и на iPhone, а именно: он дублирует видеокадр и размещает изображения рядом, когда воспроизводит видео 4K с высокой скоростью передачи данных или что-то подобное с использованием программного декодирования, хотя он сильно заикается и не очень смотрибельно в первую очередь, но в любом случае это баг.

Практически идеально

Я с удовольствием использую его в качестве основного видеоплеера на своих устройствах iOS в течение последних 5 лет, используя все его функции. хотя есть вещи, которые нужно сделать, чтобы для меня это было легкое 5-звездочное приложение; Во-первых, «правильная» поддержка HDR, а не просто воспроизведение HDR-контента, затем подходящая вкладка «поиск» в библиотеке (что очень важно для таких людей, как я, у которых десятки ГБ на своих устройствах), и, наконец, исправление некоторых ошибок, связанных с некоторыми определенные кодеки, связанные с mkv, которые вызывают уродливые визуальные и звуковые искажения в течение всего просмотра видео, когда вы широко используете функции прямого и обратного просмотра…
Несмотря ни на что, я искренне ценю усилия вашей команды по созданию универсального видеоплеера в магазине приложений 👍🏻👍🏻👍🏻

Почти отлично

Мой любимый медиаплеер для iOS. Поставлю пять звезд, когда у меня будет НАСТОЯЩИЙ полный экран при просмотре видео на iPhone X (да, я не возражаю против выреза). Очевидно, вы можете масштабировать его полностью по вертикали в альбомной ориентации, но даже когда вы можете масштабировать его также по горизонтали, видео не использует все доступное пространство. Выглядит как старый iPhone

Разработчик, EPLAYWORKS, указал, что политика конфиденциальности приложения может включать обработку данных, как описано ниже. Для получения дополнительной информации см. политику конфиденциальности разработчика.

Данные не собираются

Разработчик не собирает никаких данных из этого приложения.

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

Информация

Продавец
ЭПЛЕЙВОРКС

Размер
55 МБ

Категория

Развлечения

Возрастной рейтинг
17+
Неограниченный доступ в Интернет

Авторское право
© 2010 eplayworks

Цена
2,99 $

  • Сайт разработчика

  • Тех. поддержка

  • Политика конфиденциальности

Опоры

Еще от этого разработчика

Вам также может понравиться

Сборка видеоплеера для iOS — AVPlayer | by Shan

В мире разработки iOS средства массовой информации играют важную роль, чтобы сделать приложение более привлекательным и интересным.

Если вы пользуетесь такими популярными приложениями для социальных сетей, как Facebook, Instagram и Youtube, вы можете обнаружить, что каждый раз, когда вы прокручиваете содержимое, вам отображается огромное количество медиафайлов.

В iOS отображение изображений и воспроизведение аудиофайлов очень просто благодаря UIImage и AVAudioPlayer . А как насчет видео? Вы когда-нибудь задумывались о воспроизведении видео в приложении с помощью Swift? Если да, вы можете начать с AVPlayerViewController , который предоставляет некоторые основные элементы управления, чтобы вы могли легко и быстро работать с проигрывателем.

Несмотря на интеграцию AVPlayerViewController в проект легко и быстро, иногда он недостаточно гибкий. есть еще один вариант воспроизведения видео, который имеет более крутую кривую обучения, чем AVPlayerViewController , но более настраиваемый.

То есть AVPlayerLayer .

Рисунок 1. Стек AVFoundation на iOS

В этой статье вы увидите, как настроить проигрыватель с помощью AVPlayerLayer и понаблюдать за состоянием загрузки, чтобы узнать, готов ли проигрыватель.

Начнем!

Откройте Xcode и создайте новый проект AVPlayerLayerDemo, , затем переключитесь на файл ViewController.swift . Во-первых, нам нужно место для размещения плеера, который мы создадим позже, поэтому создадим переменную playerContainerView .

Создайте функцию setUpPlayerContainerView и укажите цвет фона и ограничения для playerContainerView , как коды ниже.

Обратите внимание на оператор if для проверки версии iOS. Если это iOS 11.0 и более поздние версии, выровняйте верхнюю часть playerContainerView по верхней части безопасной области или по верхней части верхней направляющей макета .

Запустите проект с симулятором iPhone. Должно получиться как на рисунке 2.

Рисунок 2.

Теперь у нас есть место для игрока. Пришло время создать плеер! Создайте новый подкласс UIView и назовите его PlayerView .

Сначала импортируйте AVFoundation вверху файла.

Добавьте коды ниже, чтобы изменить слой представления для PlayerView .

Затем добавьте свойства, как показано ниже:

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

Теперь мы подготовили все свойства. Пришло время взглянуть на игрока! Необходимые шаги для настройки проигрывателя приведены ниже:

  1. Инициализирован AVAsset с URL .
  2. Загрузить AVAsset асинхронно и дождаться состояния загрузки .
  3. Если AVAsset загружен, инициализируется AVPlayerItem с загруженным AVAsset .
  4. Добавить наблюдателя для AVPlayerItem . Попросите игрока сыграть, если он получит статус readyToPlay .

Добавьте функцию setUpAsset в виде кодов ниже, чтобы выполнить шаг 1 и шаг 2 сводки.

Затем добавьте функцию setUpPlayerItem в виде приведенных ниже кодов, чтобы выполнить шаг 3 и шаг 4 сводки.

Обратите внимание, что мы добавили свойство playerItem перед сохранением ссылки на AVPlayerItem , чтобы мы могли получить его статус от наблюдателя. После настройки AVAsset и AVPlayerItem нам нужна функция для запуска всех действий.

Добавить функцию воспроизвести , как показано ниже.

Функция Play будет записью, позволяющей игроку начать воспроизведение с URL-адреса. Помните, что добавленного наблюдателя необходимо удалить. Вы можете удалить наблюдателя, как показано ниже.

На данный момент PlayerView можно использовать. Вернемся к контроллеру представления.

В ViewController.swift добавьте два свойства.

Затем добавьте функцию setUpPlayerView , чтобы добавить playerView в playerContainerView и указать ограничения для него.

Добавьте еще одну функцию playVideo , как показано ниже.

Наконец-то мы закончили то, что нужно. Вызовите соответствующие функции в viewDidLoad , как показано ниже.

Запустите проект с симулятором iPhone. Плеер начнет проигрывать видео как на гифке 1.

Gif 1. Плеер начинает

Поздравляем! Вы собрали плеер с AVPlayer ! Это действительно здорово!

В этой статье представлен способ взаимодействия с AVPlayer с помощью AVPlayerLayer . Это важно, потому что все, что вам нужно, это просто представление, содержащее проигрыватель вместо AVPlayerViewController , и вы можете самостоятельно инициализировать проигрыватель и наблюдать за состоянием загрузки.

Отныне видео будет для вас возможностью сделать ваше приложение более привлекательным!

Обработка фонового звука с помощью iOS AVPlayer

Общей функцией, которую разработчики приложений хотят встроить в свои видеоприложения для iOS, является возможность сохранения звука, когда приложение переходит в фоновый режим. Переход в фоновый режим происходит, когда:

  • Устройство iOS заблокировано
  • Приложение свернуто и пользователь переключается на другое приложение

Подробные пояснения см. в документации iOS по событиям жизненного цикла.

Социальные приложения часто не хотят сохранять звук в этих сценариях. Но для других приложений, содержащих образовательный контент, музыкальные выступления и видеоконтент более длинной формы, такое поведение является ожидаемым для пользователей.

По умолчанию при использовании AVPlayer (де-факто видеоплеер Apple) звук не будет сохраняться, когда приложение переходит в фоновый режим. Если вы хотите сделать это в своем приложении, необходимо выполнить несколько шагов.

Включите «Аудио, AirPlay и Картинка в картинке» в ваших целевых возможностях. Это позволяет iOS узнать, что вы будете использовать функцию фонового звука.

iOS необходимо знать, с каким звуком работает ваше приложение. Для большинства видеоприложений AVAudioSession. Category.playback имеет наибольший смысл. Этот параметр сообщает iOS, что звук является «главным элементом успешного использования вашего приложения», и эту категорию необходимо применять для сохранения звука при блокировке устройства.

 импорт AVFoundation
@главный
класс AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        пусть audioSession = AVAudioSession.sharedInstance()
        делать {
            попробуйте audioSession.setCategory(AVAudioSession.Category.playback)
        } ловить {
            print("Не удалось установить категорию AVAudioSessionCategoryPlayback.")
        }
        вернуть истину
    }
} 

Используйте SceneDelegate для прослушивания перехода сцены от фона к переднему плану. В более ранних версиях iOS этот код помещался в applicationDidEnterBackground : и applicationWillEnterForeground : . Начиная с iOS 13 Apple перенесла некоторые из этих обязанностей из AppDelegate в SceneDelegate. Если у вас включены сцены, события жизненного цикла сцены будут доставлены в SceneDelegate, и это то, что мы будем использовать здесь. Если вы не используете SceneDelegate, те же шаблоны можно применить к эквивалентным функциям AppDelegate. Шаги, которые мы выполним, следующие:

  1. Прослушайте сцену, выходящую на задний план, когда это произойдет, отсоедините экземпляр AVPlayer от представления (либо AVPlayerViewController , либо AVPlayerLayer ).
  2. При отсоединении AVPlayer от представления сохраните ссылку на него в нашем удалении сцены, потому что оно понадобится нам позже.
 импорт UIKit
импортировать AVKit
класс SceneDelegate: UIResponder, UIWindowSceneDelegate {
    переменное окно: UIWindow?
    var videoViewController: ViewController? = ноль
    var avPlayerSavedReference: AVPlayer? = ноль
} 
 импорт UIKit
импортировать AVKit
импортировать MUXSDKStats
класс ViewController: AVPlayerViewController {
    переопределить функцию viewDidLoad() {
        super. viewDidLoad()
        
        пусть url = URL (строка: "https://stream.mux.com/N702sotMOOwKJqL01NXFL6Q67M9POj5Hn02.m3u8")
        игрок = AVPlayer(url: URL!)
        self.allowsPictureInPicturePlayback = ложь
        игрок!.play()
        пусть сцена = UIApplication.shared.connectedScenes.first
        // получаем делегат сцены и даем ему ссылку на этот ViewController
        если позволить sceneDelegate : SceneDelegate = (scene?.delegate as? SceneDelegate) {
            sceneDelegate.videoViewController = self;
        }
    }
} 

Сцена переходит на задний план

В SceneDelgate настройте прослушиватель для sceneDidEnterBackground . SceneDelgate имеет ссылку на videoViewController выше, поэтому на этом этапе мы можем сохранить ссылку на базовый AVPlayer и установить свойство player на nil.

 func sceneDidEnterBackground (_ сцена: UIScene) {
  // Отсоединяем наш avPlayer от контроллера представления, но сохраняем
  // ссылка на него, чтобы мы могли прикрепить его позже
  если (videoViewController != ноль) {
    avPlayerSavedReference = videoViewController!. player
    videoViewController?.player = ноль
  }
} 

Сцена возвращается на передний план

В SceneDelegate настройте прослушиватель для sceneWillEnterForeground . Здесь вы повторно прикрепите плеер к представлению.

 функция сценыWillEnterForeground (_ сцена: UIScene) {
        // Вызывается при переходе сцены с фона на передний план.
        // Используйте этот метод, чтобы отменить изменения, сделанные при входе в фон.
        //
        // Теперь, когда приложение выходит на передний план, мы должны
        // на данный момент есть avPlayerSavedReference
        // Давайте повторно прикрепим наш avPlayerSavedReference к нашему ViewController
        если (videoViewController != nil && avPlayerSavedReference != nil) {
            videoViewController!.player = avPlayerSavedReference;
            avPlayerSavedReference = ноль;
        }
    } 

Что происходит под капотом

Похоже, что при отделении видео от представления AVPlayer не меняет никакой логики адаптивной обработки битрейта, когда видео имеет несколько воспроизведений. В идеале я надеялся увидеть сценарий, в котором:

  • Видео не отображается
  • AVPlayer «умный» и понимает, что видео не показывается
  • Поскольку видео не отображается, AVPlayer будет использовать воспроизведение только аудио (если есть в манифесте)

Mux имеет функцию добавления воспроизведения только аудио в манифесты HLS с параметром add_audio_only=true (публикация в блоге и ссылки на руководство).

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

Судя по проведенным мной тестам, я не видел, чтобы AVPlayer автоматически переключался на воспроизведение только аудио. Поэтому я решил совершить несколько легких преступлений, чтобы это сработало. К лучшему или к худшему, iOS и AVPlayer придерживаются действительно твердой позиции в отношении того, чтобы возиться с внутренними механизмами потоковой передачи. На самом деле, единственные два дескриптора, которые они дают вам в этом мире, — это ПредпочтительныйPeakBitRate и ПредпочтительныйForwardBufferDuration. Даже с этими двумя свойствами AVPlayer просто воспринимает их как «предложения», что в основном означает, что не удивляйтесь, если ваши предложения будут полностью проигнорированы, AVPlayer оставляет за собой право использовать любой битрейт и буфер пересылки, который он хочет.

ПРЕДУПРЕЖДЕНИЕ. Ниже перечислены легкие преступления, и это не рекомендуется для вашего производственного приложения. Но все равно интересно поэкспериментировать с такой исследовательской записью в блоге.

Итак, кому-то пришла в голову блестящая идея. Если AVPlayer не собирается переключаться на дорожку только для аудио, могу ли я заставить его это сделать? Что если, когда мы отключаем проигрыватель от представления, мы также устанавливаем player. preferredPeakBitrate на что-то низкое, например 300000 (чуть выше битрейта звуковой дорожки). И затем, когда сцена возвращается с фона, мы можем установить player.preferredPeakBitrate = 0 , по сути, сбрасывая его на значение по умолчанию.

Низко, и вот, это сработало! Я мог видеть, что, как только приложение перешло в фоновый режим, я установил player.preferredPeakBitrate = 300000 , и плеер начал загружать воспроизведение только аудио. Когда игрок вернулся и player.preferredPeakBitrate не был установлен, игрок вернулся к загрузке более высокого качества.

Успех? Ну не совсем. Проблема с этим подходом заключается в том, что AVPlayer по-прежнему поддерживает буфер контента, поэтому поток выглядит следующим образом:0009

  1. Приложение переходит в фоновый режим, начинает загрузку воспроизведения только со звуком, и видео отключается от просмотра, звук все еще воспроизводится.
  2. Приложение выходит на передний план, начинает загрузку более высокой версии и видео снова прикрепляется к просмотру.

Проблема в том, что на шаге 2 AVPlayer уже буферизовал воспроизведение только аудио и не собирается просто выбрасывать весь этот буфер. AVPlayer будет воспроизводить то, что он уже загрузил, что означает, что проигрыватель снова подключен к представлению, но видеодорожка отсутствует, поэтому ваш пользователь смотрит на черный экран со звуком. Так что это не выход. Следующее, что вы можете попробовать здесь, — это также возиться с PreferredForwardBufferDuration, поэтому идея в том, что вы можете получить некоторый контроль над буфером пересылки, чтобы при повторном подключении приложения у вас не было черного экрана.

Теперь это кажется слишком схематичным, чтобы делать это в вашем приложении. Я сказал, что совершаю здесь легкие преступления, а не серьезные преступления. И я не могу не подчеркнуть этого, будьте очень осторожными, возясь с этими настройками в своих приложениях. Также помните, что поведение этих предпочтительных* свойств понимается как «предложения» и может меняться в разных версиях iOS.

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

Проблема, с которой я столкнулся, заключается в том, что вам нужна и картинка в картинке, и возможность переключаться на звук только, когда приложение переходит в фоновый режим. The core issue is

  • lock phone : SceneDelegate fires sceneDidEnterBackground
  • close app: SceneDelegate fires sceneDidEnterBackground
  • transition to picture-in-picture: SceneDelegate fires sceneDidEnterBackground

Вы видите, куда я клоню. Для заблокируйте телефон и закройте приложение , мы хотим отсоединить проигрыватель от представления и продолжить воспроизведение звуковой дорожки. Для картинка в картинке , если мы отсоединим проигрыватель от представления, наше приложение рухнет. Насколько я могу судить, в функции sceneDidEnterBackground у нас нет простого способа определить, была ли сцена фоновой, потому что телефон заблокирован, приложение закрыто или приложение перешло в режим «картинка в картинке».

Возможно, вам придется выбрать один из вариантов для вашего приложения:

  • Возможности «картинка в картинке»
  • Воспроизведение звука, когда сцена переходит в фоновый режим

Для этого примера мне нужен последний вариант, поэтому я установил = false в AVPlayerViewController.

Мне также еще предстоит найти приложение, которое выполняет оба эти действия, вы знаете одно? Вы нашли обходной путь для этого? Я не знаю. Я не сомневаюсь, что решение может быть, поэтому, если вы его найдете, пожалуйста, свяжитесь со мной!

Пример приложения с этой функцией фонового звука находится в репозитории muxinc/examples на Github.

AVPlayer (iOS)

Интеграция Gumlet Insights с AVPlayer для собственных приложений iOS.

Предложить изменения

Этот SDK Insights позволяет получать полезные данные об использовании видео в ваших приложениях. AVPlayer — встроенная функция iOS для управления воспроизведением. AVPlayer — это два подхода AVPlayerLayer и AVPlayerViewController .

Gumlet Insights доступен через CocoaPods и диспетчер пакетов Swift.

  1. Создайте Podfile или измените Podfile для использования SDK (frameworks) с помощью use_frameworks!
  2. Добавьте модуль в Podfile
 # платформа: ios, '13.0'
использовать_фреймворки!
цель 'InsightsDemoApp' сделать
  # Модули для InsightsDemoApp
    pod 'GumletInsightsSDKAVPlayer', '~>1. 0'
    
конец
 
  1. Запустите обновление репозитория pod , чтобы добавить новый добавленный источник, и запустите Pod install , чтобы установить его.
  2. импортировать SDK в ваш файл
 импорт GumletInsightsSDKAVPlayer
 
  1. В Xcode нажмите «Файл» > «Пакеты Swift» > «Добавить зависимость пакета…»
  2. URL-адрес репозитория пакетов — https://github.com/gumlet/gumlet-insights-sdk-avplayer.git
  3. Нажмите Далее
  4. Выберите по умолчанию Филиал пакета основной и нажмите Следующий
  5. Xcode загружает пакет Gumlet Insights в целевое приложение.
  6. импортировать SDK в ваш файл
 импорт GumletInsightsSDKAVPlayer
 
  1. Щелкните Готово .

Получить идентификатор свойства из панели инструментов Gumlet.

С AVPlayerViewController используйте метод initAVPlayerViewController , а если вы используете AVPlayerLayer , вместо этого используйте метод initAVPlayerLayer .

 пусть playerVC = AVPlayerViewController()
 пустьgumletConfig = GumletInsightsConfig()
 gumletConfig.proprtyId = "Идентификатор вашего объекта"
 GumletInsightsSDK.initAVPlayerViewController(playerVC, config:gumletConfig)
 

👍

Готово

После выполнения этих шагов вы должны начать видеть данные на настраиваемой панели инструментов.

Вы можете отправлять собственные пользовательские данные на нашу панель инструментов через SDK. При создании конфигурации для инициализации объекта SDK вы можете передать эти параметры.

Gumlet разрешает метаданные для пользователя, проигрывателя и видео через GumletInsightsCustomUserData , GumletInsightsCustomPlayerData и GumletInsightsCustomVideoData

 let gumletConfig = GumletInsightsConfig()
 gumletConfig. proprtyId = "Идентификатор вашего объекта"
 
 пусть userData = GumletInsightsCustomUserData()
 userData.userId = "123"
 userData.userName = "Океан Буржуа"
 userData.userEmail = "[электронная почта защищена]"
 userData.userPhone = "(840)-295-4133"
 userData.userProfileImage = "https://assets.gumlet.io/assets/gumlet-logo-white-font.png?w=240&format=auto"
 userData.userAddressLine1 = "8774, Rue de la Mairie"
 userData.userAddressLine2 = ""
 userData.userCity = "Реймс"
 userData.userState = "Земли"
 userData.userCountry = "Франция"
 userData.userZipcode = "83894"
 пусть customVideoData = GumletInsightsCustomVideoData()
 customVideoData.customVideotitle = "Пилот";
 customVideoData.customVideoId = "HIMYMSeason1Episode1"
 customVideoData.customVideoProducer = "Эдже Текелиоглу"
 customVideoData.customContentType = "эпизод"
 customVideoData.customVideoDurationMillis = 2600000 // 43 минуты 20 секунд
 customVideoData.customVideoSeries = "HIMYMSeason1"
 customVideoData.customVideoVariantName = ""
 customVideoData. customVideoVariant = ""
 customVideoData.customEncodingVariant = "test1"
 customVideoData.customVideoLanguage = "Английский"
 пусть playerData = GumletInsightsCustomPlayerData()
 playerData.GumletPlayerName = "Трейлер"
 playerData.GumletPlayerIntegrationVersion = "v1.1"
 playerData.gumletPageType = "Домашняя страница"
 GumletInsightsSDK.initAVPlayerViewController(playerVC, userData: userData, customPlayerData: playerData, customVideoData: customVideoData, config: gumletConfig)
 

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

Используйте функцию updateData(), доступную в SDK

 let userData = GumletInsightsCustomUserData()
userData.userId = "123"
userData.userName ="Кристель Роберт"
userData.userEmail = "[электронная почта защищена]"
GumletInsightsSDK.updateData(playerVC, userData: userData)
 

Если ваше приложение поддерживает несколько видео в одном и том же проигрывателе после его инициализации, вам необходимо указать нашему SDK отслеживать новые сведения о видео после того, как проигрыватель завершит воспроизведение видео и собирается начать новое видео.

Используйте функцию updateData(), доступную в SDK

 let customVideoData = GumletInsightsCustomVideoData()
customVideoData.customVideotitle ="Эпизод2"
GumletInsightsSDK.updateData(playerVC, customVideoData: customVideoData)
 

Этот класс используется для создания объекта конфигурации, который является обязательным для инициализации Gumlet Insights SDK. Он имеет уникальный идентификатор свойства для вашего проекта, который можно сгенерировать на панели инструментов

 let gumletConfig = GumletInsightsConfig().
gumletConfig.proprtyId = "Идентификатор вашего объекта"
 

Используйте этот метод для инициализации Gumlet SDK, чтобы начать мониторинг событий на данном AVPlayerViewController. Функция ожидает обязательный объект конфигурации и объект AVPlayerViewController для подключения.
Это минимум, который вам нужно сделать, чтобы начать.

 пусть playerVC = AVPlayerViewController()
пустьgumletConfig = GumletInsightsConfig()
gumletConfig. proprtyId = "Идентификатор вашего объекта"
GumletInsightsSDK.initAVPlayerViewController(playerVC, config:gumletConfig)
 

Существует возможность передавать различные пользовательские данные, а именно. пользовательские данные пользователя, пользовательские данные проигрывателя и пользовательские видеоданные.

 пусть playerVC = AVPlayerViewController()
пустьgumletConfig = GumletInsightsConfig()
gumletConfig.proprtyId = "Идентификатор вашего объекта"
пусть userData = GumletInsightsCustomUserData()
userData.userId = "123"
userData.userName = "Океан Буржуа"
userData.userEmail = "[электронная почта защищена]"
userData.userPhone = "(840)-295-4133"
userData.userProfileImage = "https://assets.gumlet.io/assets/gumlet-logo-white-font.png?w=240&format=auto"
userData.userAddressLine1 = "8774, Rue de la Mairie"
userData.userAddressLine2 = ""
userData.userCity = "Реймс"
userData.userState = "Земли"
userData.userCountry = "Франция"
userData.userZipcode = "83894"
пусть customVideoData = GumletInsightsCustomVideoData()
customVideoData. customVideotitle = "Пилот";
customVideoData.customVideoId = "HIMYMSeason1Episode1"
customVideoData.customVideoProducer = "Эдже Текелиоглу"
customVideoData.customContentType = "эпизод"
customVideoData.customVideoDurationMillis = 2600000 // 43 минуты 20 секунд
customVideoData.customVideoSeries = "HIMYMSeason1"
customVideoData.customVideoVariantName = ""
customVideoData.customVideoVariant = ""
customVideoData.customEncodingVariant = "test1"
customVideoData.customVideoLanguage = "Английский"
пусть playerData = GumletInsightsCustomPlayerData()
playerData.GumletPlayerName = "Трейлер"
playerData.GumletPlayerIntegrationVersion = "v1.1"
playerData.gumletPageType = "Домашняя страница"
GumletInsightsSDK.initAVPlayerViewController(playerVC, config:gumletConfig, userData: userData, customPlayerData: playerData, customVideoData: customVideoData)
 

Этот класс используется для создания объекта конфигурации, который используется для передачи пользовательских данных на панель инструментов через SDK Gumlet Insights. Полный список пользовательских параметров доступен здесь

 let userData = GumletInsightsCustomUserData()
userData.userId = "123"
userData.userName = "Океан Буржуа"
userData.userEmail = "[электронная почта защищена]"
userData.userPhone = "(840)-295-4133"
userData.userProfileImage = "https://assets.gumlet.io/assets/gumlet-logo-white-font.png?w=240&format=auto"
userData.userAddressLine1 = "8774, Rue de la Mairie"
userData.userAddressLine2 = ""
userData.userCity = "Реймс"
userData.userState = "Земли"
userData.userCountry = "Франция"
userData.userZipcode = "83894"
 

Этот класс используется для создания объекта конфигурации, который используется для передачи видеоданных на панель инструментов через SDK Gumlet Insights. Полный список пользовательских параметров видеоданных доступен здесь

 let customVideoData = GumletInsightsCustomVideoData()
customVideoData.customVideotitle = "Пилот";
customVideoData.customVideoId = "HIMYMSeason1Episode1"
customVideoData. customVideoProducer = "Эдже Текелиоглу"
customVideoData.customContentType = "эпизод"
customVideoData.customVideoDurationMillis = 2600000 // 43 минуты 20 секунд
customVideoData.customVideoSeries = "HIMYMSeason1"
customVideoData.customVideoVariantName = ""
customVideoData.customVideoVariant = ""
customVideoData.customEncodingVariant = "test1"
customVideoData.customVideoLanguage = "Английский"
 

Этот класс используется для создания объекта конфигурации, который используется для передачи пользовательских данных игрока на панель инструментов через SDK Gumlet Insights. Полный список параметров пользовательских данных игрока доступен здесь

 let playerData = GumletInsightsCustomPlayerData()
playerData.GumletPlayerName = "Трейлер"
playerData.GumletPlayerIntegrationVersion = "v1.1"
playerData.gumletPageType = "Домашняя страница"
 

Существует возможность обновления различных пользовательских параметров данных, когда SDK уже инициализирован. Каждый тип данных является взаимоисключающим и необязательным.

 пусть userData = GumletInsightsCustomUserData()
userData.userId = "123"
userData.userName ="Кристель Роберт"
userData.userEmail = "[электронная почта защищена]"
userData.userPhone = "(078)-380-95-96"
userData.userProfileImage = "https://assets.gumlet.io/assets/gumlet-logo-white-font.png?w=240&format=auto"
userData.userAddressLine1 = "8774, Rue de la Mairie"
userData.userAddressLine2 = ""
userData.userCity = "Реймс"
userData.userState = "Земли"
userData.userCountry = "Франция"
userData.userZipcode = "83894"
пусть customVideoData = GumletInsightsCustomVideoData()
customVideoData.customVideotitle = "эпизод";
customVideoData.customVideoId = "HIMYMSeason1Episode2"
customVideoData.customVideoProducer = "Эдже Текелиоглу"
customVideoData.customContentType = "эпизод"
customVideoData.customVideoDurationMillis = "2405000"
customVideoData.customVideoSeries = "HIMYMSeason1"
customVideoData.customVideoVariantName = ""
customVideoData.customVideoVariant = ""
customVideoData. customEncodingVariant = "test1"
customVideoData.customVideoLanguage = "Английский"
GumletInsightsSDK.updateData(playerVC, config:gumletConfig, userData: userData, customVideoData: customVideoData)
 

Обновлено 24 дня назад


Помогла ли вам эта страница?

Воспроизведение видео с помощью AVPlayer в SwiftUI

12 октября 2020 г.

в

Swift

Я все больше и больше сталкивался со SwiftUI, и мне очень хотелось посмотреть, что мы можем сделать с видеоконтентом. Сегодня я поделюсь своими выводами, покажу, как воспроизводить видео с помощью AVFoundation в SwiftUI, включая некоторые ошибки, которых следует избегать.

Лучший способ воспроизведения мультимедиа на iOS — это использование AVFoundation, платформы Apple для воспроизведения аудио или видео на любой из ее платформ. Остановлюсь только на видео.

Как вы могли догадаться, у нас нет готового просмотра видео, с которым мы могли бы поиграть. Итак, первым шагом будет создание видеоплеера с UIKit и вывод его на SwiftUI .

UIKit Player View

Если вы не знакомы с AVFoundation, у нас нет «готового к игре» представления для использования. Или, по крайней мере, не так, как мы этого хотим. AVFoundation поставляется с AVPlayerViewController , который дает вам универсальный UIViewController, куда вы можете передавать медиафайлы. В противном случае он находится на более низком уровне, используя AVPlayerLayer на уровне слоя.

Поскольку мы хотим оставаться «на практике», имеет смысл использовать последний вариант.

 перечисление PlayerGravity {
    case аспектFill
    дело изменить размер
}
класс PlayerView: UIView {
    
    var player: AVPlayer? {
        получить {
            вернуть playerLayer.player
        }
        установлен {
            playerLayer. player = новое значение
        }
    }
    
    пусть гравитация: PlayerGravity
    
    init(игрок: AVPlayer, гравитация: PlayerGravity) {
        собственная гравитация = гравитация
        super.init(кадр: .ноль)
        self.player = игрок
        self.backgroundColor = .черный
        установкаСлой()
    }
    
    функция setupLayer() {
        переключить гравитацию {
    
        случай .aspectFill:
            playerLayer.contentsGravity = .resizeAspectFill
            playerLayer.videoGravity = .resizeAspectFill
            
        чехол .resize:
            playerLayer.contentsGravity = .resize
            playerLayer.videoGravity = .resize
            
        }
    }
        
    требуется инициализация? (кодер: NSCoder) {
        fatalError("init(coder:) не реализован")
    }
    
    переменная playerLayer: AVPlayerLayer {
        вернуть слой как! AVPlayerLayer
    }
    
    // Переопределить свойство UIView
    переопределить статический var layerClass: AnyClass {
        вернуть AVPlayerLayer. self
    }
}
 

Чтобы приблизить AVPlayerLayer к нам, я переопределяю класс слоя UIView , чтобы дать нам то, что мы хотим. Остальное — это аксессуары вокруг него. Наконец, я представил PlayerGravity , который будет полезен для быстрого изменения размера содержимого нашего проигрывателя при использовании со SwiftUI.

Как видите, в представлении нет никакой логики, нет контроллера плеера, нет плей/паузы, здесь только для рендеринга.

Мы можем перенести это представление в SwiftUI.

Представление SwiftUI

Чтобы предоставить SwiftUI наш PlayerView, нам нужно реализовать определенный протокол: UIViewRepresentable . Я создал для этого отдельный класс, так как он будет использоваться только в SwiftUI.

 окончательный класс PlayerContainerView: UIViewRepresentable {
    typealias UIViewType = PlayerView
    
    пусть игрок: AVPlayer
    пусть гравитация: PlayerGravity
    
    init(игрок: AVPlayer, гравитация: PlayerGravity) {
        self. player = игрок
        собственная гравитация = гравитация
    }
    
    func makeUIView (контекст: контекст) -> PlayerView {
        вернуть PlayerView(игрок: игрок, гравитация: гравитация)
    }
    
    func updateUIView(_ uiView: PlayerView, context: Context) { }
}
 

Очень похож на наш предыдущий класс, этот объект здесь только для создания представления PlayerView . Опять же, никакой логики, мы только передаем игрока в представление. Я вернусь в последней части, почему мы не должны помещать туда логику.

Наш контейнер готов предоставить нам представление, мы можем погрузиться в часть SwiftUI.

Реализация SwiftUI

 struct ContentView: View {
    
    пусть модель: PlayerViewModel
    в этом() {
        модель = PlayerViewModel (имя файла: «видео»)
    }
    
    var body: некоторый View {
        PlayerContainerView (игрок: model.player, гравитация: .center)
    }
 

Реализация остается очень простой в части тела. Мы создаем представление контейнера и передаем наши настройки. Что нас интересует, так это на PlayViewModel .

 класс PlayerViewModel: ObservableObject {
    пусть игрок: AVPlayer
    
    инициализация (имя файла: строка) {
        пусть url = Bundle.main.url (для ресурса: имя файла, с расширением: «mp4»)
        self.player = AVPlayer(playerItem: AVPlayerItem(url: url!))
        самостоятельная игра()
    }
    
    функция воспроизведения () {
        пусть currentItem = player.currentItem
        если currentItem?.currentTime() == currentItem?.duration {
            currentItem?.seek (к: .zero, завершениеHandler: ноль)
        }
        
        player.play()
    }
    
    функция паузы () {
        игрок.пауза()
    }
    
}
 

Поскольку мой ресурс является частью комплекта приложений, я предварительно загружаю его при создании элемента, а затем начинаю его воспроизведение.

Вот и все.

При создании ContentView он передаст проигрыватель (который, как мы знаем, работает с мультимедиа) своим подпредставлениям. Состояние игрока остается с PlayerViewModel . Вы не увидите, как он воспроизводится в Xcode Canvas (что ожидается), но если вы запустите его на симуляторе физического устройства, ваше видео будет воспроизводиться.

Подождите, это все? Я думал, что это будет намного сложнее.

Да. Довольно аккуратно, правда?

Мы не рассмотрели элементы управления или состояние проигрывателя на случай, если вы воспроизведете удаленный файл, так что все просто. Позвольте мне немного больше погрузиться в элементы управления и способ распространения действий.

Элементы управления SwiftUI Player

Давайте сначала сосредоточимся на двух действиях: воспроизведении и паузе.

 перечисление PlayerAction {
    дело играть
    пауза в регистре
}
 

В моей самой первой попытке создать видеоплеер я хотел оставить PlayerView хранит логику плеера и предоставляет ей только действия. Похоже на то.

 класс PlayerViewModel: ObservableObject {
    let actionSubject = PassthroughSubject()
    действие var: AnyPublisher {
        вернуть actionSubject.eraseToAnyPublisher()
    }
    @Published var isPlaying: Bool = false {
        сделалSet {
            если играет {
                actionSubject.send(.play)
            } еще {
                actionSubject.send(.pause)
            }
        }
    }
    
    // ...
}
структура ContentView: представление {
    
    Модель переменной @ObservedObject: PlayerViewModel
    // ...
    тело переменной: некоторые {
        Встек {
            PlayerContainerView (имя файла: self.model.filename, гравитация: .center, действие: $model.action)
            Кнопка(действие: {
                self.model.isPlaying.toggle()
            }, этикетка: {
                Изображение (имя системы: self.model.isPlaying? «пауза»: «воспроизведение»)
                    .заполнение()
            })
        }
        
    }
 

Идея была довольно проста: переключение состояния PlayerViewModel вызовет новое действие, это действие будет прослушиваться PlayerView и воспроизводиться или приостанавливаться соответственно.

К сожалению, у меня было много проблем с этим решением, в основном потому, что, насколько я понимаю, представления SwiftUI должны быть без состояния и не хранить данные : каждый переключатель на проигрывателе фактически воссоздавал PlayerContainerView , а также PlayerView . Он не удерживал свое предыдущее состояние.

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

Итак, как включить элементы управления плеером?

Что ж, решение может быть проще.

Я выставляю логическое значение в PlayerViewModel , что-то, что ContentView может переключать. Так как он содержит AVPlayer , то больше изменений не требуется, каскадные представления будут отражать изменения.

 класс PlayerViewModel: ObservableObject {
    пусть игрок: AVPlayer
    
    инициализация (имя файла: строка) {
        пусть url = Bundle.main.url (для ресурса: имя файла, с расширением: «mp4»)
        self.player = AVPlayer(playerItem: AVPlayerItem(url: url!))
        играть в()
    }
    
    @Published var isPlaying: Bool = false {
        сделалSet {
            если играет {
                играть в()
            } еще {
                Пауза()
            }
        }
    }
    
    функция воспроизведения () {
        пусть currentItem = player.currentItem
        если currentItem?.currentTime() == currentItem?.duration {
            currentItem?.seek (к: .zero, завершениеHandler: ноль)
        }
        
        player.play()
    }
    
    функция паузы () {
        игрок.пауза()
    }
}
 

Я думаю, это все еще хорошая новость, вам не нужно включать фреймворк Combine в цикл. Если вам небезразлично состояние вашего плеера, вам придется наблюдать за ним с помощью KVO. Может быть, лучше избегать сложности стекирования.

Улучшения SwiftUI Player

Если отступить на секунду от этого кода, кажется, что мы не добились большого прогресса. Да, он отображает простой плеер, но нужен ли для этого SwiftUI?

Ну, я к делу.

Теперь, когда у нас есть представление, воспроизводящее видео, мы можем воспользоваться преимуществами модификаторов SwiftUI, чтобы улучшить взаимодействие с игроком.

Например, я могу создать клип из своего видео и очень легко включить эффект размытия.

 PlayerContainerView(игрок: модель.плеер, гравитация: .центр)
    .frame(ширина: 300, высота: 300)
    .размытие(радиус: 3.0)
    .clipShape (Круг ())
 

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

 PlayerContainerView(игрок: модель.плеер, гравитация: .aspectFill)
    .frame(высота: 200)
    . overlay(Цвет.черный.Непрозрачность(0.1))
    .заполнение()
    .border(Цвет.черный, ширина: 2)
    .заполнение()
 

Мы можем изобразить эффект наложения или размытия на основе быстрого движения вперед / назад, есть много других вариантов для игры.

Этот код доступен на Github как videoSample. Видео предоставлено Cottonbro.


В заключение мы увидели, как создать собственное представление и как предоставить его коду SwiftUI. Также важно понимать каждый уровень логики, чтобы по возможности избежать сложности, как в моей первой попытке соединить Combine и KVO, прежде чем я понял, что в этом нет необходимости.

На мой взгляд, самая интересная часть этого эксперимента — это все возможности, которые SwiftUI может предоставить AVPlayer для настраиваемого эффекта и сделать его действительно отличным на устройствах Apple.

Вопрос? Обратная связь? Не стесняйтесь, пишите мне в Twitter.

Интеграция воспроизведения видео в приложения iOS с использованием SwiftUI — SerialCoder.

dev

Последнее обновление: 30 августа 2022 г.

⏱ Время чтения: 4 минуты

Воспроизведение видео в приложениях для iOS никогда не было особенно сложной задачей. С появлением SwiftUI и iOS 14 это стало однострочной задачей с использованием нового представления VideoPlayer. Но что, если старые версии iOS также должны поддерживаться? Как мы можем воспроизвести там видеофайлы и какие дополнительные действия должны предпринять разработчики?

Мы рассмотрим все это в этом посте и предоставим ответы и решения, которые позволят вам интегрировать возможности воспроизведения видео в ваши приложения в кратчайшие сроки!

Представление VideoPlayer

Начнем с совершенно нового представления, которое SwiftUI поддерживает в iOS 14 и выше, которое называется VideoPlayer . Это новое дополнение к фреймворку AVKit, которое было доступно начиная с iOS 8, и его целью было предоставить встроенный интерфейс для воспроизведения видео и аудио в приложениях.

Для целей этого поста я добавил образец видеофайла (файл .mov) в новый проект в Xcode. Кроме того, я изменил минимальную цель развертывания на iOS 13 , так что мы можем немного поговорить о том, как воспроизводить видео и в более старых версиях системы.

Первым шагом к интеграции возможностей воспроизведения видео в приложение является импорт инфраструктуры AVKit в представление SwiftUI, которое будет содержать VideoPlayer :

 

импорт AVKit

 

Представление VideoPlayer должно быть снабжено экземпляром другого класса, AVPlayer, который, в свою очередь, управляет воспроизведением аудио- и видеофайлов. Это часть фреймворка AVFoundation , и о нем стоит прочитать, если вы хотите узнать больше. Здесь мы не будем делать с ним ничего особенного, поэтому остановимся на основах. При инициализации такого объекта необходимо укажите URL-адрес видеофайла , который мы хотим воспроизвести.

Для демонстрации мы будем использовать URL-адрес локального образца видеофайла, находящегося в комплекте приложения. Вычисленное свойство videoURL , показанное ниже, формирует и возвращает этот URL:

1

2

3

4

5

6

7

8

9

 

структура VideoPlayerView: View {

    var videoURL: URL? {

        Bundle.main.url(forResource: «video_sample», withExtension: «mov»)

    }

    

    …

5 9

9

Обратите внимание, что приведенное выше может вернуть нулевое значение вместо фактического URL-адреса, поэтому первое, что мы должны сделать внутри тела представления, — это убедиться, что у нас есть URL-адрес для использования:

4}

}

44}

}

44}

}

44}

1

2

3

4

5

6

7

8

9

ВАР КОЛИСКИ: Некоторое представление {

Если let url = Videourl {

} else {

Текст («Видео URL недоступен!»)

}

}

Если URL-адрес недоступен, мы просто отображаем текстовое представление с информативным сообщением, как показано выше.

В если тело сейчас, мы инициализируем объект AVPlayer , используя videoURL ; затем мы передадим его в качестве аргумента инициализатору представления VideoPlayer :

1

2

3

4

5

6

7

8

10

11

 

var body: some View {

    if let url = videoURL {

VideoPlayer (Player: AvPlayer (URL: URL))

} els

Выделенная выше строка — это все, что нам нужно для воспроизведения видео в iOS 14 и выше с помощью SwiftUI!

Однако, учитывая, что минимальная цель развертывания приложения установлена ​​на iOS 13, эта строка должна быть включена в , если # available условие, чтобы убедиться, что оно поддерживается системой:

1

2

3

4

5

6

7

8

10

11

12

13

10 0009

110009

12

13

 

var body: some View {

    if let url = videoURL {

        if # available(iOS 14. 0, *) {

              A0009

        } else {

            // Здесь можно добавить поддержку iOS 13!

        }

    } else {

        Текст («URL видео недоступен!»)

    }

}

 
9

    }

Запустив приложение на устройстве или в симуляторе с iOS 14, видео будет воспроизводиться так, как ожидалось!

Далее, давайте посмотрим, как мы можем управлять тем же самым в более старых версиях системы.

AVPlayerViewController

Чтобы можно было воспроизводить видео в версиях iOS до 14 или даже прибегнуть к решению не по умолчанию, необходимо использовать класс AVPlayerViewController; контроллер представления UIKit , который отображает видеоплеер.

Поскольку смешение UIKit и SwiftUI в этом случае неизбежно, мы должны создать новую структуру , соответствующую протоколу UIViewControllerRepresentable . Это средство для содержания контроллера представления в SwiftUI и экземпляра этой структуры, которую мы назовем 9. 0457 VideoPlayerController , это то, что мы будем вызывать из среды SwiftUI:

 

struct VideoPlayerController: UIViewControllerRepresentable {

 

}

 

Обычно пользовательские типы, такие как VideoPlayerController , реализуются в отдельном файле. В этом случае нам нужно импортировать следующие два фреймворка:

 

импорт SwiftUI

импорт AVKit

 

Любой тип UIViewControllerRepresentable должен обязательно реализовывать два метода:

  1. Метод для инициализации, настройки и возврата экземпляра AVPlayerViewController .
  2. Способ обновления контроллера представления из SwiftUI. Здесь нам не понадобится именно этот, но он обязательно должен быть определен.

Вот все вышеперечисленное в коде:

1

2

3

4

5

6

7

8

10

11

 

struct VideoPlayerController: UIViewControllerRepresentable {    

    func makeUIViewController(context: Context) -> AVPlayerViewController {

    

    9

    

    func updateUIViewController(_ uiViewController: AVPlayerViewController, context: Context) {

        

    }    

}

 

Как и в предыдущей части, здесь мы также будем использовать AVPlayer , поэтому нам заранее нужен URL-адрес видео. По этой причине мы определим следующее свойство, значение которого будет передано в качестве аргумента во время инициализации VideoPlayerController 9.0458 экземпляр:

1

2

3

4

5

6

7

8

struct videoplayercontroller: uiviewControllerRepresentable {

VAR Videourl: URL

...

}

В методе makeUIViewController(context:) теперь мы собираемся создать два объекта; AVPlayer и экземпляр AVPlayerViewController :

1

2

3

4

5

6

 

func makeUIViewController(context: Context) -> AVPlayerViewController {

    let player = AVPlayer(url: videoURL)

    let playerViewController = AVPlayerViewController()

9

0 9

Объект playerViewController имеет свойство player , и мы назначим экземпляр AVPlayer этому свойству. В конце концов мы вернем контроллер представления из метода:

1

2

3

4

5

6

7

8

9

9

 

функция makeUIViewController(контекст: контекст) -> AVPlayerViewController {

    let player = AVPlayer(url: videoURL)

    let playerViewController = AVPlayerViewController()

 

    playerViewController.player = player

 

    return playerViewController

}

 

Эти несколько фрагментов кода — все, что нам нужно, чтобы представить контроллер представления видеоплеера в среде SwiftUI.

Вернемся к реализации SwiftUI сейчас и внутри 9Случай 0457 else мы оставили пустым в предыдущей части. Мы просто создадим в нем экземпляр VideoPlayerController , передав URL видео в качестве аргумента:

1

2

3

4

5

6

7

8

10

11

12

13

10 0009

110009

12

13

 

var body: some View {

    if let url = videoURL {

If #aveableable (iOS 14. 0, *) {

VideoPlayer (Player: AvPlayer (URL: URL))

} else {

VideoPlayerController (Videourl: url)

}

} else {

. «URL-адрес видео недоступен!»)

    }

}

 

Теперь мы можем воспроизводить видео и на более старых версиях системы!

Заключение

По общему признанию, интеграция функций воспроизведения видео в приложения iOS — простая задача, даже если нам нужно поддерживать более старые версии системы или мы просто хотим использовать контроллер представления UIKit. То, что я продемонстрировал в этом посте, охватывает основы, которых достаточно в большинстве случаев. Тем не менее, официальная документация Apple всегда доступна, чтобы узнать, как выполнить дальнейшую настройку и изучить различные доступные варианты.

Спасибо за прочтение! 🚀

Загрузите демонстрационный проект отсюда.

Если вы нашли этот пост полезным, рассмотрите возможность поделиться им! Кроме того, подпишитесь на мою рассылку, чтобы получать уведомления обо всем новом, опубликованном здесь, прямо в свой почтовый ящик, и следите за мной в Twitter, YouTube, Medium и других социальных сетях.

scroll to top