<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 the FFmpeg. </p>
<p>This project is very much a work in progress. 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 after specifying an [input] and possibly an [output], you can then use this command in a Terminal.</p>
<p>For FFmpeg basics, check out the program's <ahref="https://www.ffmpeg.org/">official website.</a></p>
<p>For Bash and command line basics, try the <ahref="http://cli.learncodethehardway.org/book/">Command Line Crash Course</a></p>
<spandata-toggle="modal"data-target=".example"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="Displays information about a media file">Sample example</button></span>
<p>This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! This is all about info! </p>
<spandata-toggle="modal"data-target=".wav_to_mp3"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="Converts WAV to MP3">WAV to MP3</button></span>
<spandata-toggle="modal"data-target=".batch_processing"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="FFMPEG batch processing within a single folder">Batch processing</button></span>
<p>Re-wrap .MFX files in a specified directory to .mov files by using this code within a .sh file. The shell script (.sh file) and all MXF files must be contained in the same directory, and the script must be run from the directory itself (cd ~/Desktop/MXF_file_directory). Execute .sh file with the command <code>sh Rewrap-MXF.sh</code></p>
<ul>
<li>-acodec copy (copy audio codec)</li>
<li>-vcodec copy (copy video codec)</li>
</ul>
<p>Modify the ffmpeg script as needed to perform different transcodes :)</p>
<spandata-toggle="modal"data-target=".create_frame_md5s"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="This will create an md5 checksum per frame">Create frame md5s</button></span>
<spandata-toggle="modal"data-target=".one_thumbnail"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="Export one thumbnail per video file">One thumbnail</button></span>
<spandata-toggle="modal"data-target=".multi_thumbnail"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="Export many thumbnails per video file">Many thumbnails</button></span>
<p>This will grab a thumbnail every minute and output sequential png files.</p>
<ul>
<li>ffmpeg: calls the program</li>
<li>-i for input</li>
<li>-ss 00:00:20: seeks video file to 20 seconds into the video</li>
<li>-f image2: Forces the file format. image2 is an image file demuxer</li>
<li>-vf fps=fps=1/60: -vf is an alias for -filter:v, which creates a filtergraph to use for the streams. The rest of the command identifies filtering by frames per second, and sets the frames per second at 1/60 (which is one per minute).</li>
<li>out%d.png: Names the output file. The %d is a regular expression that adds a number (d is for digit) and increments with each frame (out1.png, out2.png, out3.png…)</li>
<spandata-toggle="modal"data-target=".pull_specs"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="Pull specs from video file">Pull specs</button></span>
<p>ffmpeg documentation on ffprobe (full list of flags, commands, <ahref="https://www.ffmpeg.org/ffprobe.html">https://www.ffmpeg.org/ffprobe.html</a>) </p>
<spandata-toggle="modal"data-target=".join_files"><buttontype="button"class="btn btn-default"data-toggle="tooltip"data-placement="bottom"title="Join (concatenate) two or more files into a single file">Join files together</button></span>
<p>This command takes two or more files of the same file type and joins them together to make a single file. All that the program needs is a text file with a list specifying the files that should be joined. However, it only works properly if the files to be combined have the exact same codec and technical specifications. Be careful, ffmpeg may appear to have successfully joined two video files with different codecs, but may only bring over the audio from the second file or have other weird behaviors. Don’t use this command for joining files with different codecs and technical specs and always preview your resulting video file!
<p>ffmpeg documentation on concatenating files (full list of flags, commands, <ahref="https://trac.ffmpeg.org/wiki/Concatenate">https://trac.ffmpeg.org/wiki/Concatenate</a>) </p>
<li>mylist.txt: specifies the location of a text file with a list of files to be concatenated. You should create a text file that is formatted as follows:</li>
<li>-c copy: specifies the encoder for the output file by telling ffmpeg to copy the codecs of the original files and use them for the output file</li>
<li>[output]: specifies the filename and location for the output file</li>
<p>Made with ♥ at <ahref="http://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_%26_Digital_Library_Federation_Hack_Day_2015">AMIA #AVhack15</a></p>