Compare commits

...

11 Commits

Author SHA1 Message Date
Ashley Blewer
b8eeeb88b8 Merge pull request #480 from amiaopensource/dash
Specify dash in command
2025-04-15 18:54:47 -04:00
רטו\רעטאָ\רֵיטוֹ • Reto
bb4cc16b8e modify also the other occurrences 2025-04-04 15:20:24 +02:00
רטו\רעטאָ\רֵיטוֹ • Reto
4c8f63b05f Specify dash in command 2025-04-02 19:50:52 +02:00
Ashley Blewer
f57e2d443a Merge pull request #478 from amiaopensource/opt_homebrew
add path for newer Machintoshes
2025-04-01 18:41:57 -04:00
רטו\רעטאָ\רֵיטוֹ • Reto
fc2cd7f23e add path on newer Machintoshes 2025-03-27 12:52:42 +01:00
רטו\רעטאָ\רֵיטוֹ • Reto
e46bdc189a fixes #475 (#476) 2024-05-02 10:55:57 +02:00
Ashley
8ea516d0a0 Merge pull request #471 from jmf-nyu/gh-pages
Clarification of documentation
2023-11-25 17:07:41 -05:00
Jonathan Farbowitz
afe768d1df Update index.html
fixed typo
2023-11-15 21:51:34 -05:00
Jonathan Farbowitz
f16406504d Update index.html
rewrote some text about how the site functions in the introduction
2023-11-15 21:48:53 -05:00
Jonathan Farbowitz
7629b26417 Update index.html
Fixed language on window and macOS
2023-11-15 21:37:02 -05:00
רטו/רעטאָ/רֵיטוֹ • Reto
f3d98bc712 update recipe list (#470) 2023-08-31 08:26:49 +02:00
3 changed files with 18 additions and 13 deletions

View File

@@ -47,11 +47,11 @@
<h2 class="heading" id="about">About ffmprovisr</h2> <h2 class="heading" id="about">About ffmprovisr</h2>
<h3>Making FFmpeg Easier</h3> <h3>Making FFmpeg Easier</h3>
<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>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>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. You will jump to a single command or a list of related commands. Click on a command description, and the site will display a sample command as well as an explanation of how that command works with a breakdown of each of its flags (or options).</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> <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>
<h3>Tutorials</h3> <h3>Tutorials</h3>
<p>For FFmpeg basics, check out the programs <a href="https://ffmpeg.org/" target="_blank">official website</a>.</p> <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> <p>For instructions on how to install FFmpeg on macOS, Linux, and Windows, refer to Reto Kromers <a href="https://avpres.net/FFmpeg/#ch1" target="_blank">installation instructions</a>.</p>
<p>For Bash and command line basics, try the <a href="https://learnpythonthehardway.org/book/appendixa.html" target="_blank">Command Line Crash Course</a>. For a little more context presented in an ffmprovisr style, try <a href="https://explainshell.com/" target="_blank">explainshell.com</a>!</p> <p>For Bash and command line basics, try the <a href="https://learnpythonthehardway.org/book/appendixa.html" target="_blank">Command Line Crash Course</a>. For a little more context presented in an ffmprovisr style, try <a href="https://explainshell.com/" target="_blank">explainshell.com</a>!</p>
<h3>License</h3> <h3>License</h3>
<p class="license"> <p class="license">
@@ -680,22 +680,23 @@
</div> </div>
<!-- ends SD to HD --> <!-- ends SD to HD -->
<!-- Change display aspect ratio without re-encoding video--> <!-- Change display aspect ratio without re-encoding -->
<label class="recipe" for="change_DAR">Change display aspect ratio without re-encoding</label> <label class="recipe" for="change_DAR">Change display aspect ratio without re-encoding</label>
<input type="checkbox" id="change_DAR"> <input type="checkbox" id="change_DAR">
<div class="hiding"> <div class="hiding">
<h5>Change Display Aspect Ratio without re-encoding video</h5> <h5>Change Display Aspect Ratio without re-encoding</h5>
<p><code>ffmpeg -i <em>input_file</em> -c:v copy -aspect 4:3 <em>output_file</em></code></p> <p><code>ffmpeg -i <em>input_file</em> -c:a copy -c:v copy -aspect 4:3 <em>output_file</em></code></p>
<dl> <dl>
<dt>ffmpeg</dt><dd>starts the command</dd> <dt>ffmpeg</dt><dd>starts the command</dd>
<dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd> <dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd>
<dt>-c:a copy</dt><dd>Copy all mapped audio streams.</dd>
<dt>-c:v copy</dt><dd>Copy all mapped video streams.</dd> <dt>-c:v copy</dt><dd>Copy all mapped video streams.</dd>
<dt>-aspect 4:3</dt><dd>Change Display Aspect Ratio to <code>4:3</code>. Experiment with other aspect ratios such as <code>16:9</code>. If used together with <code>-c:v copy</code>, it will affect the aspect ratio stored at container level, but not the aspect ratio stored in encoded frames, if it exists.</dd> <dt>-aspect 4:3</dt><dd>Change Display Aspect Ratio to <code>4:3</code>. Experiment with other aspect ratios such as <code>16:9</code>. If used together with <code>-c:v copy</code>, it will affect the aspect ratio stored at container level, but not the aspect ratio stored in encoded frames, if it exists.</dd>
<dt><em>output_file</em></dt><dd>path, name and extension of the output file</dd> <dt><em>output_file</em></dt><dd>path, name and extension of the output file</dd>
</dl> </dl>
<p class="link"></p> <p class="link"></p>
</div> </div>
<!-- ends Change display aspect ratio without re-encoding video --> <!-- ends Change display aspect ratio without re-encoding -->
<!-- Convert colorspace --> <!-- Convert colorspace -->
<label class="recipe" for="convert-colorspace">Convert colorspace of video</label> <label class="recipe" for="convert-colorspace">Convert colorspace of video</label>
@@ -1505,7 +1506,7 @@
<dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd> <dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd>
<dt>-filter:v idet</dt><dd>This calls the <a href="https://ffmpeg.org/ffmpeg-filters.html#idet" target="_blank">idet (detect video interlacing type) filter</a>.</dd> <dt>-filter:v idet</dt><dd>This calls the <a href="https://ffmpeg.org/ffmpeg-filters.html#idet" target="_blank">idet (detect video interlacing type) filter</a>.</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>-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> <dt>-</dt><dd>The FFmpeg syntax requires a specified output, and <code>-</code> prints the output to the screen (STDOUT), rather than creating a file.</dd>
</dl> </dl>
<p class="link"></p> <p class="link"></p>
</div> </div>
@@ -2021,7 +2022,7 @@
<dt>ffmpeg</dt><dd>starts the command</dd> <dt>ffmpeg</dt><dd>starts the command</dd>
<dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd> <dt>-i <em>input_file</em></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>-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> <dt>-</dt><dd>The FFmpeg syntax requires a specified output, and <code>-</code> prints the output to the screen (STDOUT), rather than creating a file.</dd>
</dl> </dl>
<p class="link"></p> <p class="link"></p>
</div> </div>
@@ -2040,7 +2041,7 @@
<dt>-report</dt><dd>Dump full command line and console output to a file named <em>ffmpeg-YYYYMMDD-HHMMSS.log</em> in the current directory. It also implies <code>-loglevel verbose</code>.</dd> <dt>-report</dt><dd>Dump full command line and console output to a file named <em>ffmpeg-YYYYMMDD-HHMMSS.log</em> in the current directory. It also implies <code>-loglevel verbose</code>.</dd>
<dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd> <dt>-i <em>input_file</em></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>-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> <dt>-</dt><dd>The FFmpeg syntax requires a specified output, and <code>-</code> prints the output to the screen (STDOUT), rather than creating a file.</dd>
</dl> </dl>
<p class="link"></p> <p class="link"></p>
</div> </div>
@@ -2127,7 +2128,7 @@
<dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd> <dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd>
<dt>-map 0:v:0</dt><dd>designated the first video stream as the stream on which to perform this hash generation operation. <code>-map 0</code> can be used to run the operation on all streams.</dd> <dt>-map 0:v:0</dt><dd>designated the first video stream as the stream on which to perform this hash generation operation. <code>-map 0</code> can be used to run the operation on all streams.</dd>
<dt>-f hash -hash md5</dt><dd>produce a checksum hash, and set the hash algorithm to md5. See the official <a href="https://ffmpeg.org/ffmpeg-formats.html#hash" target="_blank">documentation on hash</a> for other algorithms.</dd> <dt>-f hash -hash md5</dt><dd>produce a checksum hash, and set the hash algorithm to md5. See the official <a href="https://ffmpeg.org/ffmpeg-formats.html#hash" target="_blank">documentation on hash</a> for other algorithms.</dd>
<dt>-</dt><dd>FFmpeg syntax requires a specified output, and <code>-</code> is just a place holder. No file is actually created.</dd> <dt>-</dt><dd>The FFmpeg syntax requires a specified output, and <code>-</code> prints the output to the screen (STDOUT), rather than creating a file.</dd>
</dl> </dl>
<p class="link"></p> <p class="link"></p>
</div> </div>
@@ -2147,7 +2148,7 @@
<dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd> <dt>-i <em>input_file</em></dt><dd>path, name and extension of the input file</dd>
<dt>-map 0</dt><dd>map ALL streams from input file to output. If you omit this, ffmpeg chooses only the first "best" (*) stream: 1 for audio, 1 for video (not all streams).</dd> <dt>-map 0</dt><dd>map ALL streams from input file to output. If you omit this, ffmpeg chooses only the first "best" (*) stream: 1 for audio, 1 for video (not all streams).</dd>
<dt>-f streamhash -hash md5</dt><dd>produce a checksum hash per-stream, and set the hash algorithm to md5. See the official <a href="https://www.ffmpeg.org/ffmpeg-formats.html#streamhash-1" target="_blank">documentation on streamhash</a> for other algorithms and more details.</dd> <dt>-f streamhash -hash md5</dt><dd>produce a checksum hash per-stream, and set the hash algorithm to md5. See the official <a href="https://www.ffmpeg.org/ffmpeg-formats.html#streamhash-1" target="_blank">documentation on streamhash</a> for other algorithms and more details.</dd>
<dt>-</dt><dd>FFmpeg syntax requires a specified output, and <code>-</code> is just a place holder. No file is actually created. Choose an output filename to write the hashcode lines into a textfile.</dd> <dt>-</dt><dd>The FFmpeg syntax requires a specified output, and <code>-</code> prints the output to the screen (STDOUT), rather than creating a file. Choose an output filename to write the hashcode lines into a textfile.</dd>
<dt>-v quiet</dt><dd>(Optional) Disables FFmpeg's processing output. With this option it's easier to see the text output of the hashes.</dd> <dt>-v quiet</dt><dd>(Optional) Disables FFmpeg's processing output. With this option it's easier to see the text output of the hashes.</dd>
</dl> </dl>
<p>The output looks like this, for example (1 video, 2 audio streams): <p>The output looks like this, for example (1 video, 2 audio streams):

View File

@@ -37,7 +37,7 @@ ffmpeg -i input_file -filter:v "hflip,vflip" -c:a copy output_file
# Transform SD to HD with pillarbox # Transform SD to HD with pillarbox
ffmpeg -i input_file -filter:v "colormatrix=bt601:bt709, scale=1440:1080:flags=lanczos, pad=1920:1080:240:0" -c:a copy output_file ffmpeg -i input_file -filter:v "colormatrix=bt601:bt709, scale=1440:1080:flags=lanczos, pad=1920:1080:240:0" -c:a copy output_file
# Change display aspect ratio without re-encoding # Change display aspect ratio without re-encoding
ffmpeg -i input_file -c:v copy -aspect 4:3 output_file ffmpeg -i input_file -c:a copy -c:v copy -aspect 4:3 output_file
# Convert colorspace of video # Convert colorspace of video
ffmpeg -i input_file -c:v libx264 -vf colormatrix=src:dst output_file ffmpeg -i input_file -c:v libx264 -vf colormatrix=src:dst output_file
# Modify image and sound speed # Modify image and sound speed
@@ -92,6 +92,8 @@ ffmpeg -i input_file -af areverse,silenceremove=start_threshold=-57dB:start_dura
ffmpeg -i input_file -c:v libx264 -filter:v "yadif, scale=1440:1080:flags=lanczos, pad=1920:1080:(ow-iw)/2:(oh-ih)/2, format=yuv420p" output_file ffmpeg -i input_file -c:v libx264 -filter:v "yadif, scale=1440:1080:flags=lanczos, pad=1920:1080:(ow-iw)/2:(oh-ih)/2, format=yuv420p" output_file
# Deinterlace video # Deinterlace video
ffmpeg -i input_file -c:v libx264 -vf "yadif,format=yuv420p" output_file ffmpeg -i input_file -c:v libx264 -vf "yadif,format=yuv420p" output_file
# Deinterlace video fields to frames
ffmpeg -i input_file -c:v libx264 -vf "idet,bwdif,format=yuv420p" output_file
# Inverse telecine # Inverse telecine
ffmpeg -i input_file -c:v libx264 -vf "fieldmatch,yadif,decimate" output_file ffmpeg -i input_file -c:v libx264 -vf "fieldmatch,yadif,decimate" output_file
# Set field order for interlaced video # Set field order for interlaced video

View File

@@ -6,8 +6,10 @@
if [[ "$(uname -s)" = "Darwin" ]] ; then if [[ "$(uname -s)" = "Darwin" ]] ; then
if ping -c 1 amiaopensource.github.io >/dev/null 2>&1 ; then if ping -c 1 amiaopensource.github.io >/dev/null 2>&1 ; then
ffmprovisr_path='https://amiaopensource.github.io/ffmprovisr/' ffmprovisr_path='https://amiaopensource.github.io/ffmprovisr/'
elif [[ -d /usr/local/Cellar/ffmprovisr ]] ; then
ffmprovisr_path=$(find /usr/local/Cellar/ffmprovisr -name 'index.html' | sort -M | tail -n1)
else else
ffmprovisr_path=$(find /usr/local/Cellar/ffmprovisr -iname 'index.html' | sort -M | tail -n1) ffmprovisr_path=$(find /opt/homebrew/Cellar/ffmprovisr -name 'index.html' | sort -M | tail -n1)
fi fi
open "${ffmprovisr_path}" open "${ffmprovisr_path}"
elif [[ "$(uname -s)" = "Linux" ]] ; then elif [[ "$(uname -s)" = "Linux" ]] ; then