Compare commits

...

26 Commits

Author SHA1 Message Date
Reto Kromer
6e9d9c9a29 Merge pull request #326 (uniform external links) 2018-06-09 07:48:59 +02:00
Reto Kromer
8810d40523 uniform external links 2018-06-09 06:46:48 +02:00
Ashley
1ebea5cf19 Merge pull request #325 from amiaopensource/imagemagick2
adds more imagemagick
2018-06-08 16:30:23 -04:00
Ashley Blewer
ec3829d1b6 adds image hash grabbing recipe 2018-06-06 18:21:16 -04:00
Ashley Blewer
468b7b3a09 adds compare images script 2018-06-06 18:06:28 -04:00
Ashley Blewer
7ecd3214d5 adds rm exif data recipe 2018-06-06 17:54:00 -04:00
Ashley Blewer
50166200b9 moves resize to width alphabetically 2018-06-06 17:41:38 -04:00
Ashley
f2ec08fd59 Merge pull request #321 from amiaopensource/decoder-details
Decoder details
2018-04-22 13:26:27 -04:00
Ashley Blewer
32004553a6 space fix in ffv1 fixity recipe too 2018-04-22 13:25:34 -04:00
Ashley Blewer
a67b7cc879 rm space 2018-04-22 13:18:34 -04:00
Ashley
b9da657b19 Merge pull request #318 from amiaopensource/rm-google-fonts
removes calls to google fonts CDN
2018-04-22 13:16:33 -04:00
Ashley
91e929dab4 Merge pull request #322 from amiaopensource/updates-contributor-list
Updates contributor list
2018-04-22 13:14:31 -04:00
Ashley Blewer
21e5561dc9 sneaks addition of cable bible into sister projects 2018-04-22 12:58:46 -04:00
Ashley Blewer
36deb1ea62 sub github for code for clarity in both places 2018-04-22 12:55:46 -04:00
Ashley Blewer
89139311f4 updates contributors list, we have grown 2018-04-22 12:55:23 -04:00
Ashley Blewer
fb6581a50e adds back undecided font detail 2018-04-22 12:46:18 -04:00
Ashley Blewer
5bdd6f8d8a adds check decoder errors recipe 2018-04-17 09:56:22 -04:00
Ashley Blewer
3b7ce0e79f moves Check FFV1 alphabetically for section 2018-04-17 09:52:13 -04:00
Ashley
b9b7e0fef9 adds show/hide all button (#319)
resolves https://github.com/amiaopensource/ffmprovisr/issues/211
2018-04-16 21:22:12 +02:00
Ashley Blewer
95e90bb26b clean singular font styling 2018-04-15 09:36:49 -04:00
Ashley Blewer
d70a1de6e1 removes line to google fonts 2018-04-15 09:34:33 -04:00
Ashley Blewer
8417883004 removes calls to google fonts CDN 2018-04-14 20:35:46 -04:00
Reto Kromer
937b9ae525 Merge pull request #317 (add ProRes 4444 XQ) 2018-04-14 20:22:19 +02:00
Reto Kromer
d46138a81b add ProRes 4444 XQ 2018-04-14 17:34:31 +02:00
Reto Kromer
e6317731c9 add missing space 2018-04-14 12:36:03 +02:00
Andrew Weaver
0849bd29e4 rewrap dv codec to .dv (#316) 2018-04-03 19:22:34 +02:00
4 changed files with 152 additions and 50 deletions

View File

@@ -1,6 +1,7 @@
html, body {
line-height: 1.5;
font-size: 16px;
font-size: 18px;
font-family: sans-serif;
color: #888888;
background-color: #060606;
margin: 0;
@@ -88,9 +89,6 @@ a:visited {
display: inline;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Montserrat', sans-serif;
}
h1 {
letter-spacing: 0.1em;
@@ -116,7 +114,6 @@ h4 {
}
.intro-lead {
font-family: 'Montserrat', sans-serif;
font-size: 1em;
}
@@ -165,7 +162,6 @@ img {
}
div {
font-family: 'Merriweather', serif;
color: white;
}
@@ -177,7 +173,6 @@ div {
color: white;
background-color: #383838;
padding: 14px;
font-family: "Montserrat";
letter-spacing: 0.05em;
border: 1px solid black;
cursor: pointer;

View File

@@ -3,7 +3,6 @@
<head>
<title>ffmprovisr</title>
<meta name="viewport" charset="utf-8" content="text/html, width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Montserrat%7CMerriweather" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="css/css.css">
<link rel="icon" href="img/vhs.ico">
<script src="js/jquery.min.js"></script>
@@ -19,6 +18,7 @@
<nav class="sidebar well">
<h2 class="heading">Table of Contents</h2>
<a href="#about"><div class="contents-list">About this resource</div></a>
<div id="open-all" class="contents-list">Show/hide all recipes</div>
<a href="#basics"><div class="contents-list">FFmpeg basics</div></a>
<a href="#concepts"><div class="contents-list">Advanced FFmpeg concepts</div></a>
<a href="#rewrap"><div class="contents-list">Change container (rewrap)</div></a>
@@ -47,6 +47,7 @@
<span class="intro-lead">Making FFmpeg Easier</span>
<p>FFmpeg is a powerful tool for manipulating audiovisual files. Unfortunately, it also has a steep learning curve, especially for users unfamiliar with a command line interface. This app helps users through the command generation process so that more people can reap the benefits of FFmpeg.</p>
<p>Each button displays helpful information about how to perform a wide variety of tasks using FFmpeg. To use this site, click on the task you would like to perform. A new window will open up with a sample command and a description of how that command works. You can copy this command and understand how the command works with a breakdown of each of the flags.</p>
<p>This page does not have search functionality, but you can open all recipes (second option in the sidebar) and use your browser's search tool (often ctrl+f or cmd+f) to perform a keyword search through all recipes.</p>
<span class="intro-lead">Tutorials</span>
<p>For FFmpeg basics, check out the programs <a href="https://ffmpeg.org/" target="_blank">official website</a>.</p>
<p>For instructions on how to install FFmpeg on Mac, Linux, and Windows, refer to Reto Kromers <a href="https://avpres.net/FFmpeg/#ch1" target="_blank">installation instructions</a>.</p>
@@ -212,6 +213,24 @@
</div>
<!-- ends MKV to MP4 -->
<!-- Rewrap DV -->
<label class="recipe" for="rewrap-dv">Rewrap DV video to .dv file</label>
<input type="checkbox" id="rewrap-dv">
<div class="hiding">
<h3>Rewrap DV video to .dv file</h3>
<p><code>ffmpeg -i <i>input_file</i> -f rawvideo -c:v copy <i>output_file.dv</i></code></p>
<p>This script will take a video that is encoded in the <a href="https://en.wikipedia.org/wiki/DV" target="_blank">DV Codec</a> but wrapped in a different container (such as MOV) and rewrap it into a raw DV file (with the .dv extension). Since DV files potentially contain a great deal of provenance metadata within the DV stream, it is necessary to rewrap files in this method to avoid unintentional stripping of this metadata.</p>
<dl>
<dt>ffmpeg</dt><dd>starts the command</dd>
<dt>-i <i>input_file</i></dt><dd>path and name of the input file</dd>
<dt>-f rawvideo</dt><dd>this tells FFmpeg to pass the video stream as raw video data without remuxing. This step is what ensures the survival of embedded metadata versus a standard rewrap.</dd>
<dt>-c:v copy</dt><dd>copy the DV stream directly, without re-encoding.</dd>
<dt><i>output_file.dv</i></dt><dd>tells FFmpeg to use the DV wrapper for the output.</dd>
</dl>
<p class="link"></p>
</div>
<!-- Rewrap DV -->
</div>
<div class="well">
<h2 id="transcode">Change codec (transcode)</h2>
@@ -242,7 +261,7 @@
<p>FFmpeg comes with more than one ProRes encoder:</p>
<ul>
<li><code>prores</code> is much faster, can be used for progressive video only, and seems to be better for video according to Rec. 601 (Recommendation ITU-R BT.601).</li>
<li><code>prores_ks</code> generates a better file, can also be used for interlaced video, allows also encoding of ProRes 4444 (<code>-c:v prores_ks -profile:v 4</code>), and seems to be better for video according to Rec. 709 (Recommendation ITU-R BT.709).</li>
<li><code>prores_ks</code> generates a better file, can also be used for interlaced video, allows also encoding of ProRes 4444 (<code>-c:v prores_ks -profile:v 4</code>) and ProRes 4444 XQ (<code>-c:v prores_ks -profile:v 5</code>), and seems to be better for video according to Rec. 709 (Recommendation ITU-R BT.709).</li>
</ul>
<p class="link"></p>
</div>
@@ -965,7 +984,7 @@
<p>You can speed up or slow down a file using the <code>fps</code> and <code>atempo</code> filters (see also the <a href="https://amiaopensource.github.io/ffmprovisr/#modify_speed">Modify speed</a> command).</p>
<p>Here's an example of the full command, in which input_1 is 30fps, input_2 is 25fps, and 25fps is the desired output speed.</p>
<p><code>ffmpeg -i input_1.avi -i input_2.mp4 -filter_complex "[0:v:0] fps=fps=25 [video_to_25fps]; [0:a:0] atempo=(25/30) [audio_to_25fps]; [video_to_25fps] [audio_to_25fps] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [video_out] [audio_out]" -map "[video_out]" -map "[audio_out]" <i>output_file</i></code></p>
<p>Note that the <code>fps</code> filter will drop or repeat frames as necessary in order to achieve the desired frame rate - see the FFmpeg <a href="https://ffmpeg.org/ffmpeg-filters.html#fps-1">fps docs</a> for more details.</p>
<p>Note that the <code>fps</code> filter will drop or repeat frames as necessary in order to achieve the desired frame rate - see the FFmpeg <a href="https://ffmpeg.org/ffmpeg-filters.html#fps-1" target="_blank">fps docs</a> for more details.</p>
<p>For more information, see the <a href="https://trac.ffmpeg.org/wiki/Concatenate#differentcodec" target="_blank">FFmpeg wiki page on concatenating files of different types</a>.</p>
<p class="link"></p>
</div>
@@ -1691,6 +1710,42 @@
</div>
<!-- ends batch processing (Windows) -->
<!-- Check decoder errors -->
<label class="recipe" for="check_decoder_errors">Check decoder errors</label>
<input type="checkbox" id="check_decoder_errors">
<div class="hiding">
<h3>Check decoder errors</h3>
<p><code>ffmpeg -i <i>input_file</i> -f null -</code></p>
<p>This decodes your video and prints any errors or found issues to the screen.</p>
<dl>
<dt>ffmpeg</dt><dd>starts the command</dd>
<dt>-i <i>input_file</i></dt><dd>path, name and extension of the input file</dd>
<dt>-f null</dt><dd>Video is decoded with the <code>null</code> muxer. This allows video decoding without creating an output file.</dd>
<dt>-</dt><dd>FFmpeg syntax requires a specified output, and <code>-</code> is just a place holder. No file is actually created.</dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Check decoder errors -->
<!-- Check FFV1 fixity -->
<label class="recipe" for="check_FFV1_fixity">Check FFV1 fixity</label>
<input type="checkbox" id="check_FFV1_fixity">
<div class="hiding">
<h3>Check FFV1 Version 3 fixity</h3>
<p><code>ffmpeg -report -i <i>input_file</i> -f null -</code></p>
<p>This decodes your video and displays any CRC checksum mismatches. These errors will display in your terminal like this: <code>[ffv1 @ 0x1b04660] CRC mismatch 350FBD8A!at 0.272000 seconds</code></p>
<p>Frame CRCs are enabled by default in FFV1 Version 3.</p>
<dl>
<dt>ffmpeg</dt><dd>starts the command</dd>
<dt>-report</dt><dd>Dump full command line and console output to a file named <i>ffmpeg-YYYYMMDD-HHMMSS.log</i> in the current directory. It also implies <code>-loglevel verbose</code>.</dd>
<dt>-i <i>input_file</i></dt><dd>path, name and extension of the input file</dd>
<dt>-f null</dt><dd>Video is decoded with the <code>null</code> muxer. This allows video decoding without creating an output file.</dd>
<dt>-</dt><dd>FFmpeg syntax requires a specified output, and <code>-</code> is just a place holder. No file is actually created.</dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Check FFV1 Fixity -->
<!-- Create frame md5s -->
<label class="recipe" for="create_frame_md5s_v">Create MD5 checksums (video frames)</label>
<input type="checkbox" id="create_frame_md5s_v">
@@ -1809,25 +1864,6 @@
</div>
<!-- ends QCTools Report (no audio) -->
<!-- Check FFV1 fixity -->
<label class="recipe" for="check_FFV1_fixity">Check FFV1 fixity</label>
<input type="checkbox" id="check_FFV1_fixity">
<div class="hiding">
<h3>Check FFV1 Version 3 fixity</h3>
<p><code>ffmpeg -report -i <i>input_file</i> -f null -</code></p>
<p>This decodes your video and displays any CRC checksum mismatches. These errors will display in your terminal like this: <code>[ffv1 @ 0x1b04660] CRC mismatch 350FBD8A!at 0.272000 seconds</code></p>
<p>Frame CRCs are enabled by default in FFV1 Version 3.</p>
<dl>
<dt>ffmpeg</dt><dd>starts the command</dd>
<dt>-report</dt><dd>Dump full command line and console output to a file named <i>ffmpeg-YYYYMMDD-HHMMSS.log</i> in the current directory. It also implies <code>-loglevel verbose</code>.</dd>
<dt>-i <i>input_file</i></dt><dd>path, name and extension of the input file</dd>
<dt>-f null</dt><dd>Video is decoded with the <code>null</code> muxer. This allows video decoding without creating an output file.</dd>
<dt>-</dt><dd>FFmpeg syntax requires a specified output, and <code>-</code> is just a place holder. No file is actually created. </dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Check FFV1 Fixity -->
<!-- Read/Extract EIA-608 Closed Captions -->
<label class="recipe" for="readeia608">Read/Extract EIA-608 Closed Captioning</label>
<input type="checkbox" id="readeia608">
@@ -2007,7 +2043,7 @@
<input type="checkbox" id="game_of_life">
<div class="hiding">
<h3>Conway's Game of Life</h3>
<p>Simulates <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway's Game of Life</a></p>
<p>Simulates <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" target="_blank">Conway's Game of Life</a></p>
<p><code>ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800</code></p>
<dl>
<dt>ffplay</dt><dd>starts the command</dd>
@@ -2328,29 +2364,29 @@
<div class="hiding">
<h3>About ImageMagick</h3>
<p>ImageMagick is a free and open-source software suite for displaying, converting, and editing raster image and vector image files.</p>
<p>It's official website can be found <a href="https://www.imagemagick.org/script/index.php">here</a>.</p>
<p>Another great resource with lots of supplemental explanations of filters is available at <a href="http://www.fmwconcepts.com/imagemagick/index.php">Fred's ImageMagick Scripts</a>.</p>
<p>It's official website can be found <a href="https://www.imagemagick.org/script/index.php" target="_blank">here</a>.</p>
<p>Another great resource with lots of supplemental explanations of filters is available at <a href="http://www.fmwconcepts.com/imagemagick/index.php" target="_blank">Fred's ImageMagick Scripts</a>.</p>
<p>Unlike many other command line tools, ImageMagick isn't summoned by calling its name. Rather, ImageMagick installs links to several more specific commands: <code>convert</code>, <code>montage</code>, and <code>mogrify</code>, to name a few.</p>
<p class="link"></p>
</div>
<!-- End About ImageMagick -->
<!-- Resize to width -->
<label class="recipe" for="im_resize">Resizes image to specific pixel width</label>
<input type="checkbox" id="im_resize">
<!-- Compare two images -->
<label class="recipe" for="im_compare">Compare two images</label>
<input type="checkbox" id="im_compare">
<div class="hiding">
<h3>Resize to width</h3>
<p><code>convert <i>input_file.ext</i> -resize 750 <i>output_file.ext</i></code></p>
<p>This script will also convert the file format, if the output has a different file extension than the input.</p>
<h3>Compare two images</h3>
<p><code>compare -metric ae <i>image1.ext image2.ext</i> null:</code></p>
<p>Compares two images to each other.</p>
<dl>
<dt>convert</dt><dd>starts the command</dd>
<dt>-i <i>input_file.ext</i></dt><dd>path and name of the input file</dd>
<dt>-resize 750</dt><dd>resizes the image to 750 pixels wide, retaining aspect ratio</dd>
<dt><i>output_file.ext</i></dt><dd>path and name of the output file</dd>
<dt>compare</dt><dd>starts the command</dd>
<dt>-metric ae</dt><dd>applies the absolute error count metric, returning the number of different pixels. <a href="https://www.imagemagick.org/script/command-line-options.php#metric" target="_blank">Other parameters</a> are available for image comparison.</dd>
<dt><i>image1.ext image2.ext</i></dt><dd>takes two images as input</dd>
<dt>null:</dt><dd>throws away the comparison image that would be generated</dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Resize to width -->
<!-- ends Compare two images -->
<!-- Create thumbnails -->
<label class="recipe" for="im_thumbs">Create thumbnails of images</label>
@@ -2389,6 +2425,58 @@
</div>
<!-- ends Create grid of images -->
<!-- Get file signature data -->
<label class="recipe" for="im_sig_data">Get file signature data</label>
<input type="checkbox" id="im_sig_data">
<div class="hiding">
<h3>Get file signature data</h3>
<p><code>convert -verbose <i>input_file.ext</i> | grep -i signature </code></p>
<p>Gets signature data from an image file, which is a hash that can be used to uniquely identify the image.</p>
<dl>
<dt>convert</dt><dd>starts the command</dd>
<dt>-verbose</dt><dd>sets verbose flag for collecting the most data</dd>
<dt><i>input_file.ext</i></dt><dd>path and name of image file</dd>
<dt>|</dt><dd>pipe the data into something else</dd>
<dt>grep</dt><dd>starts the grep command</dd>
<dt>-i signature</dt><dd>ignore case and search for the phrase "signature"</dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Get file signature data -->
<!-- Remove exif data -->
<label class="recipe" for="im_strip">Removes exif metadata</label>
<input type="checkbox" id="im_strip">
<div class="hiding">
<h3>Remove exif data</h3>
<p><code>mogrify -path ./stripped/ -strip *.jpg</code></p>
<p>Removes (strips) exif data and moves clean files to a new folder.</p>
<dl>
<dt>mogrify</dt><dd>starts the command</dd>
<dt>-path ./stripped/</dt><dd>sets directory within current directory called "stripped"</dd>
<dt>-strip</dt><dd>removes exif metadata</dd>
<dt>*.jpg</dt><dd>applies command to all .jpgs in current folder</dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Remove exif data -->
<!-- Resize to width -->
<label class="recipe" for="im_resize">Resizes image to specific pixel width</label>
<input type="checkbox" id="im_resize">
<div class="hiding">
<h3>Resize to width</h3>
<p><code>convert <i>input_file.ext</i> -resize 750 <i>output_file.ext</i></code></p>
<p>This script will also convert the file format, if the output has a different file extension than the input.</p>
<dl>
<dt>convert</dt><dd>starts the command</dd>
<dt>-i <i>input_file.ext</i></dt><dd>path and name of the input file</dd>
<dt>-resize 750</dt><dd>resizes the image to 750 pixels wide, retaining aspect ratio</dd>
<dt><i>output_file.ext</i></dt><dd>path and name of the output file</dd>
</dl>
<p class="link"></p>
</div>
<!-- ends Resize to width -->
</div>
</div><!-- ends "content" -->
@@ -2411,7 +2499,7 @@ Change the above data-target field, the hover-over description, the button text,
<!-- ends sample example -->
<footer class="footer">
<p>Made with ♥ at <a href="https://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_%26_Digital_Library_Federation_Hack_Day_2015" target="_blank">AMIA #AVhack15</a>! Contribute to the project via <a href="https://github.com/amiaopensource/ffmprovisr">our GitHub page</a>!</p>
<p>Made with ♥ at <a href="https://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_%26_Digital_Library_Federation_Hack_Day_2015" target="_blank">AMIA #AVhack15</a>! Contribute to the project via <a href="https://github.com/amiaopensource/ffmprovisr" target="_blank">our GitHub page</a>!</p>
</footer>
</div><!-- ends "grid" -->
</body>

View File

@@ -18,4 +18,10 @@ $(document).ready(function() {
$('#' + id).closest('div').find('.link').append("<small>Link to this command: <a href='https://amiaopensource.github.io/ffmprovisr/index.html"+window.location.hash+"'>https://amiaopensource.github.io/ffmprovisr/index.html"+window.location.hash+"</a></small>");
});
$('#open-all').on("click", function(){
$('input[type=checkbox]').each(function(){
this.checked = !this.checked;
})
});
});

View File

@@ -49,10 +49,13 @@ You can read our contributor code of conduct [here](https://github.com/amiaopens
## Contributors
* Gathered using [octohatrack](https://github.com/LABHR/octohatrack)
*GitHub Contributors*:
*Code Contributors*:
ablwr (Ashley)
bastibeckr (Basti Becker)
bturkus
dericed (Dave Rice)
edsu (Ed Summers)
jamessam (Jim Sam)
jfarbowitz (Jonathan Farbowitz)
kfrn (Katherine Frances Nagels)
kgrons (Kathryn Gronsbell)
@@ -62,17 +65,23 @@ pjotrek-b (Peter B.)
privatezero (Andrew Weaver)
retokromer (Reto Kromer)
rfraimow
*All Contributors*:
*All Contributors*:
ablwr (Ashley)
audiovisualopen
bastibeckr (Basti Becker)
brainwane (Sumana Harihareswara)
bturkus
dericed (Dave Rice)
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)
@@ -80,16 +89,19 @@ kgrons (Kathryn Gronsbell)
kieranjol (Kieran O'Leary)
llogan (Lou)
mulvya
nkrabben (Nick Krabbenhoeft)
pjotrek-b (Peter B.)
privatezero (Andrew Weaver)
retokromer (Reto Kromer)
rfraimow
richardpl (Paul B Mahol)
ross-spencer (Ross Spencer)
todrobbins (Tod Robbins)
Repo: amiaopensource/ffmprovisr
GitHub Contributors: 12
All Contributors: 22
Code Contributors: 15
All Contributors: 30
Last updated: 2018-04-22 (4:2:2 Day)
## AVHack Team
@@ -99,6 +111,7 @@ All Contributors: 22
## Sister projects
[The Cable Bible](https://amiaopensource.github.io/cable-bible/): A Guide to Cables and Connectors Used for Audiovisual Tech
[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.