VideoPlayer Transcoding

Программирование для iPhone & Android

VideoPlayer Transcoding

Сообщение hennessy 28 янв 2018, 19:45

Доброго времени суток!
Продолжаю борьбу с компонентом VideoPlayer, но уже постепенно сдаюсь, прошу помощи, так как, видимо, не хватает знаний в UnityEditor и C#.
Проблема вот в чем: VideoPlayer проигрывает файлы с компьютера, но когда запускаю приложение на телефоне просто черный экран. Все это происходит, потому что Unity использует встроенный транскодер (или кодек, не знаю как правильно), а на девайсе Андроид - Transcode по дефолту отключен.
Если вставлять в VideoPlayer файл напрямую из проекта, то проблемы нет. Так как видеофайлу можно настроить Trancode для Андроид, да и вообще для любой платформы, и тогда видео сразу подготавливается для Андроид и при заливке кодируется в нужный формат.
Но как включить Transcode для видеофайла, которого еще нет в проекте??
Вот код:
Синтаксис:
Используется csharp
...
    public GameObject player;
    VideoPlayer videoplayer1;
   
    //Для настройки Транскодинга
    VideoClipImporter Importer = new VideoClipImporter();
    VideoImporterTargetSettings ImporterTargetSettings = new VideoImporterTargetSettings();
    VideoCodec codec = new VideoCodec();
   
    private void Awake()
    {
        videoplayer1 = GetComponent<VideoPlayer>(); //Принимаем компонент Видеоплеер
       
        //videoplayer1.url = "/storage/B094-758D/Video/Mir_YP.avi";  //это для файла на Андроид
        videoplayer1.url = "D:/Films/Mir_YP.avi";  //это для файла на компе
        videoplayer1.Play();
     }
 

В разделе "Для настройки Транскодинга" привел три класса которые работают с настройкой Transcode.
А конкретнее есть такие свойсва:
VideoImporterTargetSetting.enabledTranscoding = true,
VideoClipImporter.SetTargetSetting(str platfrom, VideoImporterTargetSetting),
а доступ к проигрываемому файлу получаем через VideoPlayer.clip.

Но как прикрепить VideoClipImporter к VideoPlayer.clip ???
P.S.
https://docs.unity3d.com/ScriptReference/VideoClipImporter.html
https://docs.unity3d.com/ScriptReference/VideoImporterTargetSettings.html
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: VideoPlayer Transcoding

Сообщение waruiyume 29 янв 2018, 07:55

Никак, это эдиторные классы.
То, что в справке написано, разве не работает https://docs.unity3d.com/ScriptReferenc ... layer.html
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: VideoPlayer Transcoding

Сообщение hennessy 29 янв 2018, 17:27

Спасибо за ссылку, по ней и пытался подстроить свой скрипт, но не получалось, теперь все получилось!! Видимо проблема вот в этой строчке, которую я упорно игнорировал 3 дня:
Синтаксис:
Используется csharp
videoPlayer.Prepare();

Без неё Андроид не запустит видео. Спасибо Огромное @waruiyume

Тем не менее столкнулся с другой проблемой: компонент VideoPlayer в UnityEditor читает .avi файлы, но не читает .mkv файлы. При этом, когда я компилирую на девайсе, все наоборот, в упор не видит .avi файлы, зато читает .mkv. (mp4 файлы читает везде).
Уже готов смирится с тем, что игра будет читать только .mkv и .mp4, но зачастую фильмы качают в .avi формате. Хотелось бы его тоже добавить.
И здесь я опять же возвращаюсь к Transcode. Есть какие-нибудь мысли, как кодировать видео в рантайме?
Может как-нибудь запускать видео через Андроид плагин и передавать поток видео в саму игру. Это вообще возможно передавать из Андроид плагина какую-нибудь информацию в Unity скрипт? Если можно, что делать если эта информация - поток видео?


P.S. Простите за глупый вопрос, а с Эдиторными классами нельзя вообще работать? (зачем тогда представлены их API в документации, объясните если не трудно)


...Проверил только что код. Он и без VideoPlayer.Prepare нормально работает!
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: VideoPlayer Transcoding

Сообщение hennessy 29 янв 2018, 19:28

Все оказалось намного хуже, на андроиде он не просто .avi не читает. Он даже .mkv не все файлы читает..... Из 5 фильмов с форматом .mkv прочитал только 1!
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: VideoPlayer Transcoding

Сообщение hennessy 30 янв 2018, 04:09

Добрался до logcat:
01-30 03:37:02.188 23446 23501 W Unity: AndroidVideoMedia: Could not create decoder for mime type audio/ac3.
затем вырубает приложение с предложением отправить отчет.
При этом, если запустить .avi файл, приложение работает, но черный экран.
Уже Бог с ним с .avi. Хотя бы .mkv с .ac3 звуком запустить.

Может кто-нибудь сталкивался с подобной проблемой декодинга звука в Unity?
И что означает "mime type audio/ac3"?

Спасибо заранее за любую инфу!
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: VideoPlayer Transcoding

Сообщение Tolking 30 янв 2018, 09:59

P.S. Простите за глупый вопрос, а с Эдиторными классами нельзя вообще работать? (зачем тогда представлены их API в документации, объясните если не трудно)

Едитор классы работают в едиторе и нужны для расширения функционала едитора.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3