Exemple #1
0
        public void SwitchVideoFormat(int index)
        {
            if (index >= supportedVideoFormats.Count || index < 0)
            {
                return;
            }
            Stop();
            formatIndex = index;
            MediaFormat format = supportedVideoFormats[formatIndex];

            // use audio player if no audio stream found
            if (format.acodec == "none")
            {
                useAudioPlayer = true;
                MediaFormat audioFormat = TryGetAudioStream();
                InitAudioPlayer(audioFormat.url);
            }
            else
            {
                if (audioPlayer != null)
                {
                    audioPlayer.Stop();
                }
                useAudioPlayer = false;
            }
            SetVideoParsedUrl(format.url);
            Prepare();
        }
        private void UpdateQualityButton()
        {
            int         index      = ytdlVideoPlayer.formatIndex;
            MediaFormat format     = ytdlVideoPlayer.SupportedVideoFormats[index];
            string      formatText = format.format_note;

            if (string.IsNullOrEmpty(formatText))
            {
                formatText = string.Format("{0}p", format.height);
            }
            qualityButton.SetText(formatText);
        }
Exemple #3
0
 private MediaFormat TryGetAudioStream()
 {
     // get first available audio stream
     for (int i = 0; i < supportedVideoFormats.Count; i++)
     {
         MediaFormat format = supportedVideoFormats[i];
         if (format.acodec != "none" && format.acodec != null)
         {
             return(format);
         }
     }
     return(null);
 }
Exemple #4
0
        private void OnParseCompleted(MediaInfo info)
        {
            // parse completed
            isParsed = true;

            mediaInfo = info;

            // extract supported video format
            ExtractSupportedMediaFormats(mediaInfo);

            if (supportedVideoFormats.Count > 0)
            {
                // set initial quality format
                formatIndex = TryGetInitialFormatIndex();

                MediaFormat format = supportedVideoFormats[formatIndex];

                // use audio player if no audio stream found
                if (format.acodec == "none")
                {
                    useAudioPlayer = true;
                    MediaFormat audioFormat = TryGetAudioStream();
                    InitAudioPlayer(audioFormat.url);
                }
                else
                {
                    if (audioPlayer != null)
                    {
                        audioPlayer.Stop();
                    }
                    useAudioPlayer = false;
                }

                // set video player url
                videoPlayer.url = ValidParsedVideoUrl(mediaInfo, format.url);

                // prepare video for play
                Prepare();
            }
            else
            {
                Debug.LogWarningFormat(LOG_FORMAT, "No supported video stream format found!");
            }

            parseCompleted(this, mediaInfo);
        }
Exemple #5
0
        private int TryGetInitialFormatIndex()
        {
            // get target height
            int targetHeight = 360;

            switch (initialQuality)
            {
            case QualityType._360p:
                targetHeight = 360;
                break;

            case QualityType._720p:
                targetHeight = 720;
                break;

            case QualityType._1080p:
                targetHeight = 1080;
                break;

            case QualityType._1440p:
                targetHeight = 1440;
                break;

            case QualityType._2160p:
                targetHeight = 2160;
                break;
            }
            // search best fit video stream index
            int index = 0, minDiff = int.MaxValue;

            for (int i = 0; i < supportedVideoFormats.Count; i++)
            {
                MediaFormat format = supportedVideoFormats[i];
                int         diff   = Math.Abs(format.height - targetHeight);
                if (diff < minDiff)
                {
                    index   = i;
                    minDiff = diff;
                }
            }
            return(index);
        }