nu-ffmpeg

Utility commands for working with ffmpeg in nushell.

Capabilities

  • Return tables from ffprobe
> ffprobe https://sample-videos.com/video321/mp4/720/big_buck_bunny_720p_1mb.mp4
╭────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────╮
  # │                                                           streams                                                            │ ... │
├────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────┤
  0  ╭───┬────────────┬───────────────────────────────────────────┬─────────┬────────────┬──────────────────┬────────────┬─────╮   ... 
      # │ codec_name │              codec_long_name              │ profile │ codec_type │ codec_tag_string │ codec_tag  │ ... │  │     │
     ├───┼────────────┼───────────────────────────────────────────┼─────────┼────────────┼──────────────────┼────────────┼─────┤       
      0  h264        H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10  Main     video       avc1              0x31637661  ...        
      1  aac         AAC (Advanced Audio Coding)                LC       audio       mp4a              0x6134706d  ...        
     ╰───┴────────────┴───────────────────────────────────────────┴─────────┴────────────┴──────────────────┴────────────┴─────╯       
╰────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────╯

  • ffprobe multiple files at once
  • Use streams, streams video, and streams audio to filter ffprobe output
  • get the dimensions of a video stream as a record
  • Tab-completion for filter options. i.e. fps --round<tab> will yield zero inf down up near
  • Apply and parse complex filters to a video (Work In Progress)

Setup

The ffmpeg and ffprobe commands are required to be installed and available in your path; they are not installed for you.

Currently only nushell version 0.89.0 is supported.

After that, clone this repository and add the following code to your scripts, or to your config.nu file:

use <path-to-repository>/ffprobe
use <path-to-repository>/filters *

FFProbe

Commands

name usage
ffprobe Run ffprobe on a list of files and return the output as a table.
ffprobe dimensions Get the dimensions of a video stream
ffprobe streams Retrieve all the streams from a list of ffprobe outputs
ffprobe streams audio Retrieve all the audio streams from a list of ffprobe outputs
ffprobe streams video Retrieve all the video streams from a list of ffprobe outputs

FFMpeg

Supported Filters

name usage
crop Crop the input video to given dimensions.
fps Convert the video to specified constant frame rate by duplicating or dropping frames as necessary.
loop loop video frames
overlay Overlay one video on top of another.
split
vflip Flip the input video vertically.
Description
Utility commands for working with ffmpeg in nushell.
Readme 126 KiB
Languages
Nushell 88.1%
Nu 7.1%
Makefile 2.8%
Nix 2%