mirror of
https://github.com/sbrow/nu-ffmpeg.git
synced 2025-12-29 16:23:11 -05:00
docs: Improved README.md.
This commit is contained in:
7
Makefile
Normal file
7
Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
README.md:
|
||||
gomplate -f $@.tmpl --plugin 'filters=./get_filter_support_table,ffprobe=./get_ffprobe_commands_table' > $@
|
||||
|
||||
clean:
|
||||
rm README.md
|
||||
|
||||
.PHONY: clean
|
||||
30
README.md
30
README.md
@@ -1,3 +1,4 @@
|
||||
|
||||
# nu-ffmpeg
|
||||
|
||||
Utility commands for working with ffmpeg in nushell.
|
||||
@@ -15,7 +16,7 @@ Utility commands for working with ffmpeg in nushell.
|
||||
The `ffmpeg` and `ffprobe` commands are required to be installed and available
|
||||
in your path; they are not installed for you.
|
||||
|
||||
Currently nushell versions 0.87.0 - 0.88.1 are supported.
|
||||
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:
|
||||
@@ -24,3 +25,30 @@ 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. |
|
||||
|
||||
|
||||
44
README.md.tmpl
Normal file
44
README.md.tmpl
Normal file
@@ -0,0 +1,44 @@
|
||||
{{ if false }}
|
||||
<!--
|
||||
vim: filetype=markdown :
|
||||
->
|
||||
|
||||
{{ end }}
|
||||
# nu-ffmpeg
|
||||
|
||||
Utility commands for working with ffmpeg in nushell.
|
||||
|
||||
## Capabilities
|
||||
|
||||
- Return tables from `ffprobe`
|
||||
- `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
|
||||
- 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:
|
||||
|
||||
```nu
|
||||
use <path-to-repository>/ffprobe
|
||||
use <path-to-repository>/filters *
|
||||
```
|
||||
|
||||
## FFProbe
|
||||
|
||||
### Commands
|
||||
|
||||
{{ ffprobe }}
|
||||
|
||||
## FFMpeg
|
||||
|
||||
## Supported Filters
|
||||
|
||||
{{ filters }}
|
||||
2
ffprobe
2
ffprobe
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env nu
|
||||
# vim: filetype=nu :
|
||||
|
||||
# Multimedia stream analyzer.
|
||||
# Run ffprobe on a list of files and return the output as a table.
|
||||
export def main [
|
||||
...input_files: string
|
||||
]: nothing -> table {
|
||||
|
||||
6
flake.lock
generated
6
flake.lock
generated
@@ -2,11 +2,11 @@
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1704538339,
|
||||
"narHash": "sha256-1734d3mQuux9ySvwf6axRWZRBhtcZA9Q8eftD6EZg6U=",
|
||||
"lastModified": 1705856552,
|
||||
"narHash": "sha256-JXfnuEf5Yd6bhMs/uvM67/joxYKoysyE3M2k6T3eWbg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "46ae0210ce163b3cba6c7da08840c1d63de9c701",
|
||||
"rev": "612f97239e2cc474c13c9dafa0df378058c5ad8d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
devShells.x86_64-linux.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
ffmpeg
|
||||
|
||||
sbcl
|
||||
gomplate
|
||||
|
||||
nushellFull
|
||||
];
|
||||
|
||||
15
get_ffprobe_commands_table
Executable file
15
get_ffprobe_commands_table
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env -S nu -n
|
||||
# vim: filetype=nu :
|
||||
|
||||
use ffprobe;
|
||||
|
||||
def main [] {
|
||||
(
|
||||
help commands
|
||||
| where command_type == "custom" and name !~ "p(rompt|wd)"
|
||||
| select name usage
|
||||
| update name { if $in == 'main' { 'ffprobe' } else { $'ffprobe ($in)' } }
|
||||
| filter { not ($in.name == 'ffprobe' and ($in.usage | is-empty)) }
|
||||
| to md -p
|
||||
)
|
||||
}
|
||||
13
get_filter_support_table
Executable file
13
get_filter_support_table
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env -S nu -n
|
||||
# vim: filetype=nu :
|
||||
|
||||
use filters.nu;
|
||||
|
||||
def main [] {
|
||||
(
|
||||
help commands
|
||||
| where command_type == "custom" and name !~ "p(rompt|wd)|^main$"
|
||||
| select name usage
|
||||
| to md -p
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user