Took out the audio example.
Took out mini example.
Took out hardcoded attributes.
Added IN_POINT, OUT_POINT, DURATION to the time in seconds (expressed as integers) per kfrn suggestion
Hopefully I got all the uses of "frames" out. (let me know if one snuck in)
And I used the example that was used in the stackoverflow forum.
This is for Issue: OG #386 / First attempt #422 / Now this attempt #424
Previously, it would expand the recipe if currently collapsed, and vice versa.
Now, if any recipes are currently expanded, it will collapse all; otherwise, all recipes will be expanded.
The 'expand all' functionality is necessary for full-text searching.
fix for ticket 399: meta tag validation error. w3 doesn't like chartset in the same tag as viewport so I split them out based on what was described in the ticket
Addressing user feedback received by Andrew Weaver (@privatezero).
When the source file is ffv1 in MKV, the command will fail on the `-c:v copy` flag, since MP4s can't house ffv1.
Therefore, the command is misleading, and has limited value from an archival perspective.
We already have a basic rewrap command (which includes a note addressing the possibility of stream/wrapper incompability), so I think our bases are covered with that.
See https://github.com/amiaopensource/ffmprovisr/issues/392
- Recipes about creating thumbnails or GIFs now grouped together in the section "Create thumbnails or GIFs"
- New section: "Change or view audio properties". This replaces the previous section "Normalize/equalize audio", combining the recipes that were in that section with other audio recipes.
- Access mp3 with copyright notice recipe moved to "Change codec" section.
It's not an ideal home for it, but I think it doesn't really belong in the 'Advanced concepts' section, being a command rather than a concept.
I've also made a few small edits to the text of the command.
I've replaced the links in the Set Stream Properties recipe with a more specific link.
Also, according to the docs, the correct flag is -color_primaries, not -color_primary.
Consistently use FFmpeg to refer to the program and ffmpeg for the command line invocation of the program.
Add another example to the 'asic structure of an FFmpeg command explanation.
Add a note on filter order to the Filtergraph explanation.
- New section at top: 'Getting started with ffmpeg'. Added basic command explanation under this heading.
- New section at bottom: 'Advanced ffmpeg concepts'. Filtergraph explanation moved there.
- Move 'Set stream properties' to the 'Change video properties' section.
- Heading change: 'Create a video' to 'Create a video from images'. (In the ToC, it's 'Create a video from image(s) and audio')
- 'View Subprogram Info' is fixed (data-target now matches the new ID).
- Consistent capitalisation
These links wrap a <button> tag and use the "btn" class. To distinguish them from the command buttons that trigger the modals, I've given them a different colour scheme and a different emoji prefix.
'View format info' seemed to me to be poorly named, what this command actually does is to give details of various libraries, muxers, encoders, etc. 'View ffmpeg subprogram info' may not itself be a totally correct nomenclature, but it's a bit closer to the practical meaning, I think.
Also: a couple of minor text changes.
In several places, ffprobe or ffplay commands said ffmpeg in the command breakdown. This is because of me doing a sloppy cut & paste in a previous commit in this PR.
Previously, colons succeeding a bold 'Notes' mini-heading were not themselves also bold. Reto noted this, and the Chicago Manual of Style does indicate that such colons should also be in bold.
In filtergraphs that are reasonably long or unwieldy, I've added a space after each comma for readability.
In ffmpeg commands, italics should denote user inputs/outputs. Where italics had been used for 'regular' variables (i.e., not an input/output file or a variable for which the user must explicitly choose the value), I've deleted them.
These are stylistic changes that, I think, make things more readable and/or more uniform.
I've elaborated further on certain commands, and added lines for opening and closing quotation marks for others.
There are also some minor style fixes.
* [ ] I've referred to the [Guidelines for contributing](https://github.com/amiaopensource/ffmprovisr/blob/gh-pages/readme.md#guidelines-for-contributing)
link.innerHTML=("<small>Link to this command: <a href='https://amiaopensource.github.io/ffmprovisr/index.html#"+id+"'>https://amiaopensource.github.io/ffmprovisr/index.html#"+id+"</a></small>")
Repository of useful FFmpeg command lines for archivists!
* [What is this?](#what-is-this)
* [How do I see it?](#how-do-i-see-it)
* [How do I contribute?](#how-do-i-contribute)
* [Guidelines for contributing](#guidelines-for-contributing)
* [Code of conduct](#code-of-conduct)
* [Maintainers](#maintainers)
* [Contributors](#contributors)
* [AVHack Team](#avhack-team)
* [Sister projects](#sister-projects)
* [Articles and mentions](#articles-and-mentions)
* [License](#license)
## What is this?
#### Project Objective
### Project Objective
To facilitate better understanding of FFmpeg through collaborative sharing of useful scripts and detailed flag-level description of how each script works, so archivists can copy-paste and produce their own scripts, but also understand how and why they work.
@@ -12,29 +24,65 @@ To facilitate better understanding of FFmpeg through collaborative sharing of us
The code is found in the gh-pages branch (the default primary branch). Readme is right here. You can see the site live on [GitHub pages](http://amiaopensource.github.io/ffmprovisr).
You can also install the latest [release](https://github.com/amiaopensource/ffmprovisr/releases) on your computer with the command:
You can also install the latest [release](https://github.com/amiaopensource/ffmprovisr/releases) on your computer with the two commands:
```
brew install amiaopensource/amiaos/ffmprovisr
brew tap amiaopensource/amiaos
brew install ffmprovisr
```
and then call it locally with the command:
```
ffmprovisr
```
This works currently under macOS, Linux and the Linux subsystem on Windows. On classic Windows you can install the last [release](https://github.com/amiaopensource/ffmprovisr/releases) manually and the open `index.html` in a browser.
This works currently under macOS, Linux and the Linux apps on Windows (Ubuntu and Debian tested). On classic Windows you can install the last [release](https://github.com/amiaopensource/ffmprovisr/releases) manually and the open `index.html` in a browser.
### Parseable list of the commands
A list of all recipes in an easily parseable [ASCII text](recipes.txt) format is provided as well. It contains for each recipe its title and command in the following format:
```
# title of recipe 1
ffmpeg command 1
# title of recipe 2
ffmpeg command 2
...
# title of recipe n-1
ffmpeg command n-1
# title of recipe n
ffmpeg command n
```
The used [one-liner](scripts/get_recipe_list) is in the `scripts` folder.
## How do I contribute?
You are welcome to edit the codebase yourself, or just supply the information and ask it to be added to the site.
#### Edit codebase
### Edit codebase
To contribute to this project directly (and more quickly), clone this repository and create a new branch (`git checkout -b your-branch-name`) and add or modify a new block in `index.html`. Then [submit a pull request](https://github.com/amiaopensource/ffmprovisr/pulls) and the maintainers will review and integrate your code. There is a commented-out sample block available at the bottom of `index.html` that can be as a guideline for your command.
To contribute to this project directly (and more quickly), clone this repository and create a new branch (`git checkout -b your-branch-name`) and add or modify a new block in `index.html`. Then [submit a pull request](https://github.com/amiaopensource/ffmprovisr/pulls) and the maintainers will review and integrate your code. There is a commented-out sample block available at the bottom of `index.html` that can be a guideline for your command.
#### Make a request
#### Guidelines for contributing
If you are having trouble with coding it yourself or with github, feel free to [submit an issue](https://github.com/amiaopensource/ffmprovisr/issues) with the kind of command you would like to see added to the site.
* Recipes should ideally do just one thing or solve one problem, to keep things as user-friendly as possible and to avoid unintended side-effects
* Explanations and examples for recipes should be as generic as possible, to allow users to alter the command for their own use-case.
* This may involve the use of `VARIABLE_NAMES`
* Example: [Fade video and audio streams](https://amiaopensource.github.io/ffmprovisr/#fade_streams)
* Some recipes may benefit from including a GIF that shows the output
* Example: [Plays a graphical output showing decibel levels of an input file](https://amiaopensource.github.io/ffmprovisr/#astats)
* Some recipes require an explanatory section which may not fit gracefully into the recipe itself
* Example: [Rewrap a file](https://amiaopensource.github.io/ffmprovisr/#basic-rewrap)
* Recipes involving `-filter_complex` can be some of the most verbose and difficult to understand, so breaking these down as much as possible into their relevant sections is ideal
* Example: [Generate two access MP3s from input](https://amiaopensource.github.io/ffmprovisr/#append_mp3)
* Some recipes may refer to a specific standard or vocabulary, and it's useful to link to these so that the user can scale the recipe to their use case
If you are having trouble with coding it yourself or with GitHub, feel free to [submit an issue](https://github.com/amiaopensource/ffmprovisr/issues) with the kind of command you would like to see added to the site.
### General help
If you want to help but don't have a new script to add, you can help us by testing out the scripts available, by refining or clarifying the documentation, or [creating an issue](https://github.com/amiaopensource/ffmprovisr/issues) for anything that sounds confusing and requires clarification.
@@ -44,52 +92,76 @@ You can read our contributor code of conduct [here](https://github.com/amiaopens
## Maintainers
[Ashley Blewer](https://github.com/ablwr), [Katherine Frances Nagels](https://github.com/kfrn), [Kieran O'Leary](https://github.com/kieranjol) and [Reto Kromer](https://github.com/retokromer)
[Ashley Blewer](https://github.com/ablwr), [Katherine Frances Nagels](https://github.com/kfrn), [Kieran O'Leary](https://github.com/kieranjol) and [Andrew Weaver](https://github.com/privatezero)
## Contributors
* Gathered using [octohatrack](https://github.com/LABHR/octohatrack)
*GitHub Contributors*:
*Code Contributors*:
ablwr (Ashley)
alavigne12 (A. Lavigne)
Anushka-codergirl (Anushka Raj)
bastibeckr (Basti Becker)
bturkus
dericed (Dave Rice)
digitensions (Joanna White)
edsu (Ed Summers)
jamessam (Jim Sam)
jfarbowitz (Jonathan Farbowitz)
kfrn (Katherine Frances Nagels)
kgrons (Kathryn Gronsbell)
kieranjol (Kieran O'Leary)
llogan (Lou)
llogan (Lou Logan)
macasaurusrex (Maura)
mgiraldo (Mauricio Giraldo)
pjotrek-b (Peter B.)
privatezero (Andrew Weaver)
retokromer (Reto Kromer)
rfraimow
*All Contributors*:
All Contributors:
ablwr (Ashley)
alavigne12 (A. Lavigne)
Anushka-codergirl (Anushka Raj)
audiovisualopen
bastibeckr (Basti Becker)
brainwane (Sumana Harihareswara)
bturkus
dericed (Dave Rice)
digitensions (Joanna White)
drodz11 (Dave Rodriguez)
edsu (Ed Summers)
EG-tech (Ethan Gates)
federicomenaquintero (Federico Mena Quintero)
Fizz24
GregH18
jamessam (Jim Sam)
jfarbowitz (Jonathan Farbowitz)
JonnyTech
jronallo (Jason Ronallo)
kellyhaydon (metacynic)
kfrn (Katherine Frances Nagels)
kgrons (Kathryn Gronsbell)
kieranjol (Kieran O'Leary)
llogan (Lou)
llogan (Lou Logan)
macasaurusrex (Maura)
mercuryswitch
mgiraldo (Mauricio Giraldo)
mulvya
nkrabben (Nick Krabbenhoeft)
pjotrek-b (Peter B.)
privatezero (Andrew Weaver)
retokromer (Reto Kromer)
rfraimow
richardpl (Paul B Mahol)
ross-spencer (Ross Spencer)
taschenbach (Tommy Aschenbach)
todrobbins (Tod Robbins)
Repo: amiaopensource/ffmprovisr
GitHub Contributors: 12
All Contributors: 22
GitHub Contributors: 20
All Contributors: 37
Last updated: 2019-12-11
## AVHack Team
@@ -99,9 +171,22 @@ All Contributors: 22
## Sister projects
[The Cable Bible](https://amiaopensource.github.io/cable-bible/): A Guide to Cables and Connectors Used for Audiovisual Tech
[FFCommand_Engine](https://github.com/ColorlabMD/FFCommand_Engine): a tool for easier use of FFmpeg binaries
[QEMU QED](https://eaasi.gitlab.io/program_docs/qemu-qed/): instructions for using QEMU (Quick EMUlator), a command line application for computer emulation and virtualization
[Script Ahoy](http://dd388.github.io/crals/): Community Resource for Archivists and Librarians Scripting
[sourcecaster](https://datapraxis.github.io/sourcecaster/): helps you use the command line to work through common challenges that come up when working with digital primary sources.
## Articles and mentions
* 2019-09: **Andrew Weaver & Ashley Blewer**, [Sustainability through community: ffmprovisr and the Case for Collaborative Knowledge Transfer](https://ipres2019.org/static/pdf/iPres2019_paper_97.pdf) (PDF), iPRES 2019
- Andrew Weaver [won](https://twitter.com/iPRES2019/status/1177136202144768000) iPres' Best First Time Contribution Award for his work on this paper :)
* 2018-11: ffmprovisr is mentioned in [a job advert](http://web.library.emory.edu/documents/pa_staff_Audiovisual%20Conservator_Nov2018.pdf)!
* 2015-11: **AMIA & DLF Hack Day 2015**, [ffmprovsr](https://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_&_Digital_Library_Federation_Hack_Day_2015#ffmprovsr) - the genesis of ffmprovisr (then spelled without the 'i')
## License
<arel="license"href="http://creativecommons.org/licenses/by/4.0/"><imgalt="Creative Commons License"style="border-width:0"src="https://i.creativecommons.org/l/by/4.0/80x15.png"/></a><br/>This <spanxmlns:dct="http://purl.org/dc/terms/"href="http://purl.org/dc/dcmitype/InteractiveResource"rel="dct:type">work</span> by <axmlns:cc="http://creativecommons.org/ns#"href="http://amiaopensource.github.io/ffmprovisr/"property="cc:attributionName"rel="cc:attributionURL">ffmprovisr</a> is licensed under a <arel="license"href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.<br/>Based on a work at <axmlns:dct="http://purl.org/dc/terms/"href="https://github.com/amiaopensource/ffmprovisr"rel="dct:source">https://github.com/amiaopensource/ffmprovisr</a>.
This <spanxmlns:dct="http://purl.org/dc/terms/"href="http://purl.org/dc/dcmitype/InteractiveResource"rel="dct:type">work</span> by <axmlns:cc="http://creativecommons.org/ns#"href="http://amiaopensource.github.io/ffmprovisr/"property="cc:attributionName"rel="cc:attributionURL">ffmprovisr</a> is licensed under a <arel="license"href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.<br>
Based on a work at <axmlns:dct="http://purl.org/dc/terms/"href="https://github.com/amiaopensource/ffmprovisr"rel="dct:source">https://github.com/amiaopensource/ffmprovisr</a>.
curl https://amiaopensource.github.io/ffmprovisr/ -s | grep -E '<h5>.*</h5>|<p><code>.*</code></p>' | sed 's/.*<code>\(.*\)<\/code>/\1/' | sed 's/.*<h5>\(.*\)<\/h5>/# \1/' | grep -v '\*\*\*' | sed -e 's/<[^>]*>//g'
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.