質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.36%

unity Videoplayerコンポーネントについて

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,241

BitCoin

score 53

unityに新しく導入された動画再生コンポーネントVideoplayerを使ってみましたが、音がデフォルトでは再生されないみたいだったのでスクリプトをかきました。
このサイトを参考にしました。

が、このコードで問題なく動くのですが気になったことがあります。

1つ目

まず一つが音質です。音が途中でプつプつなるのですがこれは仕様でしょうか?

2つ目

        videoPlayer.EnableAudioTrack (0, true);
        videoPlayer.SetTargetAudioSource (0, audioSource);
    videoPlayer.clip = videoToPlay;


上記のコードですがここが何をしているのかさっぱりわかりません。

このサイト
ではそれらしいことは書いてありましたが根本的なことはわかっていないようです。
どなたかわかる方いらっしゃらないでしょうか。

コード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class NewVideoClipController : MonoBehaviour {

    public RawImage image;
    public RenderTexture r ;
    public VideoClip videoToPlay;
    private VideoPlayer videoPlayer;
    private VideoSource videoSource;
    private AudioSource audioSource;

    void Start () {
        videoPlayer = gameObject.AddComponent<VideoPlayer>();
        audioSource = gameObject.AddComponent<AudioSource>();
        image.texture = r;
        videoPlayer.targetTexture = r;
        videoPlayer.EnableAudioTrack (0, true);
        videoPlayer.SetTargetAudioSource (0, audioSource);
        videoPlayer.clip = videoToPlay;
        videoPlayer.isLooping = true;
        videoPlayer.Play ();
    }
    void Update () {

    }
}


イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

順番が前後しますが、2つ目についてはそれぞれ

  • videoPlayer.EnableAudioTrack (0, true);...音声トラック0番を使用可能にする→図中①のチェックボックスをオンにすることに対応
  • videoPlayer.SetTargetAudioSource (0, audioSource);...音声トラック0番の出力先となるAudioSourceを指定する→図中②にAudioSourceをセットすることに対応
  • videoPlayer.clip = videoToPlay;...再生したいビデオクリップを指定する→図中③にビデオクリップをセットすることに対応

図

するものと思われます。
どうやらWindows版では音声をAudioSourceを経由せずに鳴らすモードをまだサポートしていないようですので、このような措置をとっているのでしょう。

1つ目の音の途切れについては、もしかすると解決困難かもしれません。実行環境や動画のサイズが影響しそうな気もしますが、調査不足ではっきりとは分かりませんでした(私の試した結果では、Mac版Unity上では映像や音の途切れは発生しなかったのに、そのプロジェクトをWindows版Unity上に持っていって実行すると途切れが発生しました)...

Issue Trackerにも[Win] Stuttering sound of mp4 files, video lagsAudioSource attached to VideoPlayer produces choppy sound when playing certain mp4 files with VideoPlayer created from scriptといった報告が出ており、今後のバージョンアップで解決されるのを待つことになるかもしれないですね。

Windows版Unity上でも、VideoPlayerやAudioSourceをスクリプトから追加するのではなく、エディタ上でコンポーネントをアタッチして、インスペクタ上でスクリプトで行っていたのと同様にRenderTextureやAudioSourceをセットして実行するとだいぶ改善しました(私の環境ではごくわずかな音の途切れが残ってしまいましたが...)。もしこちらの方法でも問題ないならば、こちらも試してみてはいかがでしょう。

[追記]
上記のインスペクタの図ではVideoPlayerのLoopがオフになっていますが、ループ再生したい場合はオンにしてみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/09 14:32

    なるほど!mp4は複数音声を格納できるのですか。知りませんでした・・・
    ということは主音声と副音声が入ってる場合は
    主音声がindex[0]
    副音声がindex[1]
    でvideoPlayer.SetTargetAudioSource (0, audioSource)
    のインデックス値を0にすれば主音声 1にすれば副音声が流れるといった具合でしょうか?

    キャンセル

  • 2017/11/09 14:54

    実際に複数音声のファイルをUnityに読み込ませて試したわけではないですが、おそらくそうなるでしょうね。

    キャンセル

  • 2017/11/09 15:12

    なるほど。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.36%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る