tomatoaiu の Tech Blog

プログラミングやツールについてのまとめブログ

【GStreamer】mac上でローカルにあるmp4をgst-launch-1.0のplaybinで再生する

ひとこと

macでGStreamerの導入方法し、gst-launch-1.0のplaybinを利用してmp4の動画を視聴する日本語の記事がなかったのでメモ。

目次

環境

  • macOS Catalina バージョン 10.15.5

インストール

インストールには、homebrewを使います。以下のコードでGStreamer関連のものをインストール[1]。

$ brew install gstreamer gst-plugins-base gst-plugins-good \
      gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \
      gst-editing-services

インストールには結構な時間がかかります。インストールができたか確認するには、以下のコマンドを実行します。

$ gst-launch-1.0 --version

私が上記コマンドを実行すると、以下のように表示されました。

gst-launch-1.0 version 1.16.2
GStreamer 1.16.2
Unknown package origin

実行

インストールが問題なくできたなら、gst-launch-1.0 playbinを実効できるはずです。

ちなみにplaybinとは[2]、

オーディオプレーヤーやビデオプレーヤーにスタンドアロンのオールインワンアブストラクションを提供しており、オーディオとビデオの両方のファイルと機能を処理できる

以下のコマンドでmp4の動画を視聴できるようになります。

$ gst-launch-1.0 playbin uri=file:///<絶対パス>

例:macのユーザー名がhogehogeで、デスクトップにsample.mp4というファイルがある場合は、以下のようになります。

$ gst-launch-1.0 playbin uri=file:///Users/hogehoge/Desktop/sample.mp4

上記コマンドを実行すると、動画を表示するウインドウが出現して、動画が再生されます。

sample.mp4
sample.mp4

つまったところ

gst-launch-1.0 playbinの次の文字列にはパスが入るはずなのだけれども、ローカルのファイルのパスを入力しても以下のように表示されて動画を視聴することができなかった。

パイプラインを一時停止 (PAUSED) にしています...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstFileSrc:source: リソースが見つかりません

これの原因が、uri=のつけ忘れだったり、file:///のつけ忘れだったり、絶対パスをいれなければならないところに相対パスを入力してしまったりと正しく動画のパスを入力できていないことです。これに気づいたのが、記事[3]です。

参考文献

  1. GStreamer / gstreamer-rs · GitLab, 入手先 https://gitlab.freedesktop.org/gstreamer/gstreamer-rs
  2. playbin, 入手先 https://gstreamer.freedesktop.org/documentation/playback/playbin.html?gi-language=c
  3. python - gstreamer uri vs files: Cannot play local video file - Stack Overflow, 入手先 https://stackoverflow.com/questions/35195591/gstreamer-uri-vs-files-cannot-play-local-video-file