VideoPlayer Linux ogv

Ошибки и баги Unity3D

VideoPlayer Linux ogv

Сообщение wedmal 03 ноя 2020, 10:22

Videoplayer на Linux отказывается отображать видеоролик.
Логи молчат.
Код выполняется полностью.
На Windows всё работает
Этот же код, ранее, работал и на Linux, но с другим роликом.
Формат ролика ogv
Видео-кодек - Theora
Востановил Linux из backup до момента работающего ролика, не помогло.
Реализовывал работу плеера на событиях - результат тот же.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class video : MonoBehaviour
{


    public RawImage image;
    public VideoClip videoToPlay;
    private VideoPlayer videoPlayer;
    public VideoSource videoSource;
    private AudioSource audioSource;
    public Text text_;
   
    private void OnEnable()
    {
        videoPlayer = new VideoPlayer();
        //videoPlayer.source = VideoSource.Url;
        //videoPlayer.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";
        StartCoroutine(playVideo());
    }
    private void OnDisable()
    {

    }

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    IEnumerator playVideo()
    {
        text_.text = text_.text + "/r/n/" + "1";
        //Add VideoPlayer to the GameObject
        videoPlayer = gameObject.AddComponent<VideoPlayer>();
        text_.text = text_.text + "/r/n/" + "2";
        //Add AudioSource
        audioSource = gameObject.AddComponent<AudioSource>();
        text_.text = text_.text + "/r/n/" + "3";
        //Disable Play on Awake for both Video and Audio
        videoPlayer.playOnAwake = false;
        text_.text = text_.text + "/r/n/" + "4";
        audioSource.playOnAwake = false;
        text_.text = text_.text + "/r/n/" + "5";
        audioSource.Pause();
        text_.text = text_.text + "/r/n/" + "6";

        //We want to play from video clip not from url

        videoPlayer.source = VideoSource.VideoClip;
        text_.text = text_.text + "/r/n/" + "7";
        // Vide clip from Url
        //videoPlayer.source = VideoSource.Url;
        //videoPlayer.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";


        //Set Audio Output to AudioSource
        videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
        text_.text = text_.text + "/r/n/" + "8";

        //Assign the Audio from Video to AudioSource to be played
        videoPlayer.EnableAudioTrack(0, true);
        text_.text = text_.text + "/r/n/" + "9";
        videoPlayer.SetTargetAudioSource(0, audioSource);
        text_.text = text_.text + "/r/n/" + "10";

        //Set video To Play then prepare Audio to prevent Buffering
        videoPlayer.clip = videoToPlay;
        text_.text = text_.text + "/r/n/" + "11";
        videoPlayer.Prepare();
        text_.text = text_.text + "/r/n/" + "12";

        //Wait until video is prepared
        WaitForSeconds waitTime = new WaitForSeconds(1);
        text_.text = text_.text + "/r/n/" + "13";
        while (!videoPlayer.isPrepared)
        {
            Debug.Log("Preparing Video");
            //Prepare/Wait for 5 sceonds only
            yield return waitTime;
            //Break out of the while loop after 5 seconds wait
            break;
        }
        text_.text = text_.text + "/r/n/" + "14";
        Debug.Log("Done Preparing Video");

        //Assign the Texture from Video to RawImage to be displayed
        image.texture = videoPlayer.texture;
        text_.text = text_.text + "/r/n/" + "15";
        //Play Video
        videoPlayer.Play();
        text_.text = text_.text + "/r/n/" + "16";
        //Play Sound
        audioSource.Play();
        text_.text = text_.text + "/r/n/" + "17";
        Debug.Log("Playing Video");
        while (videoPlayer.isPlaying)
        {
            Debug.LogWarning("Video Time: " + Mathf.FloorToInt((float)videoPlayer.time));
            yield return null;
        }
        text_.text = text_.text + "/r/n/" + "18";
        Debug.Log("Done Playing Video");
    }

}
 
wedmal
UNец
 
Сообщения: 5
Зарегистрирован: 03 ноя 2020, 10:15

Re: VideoPlayer Linux ogv

Сообщение wedmal 03 ноя 2020, 10:42

Из документации:
https://docs.google.com/document/d/128X ... 3q0vM/edit
Формат H264, но всё равно не работает под Linux
wedmal
UNец
 
Сообщения: 5
Зарегистрирован: 03 ноя 2020, 10:15

Re: VideoPlayer Linux ogv

Сообщение Alex5 03 ноя 2020, 10:50

H264 - проприетарный кодек. Просто пересоберите его в linux и всё пойдёт. Эта битва будет вечной - допустим, у меня в системе, та же опера (основанная на движке хромого) отказывается показывать некоторые ролики на тытрубе с этим кодеком. Одно время назад игрался с заменой библиотеки (на библиотеку от хромиума, установленного в этой же системе), потом плюнул и стал смотреть такие ролики в другом браузере.
Alex5
UNIверсал
 
Сообщения: 451
Зарегистрирован: 22 авг 2019, 17:37

Re: VideoPlayer Linux ogv

Сообщение wedmal 03 ноя 2020, 12:55

Alex5 писал(а):H264 - проприетарный кодек. Просто пересоберите его в linux и всё пойдёт. Эта битва будет вечной - допустим, у меня в системе, та же опера (основанная на движке хромого) отказывается показывать некоторые ролики на тытрубе с этим кодеком. Одно время назад игрался с заменой библиотеки (на библиотеку от хромиума, установленного в этой же системе), потом плюнул и стал смотреть такие ролики в другом браузере.

Пересобрал x264 из исходников. Не помогло. Какие параметры компиляции могут на это влиять?
wedmal
UNец
 
Сообщения: 5
Зарегистрирован: 03 ноя 2020, 10:15

Re: VideoPlayer Linux ogv

Сообщение Alex5 04 ноя 2020, 09:34

wedmal писал(а):Пересобрал x264 из исходников. Не помогло. Какие параметры компиляции могут на это влиять?

Те, которые запрашивают согласие с лицензией. :)
Я говорил за идеальный случай. Когда кодек глобальный и один в системе. Но, реальность такова, что некоторые программы "носят" кодеки с собой. В результате получается "тут правильный кодек, а тут неправильный". В вашем случае, можно ещё попробовать пересобрать сам videoplayer. Ну и посмотреть внимательнее его флаги сборки.
Alex5
UNIверсал
 
Сообщения: 451
Зарегистрирован: 22 авг 2019, 17:37

Re: VideoPlayer Linux ogv

Сообщение wedmal 05 ноя 2020, 07:00

Нашёл решение.
Использование сторонних конвертеров не дало никакого результата.
Достаточно было щёлкнуть на ролик, в просмотре файла и изменить параметры видеоролика под Linux/Mac. С кодеком VP8 отлично работает.
https://disk.yandex.ru/client/disk/publicImages?idApp=client&dialog=slider&idDialog=%2Fdisk%2FpublicImages%2FvideoUnity.PNG
wedmal
UNец
 
Сообщения: 5
Зарегистрирован: 03 ноя 2020, 10:15


Вернуться в Глюки

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

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 0