GStreamer: Difference between revisions
| imported>Malteneuss  Add error example | mNo edit summary | ||
| (15 intermediate revisions by 5 users not shown) | |||
| Line 3: | Line 3: | ||
| == Installing via nixpkgs == | == Installing via nixpkgs == | ||
| In Nix as in other Linux distributions those tools and plugins are split  into separate packages, which you can bring together with a custom Nix shell environment: | In Nix as in other Linux distributions those tools and plugins are split  into separate packages, which you can bring together with a custom Nix shell environment: | ||
| {{File|3={ | |||
| { | |||
|    description = "A GStreamer development flake"; |    description = "A GStreamer development flake"; | ||
| Line 31: | Line 30: | ||
|        }; |        }; | ||
|      }; |      }; | ||
| } | }|name=/etc/nixos/flake.nix|lang=nix}} | ||
| To activate this environment in your terminal run | To activate this environment in your terminal run | ||
| <syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
| Line 58: | Line 56: | ||
|    Name                     coreelements |    Name                     coreelements | ||
|    Description              GStreamer core elements |    Description              GStreamer core elements | ||
|    Filename                 /nix/store/ |    Filename                 /nix/store/p39g1.../libgstcoreelements.so | ||
|    ... |    ... | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| or by using it in a pipeline. Here, we could play a video from the local machine with | |||
| <syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
| Line 74: | Line 72: | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| == Troubleshooting == | |||
| ==== erroneous pipeline: no element "filesrc" ==== | |||
| In some cases while creating a shell using "mkShell" or "writeShellApplication" just setting the "runtimeInputs" is not enough. It's necessary to manually set the "GST_PLUGIN_SYSTEM_PATH_1_0" environment variable.<ref>https://discourse.nixos.org/t/how-to-use-gst-plugins/6345</ref> | |||
| Adding the following export to your script, sets "gstreamer" and "gst-plugins-base" and "gst-plugins-good" paths. Similarly you can add any other "gst-plugins" package as well. | |||
| <syntaxhighlight lang="shell"> | |||
| export GST_PLUGIN_SYSTEM_PATH_1_0="${gst_all_1.gstreamer.out}/lib/gstreamer-1.0:${gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${gst_all_1.gst-plugins-good}/lib/gstreamer-1.0" | |||
| </syntaxhighlight>Note: "gstreamer.out" is the derivative that contains "/lib" directory for that package. | |||
| <references /> | |||
| ==== nautilus: "Your GStreamer installation is missing a plug-in." ==== | |||
| [[File:Screenshot From 2025-03-28 09-58-50.png|thumb|nautilus: "Your GStreamer installation is missing a plug-in."]] | |||
| To fix the issue I found the following solutions: | |||
| * Using <code>nix-shell</code>:<syntaxhighlight lang="bash"> | |||
| nix-shell -p gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly gst_all_1.gst-libav gst_all_1.gst-vaapi --run "nautilus" | |||
| </syntaxhighlight> | |||
| *Using the environment variable "<code>GST_PLUGIN_PATH</code>":[[File:Screenshot From 2025-03-28 12-51-31.png|thumb|"Audio and Video Properties" of "Properties" window of nautilus after fix]]{{File|3={ config, pkgs, ... }: | |||
| { | |||
|   environment.systemPackages = with pkgs; [ | |||
|     gst_all_1.gstreamer | |||
|     gst_all_1.gst-plugins-base | |||
|     gst_all_1.gst-plugins-good | |||
|     gst_all_1.gst-plugins-bad | |||
|     gst_all_1.gst-plugins-ugly | |||
|     gst_all_1.gst-libav | |||
|     gst_all_1.gst-vaapi | |||
|   ]; | |||
|   environment.variables = { | |||
|     GST_PLUGIN_PATH = "/run/current-system/sw/lib/gstreamer-1.0/"; | |||
|   }; | |||
| }|name=/etc/nixos/configuration.nix|lang=nix}} {{Evaluate|boot}} | |||
| [[Category:Video]] | |||
| [[Category:Audio]] | |||