@k0k0 (K0 k0)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【Unity】Video PlayerでYouTube動画を途中から再生したい

解決したいこと

UnityでYouTube動画を途中から再生したいです。

@idempotenceさんの投稿をもとに、Video Playerで指定した動画を途中から再生しようと試みました。
Video PlayerのSourceをVideo Clipにした場合は途中から再生できましたが、URLにした場合は最初から再生されてしまいました。

Video PlayerのSourceをURLにしている場合は、途中から再生することはできないのでしょうか。
解決方法を教えて下さると幸いです。

使用したコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;

public class NewBehaviourScript : MonoBehaviour {

    public VideoPlayer mPlayer;

    // Use this for initialization
    void Start () { 

        mPlayer.time = 10f;
        mPlayer.Play();

    }   
}
0 likes

1Answer

Windows版の Unity 2021.3.16f1 エディタ上で、ローカルのファイル(file:)と、ネットのファイル(http:)を使って実際に試してみたところ、指定通り途中から再生されました。
VideoPlayer自体は、ソースがURLでも、問題なく途中から再生できるようです。
ソースは、ダイレクトにmp4ファイルを指しています。

YouTubeで取得できるURLはWebプレイヤーのもので、動画ファイルそのもののURLは取得が難しいと思うのですが、どのようにされているのでしょうか?


追記

YouTube動画を再生するために以下のURLを使用していました。
https://unity-youtube-dl-server.herokuapp.com/watch?v=〇〇〇&cli=yt-dlp
参考:https://github.com/iBicha/UnityYoutubePlayer

参考先(github)に例示されているUnityのデモ動画 (YouTube)で試してみたところ、やはり指定通りに途中から再生されました。

ここで使われているunity-youtube-dl-serverは、Herokuで稼働するクラウドアプリで、指定したYouTube動画の生データを抽出して返すようです。

UnityYoutubePlayerのREADMEには、以下のようにも書かれていて、動画によって意図通りにならない可能性を伺わせます。

And use it directly in a VideoPlayer component. It will automatically redirect to the raw video format that can be played in Unity (in most cases)

一度、この動画(1PuGuqpHQGo)で試していただくのはいかがでしょうか?
もし、この動画でなら指定通りの位置から再生されるということでしたら、お使いの動画の特性で途中再生できないものと考えられます。


追記 2

…Video PlayerのWait For First Frameのチェックを外してみると、途中から再生され、UnityYoutubePlayerのURLでも途中から再生されました!

SourceがVideo ClipのときはWait For First Frameをチェックしていても途中から再生されるのに、SourceがURLのときはチェックを外さなければならない理由はよく分かっていません…

以下の公式ドキュメントによると、Wait For FirstFrameは、描画開始を読み込み完了まで遅らせる設定で、「チェックを外すと冒頭の数フレームがスキップされる可能性がある」と説明されています。

そのため、正しく「指定時間からの再生が行われた」わけではなく、「冒頭でフレーム落ちが生じた」可能性があります。

先の私の試行では、(デフォルトのまま)チェックが付いた状態で指定時間からの再生が行われていました。

1Like

Comments

  1. 情報ありがとうございます。
    回答本文に追記いたしました。
    よろしくお願いいたします。
  2. @k0k0

    Questioner

    ご説明いただき、ありがとうございます!

    私も@tetr4labさんが行ってくださったデモと同様に、ローカルのファイルの動画をURLで指定して途中から再生できるかどうか検証してみると、はじめから再生されていました。しかし、Video PlayerのWait For First Frameのチェックを外してみると、途中から再生され、UnityYoutubePlayerのURLでも途中から再生されました!

    SourceがVideo ClipのときはWait For First Frameをチェックしていても途中から再生されるのに、SourceがURLのときはチェックを外さなければならない理由はよく分かっていませんが、@tetr4labさんがデモをして正常に動作していることを教えてくださったおかげで、他の設定を見直すことができました。

    また、URLに関する情報やデバックの手順も学ぶことができました。

    本当にありがとうございました!!
  3. 追加の情報をありがとうございます。
    再度、追記いたしました。
    よろしくお願いいたします。
  4. @k0k0

    Questioner

    情報をありがとうございます。

    > そのため、正しく「指定時間からの再生が行われた」わけではなく、「冒頭でフレーム落ちが生じた」可能性があります。
    そうすると、他の設定を見直してチェックが付いた状態で指定時間から再生されるか検討してみます。
  5. 開始時間を変化させてみて、その通りに再生が前後すれば、フレーム落ちではないと考えられますね。

Your answer might help someone💌