Streams
To help you further understand issues regarding streams, check out the stream mapping section.
diff --git a/index.html b/index.html index 6e937be..92ba01a 100644 --- a/index.html +++ b/index.html @@ -20,6 +20,7 @@
To help you further understand issues regarding streams, check out the stream mapping section.
A codec is the program in the digital file that encodes/decodes the digital information. It denotes the many different algorithms used to compress video. The term codec is derived from the terms encoding/decoding and compression/decompression. Codecs are used to store files on disk, as well as to transmit media. There are different codecs for both audio and video.
+Audio Codec
+AAC (Advanced Audio Coding):
+AAC is an audio coding standard for lossy digital audio compression. It is designed to provide high-quality sound at lower bit rates compared to its predecessor, MP3, making it ideal for streaming services and portable devices.
+FLAC (Free Lossless Audio Codec):
+FLAC is an audio codec that is similar to MP3, but lossless. It is supported by the Mastroka container. Digital audio compressed by the FLAC algorithm can typically be reduced to 50 and 70 percent of its original size and decompresses to its identical copy of the original audio data.
+Bibliography:
+ +Video Codec
+DV Codecs:
+DV is a family of codecs used for storing digital video. DV uses lossy compression of video while audio is stored uncompressed. It utilizes intraframe and interframe compression techniques to achieve efficient storage and playback of video content. DV does not use frame-to-frame temporal encoding which is employed by MPEG-2 and other MPEG formats. DV files also include metadata such as timestamps, camera information, and other technical details.
+ +H.264:
+Also referred to as Advanced Video Coding, it is created to provide high efficiency in compression at substantially lower bit rates than previous standards. It can be used for both lossless and lossy compression. It was first launched in 2003 as the successor of MPEG-2. H.264 codec is powerful in greatly reducing file size while preserving image clarity, optimizing network bandwidth, and allowing playback on different devices.
+H.265:
+Also referred to as High Efficiency Video Coding, it is designed as the successor of the H.264 codec. It can support solutions up to 8192x4320. HEVC uses both integer discrete cosine transform and discrete sine transform with varied block sizes between 4x4 and 32x32. Compared to the H.264, HEVC achieves about 35-50% better compression, allowing for the same video quality at lower bitrates.
+Bibliography:
+ +Apple ProRes 422:
+Apple ProRes 422 is a proprietary video codec developed by Apple for editing and post-production purposes. It supports resolutions up to 8K and uses compression algorithms based on the discrete cosine transform. All ProRes variants use chroma sampling of 4:2:2 at 10-bit color depth.
+Bibliography:
+ +FFV1:
+Also referred to as FFmpeg Video Codec 1, FFV1 is a lossless intra-frame video codec. It supports YUV color space model. From version 3 onwards, it can also encode interlaced video. It also supports YUV and RGB content including alpha channel of color depths ranging from 8 to 16 bits.
+Bibliography:
+ +Video transcoding means converting already-encoded content by decoding/decompressing it, implementing alterations, and recompressing it for delivery. The transcoding function makes duplicates of the material in different codecs and containers for multiple purposes.
+Rewrapping refers to the process of moving media between containers without altering its actual data. It only changes the “wrapper” or the container of the file, but does not alter the encoding of the file.
+Pulse-code modulation is a method to digitally represent an analog signal. A signal is pulse code modulated to convert its analog information into a binary sequence. PCM produces a series of digits, and each of the binary digits represents the approximate amplitude of the signal sample at that instant.
+Timecode is a labeling system that is used to identify each frame of recorded video. It is a sequence of numeric codes generated at regular intervals by a timing synchronization system. The timecode commonly employed in film and video production is the SMPTE family of timecodes, which includes linear timecode (LTC), vertical interval timecode (VITC), burnt-in timecode, and so on. + In digital recording formats, the timecode is carried as a part of the Metadata contained within the digital stream or file structure.
+A container, also called a wrapper, is a file format that encapsulates one or more media streams along with metadata, in order for them to be stored and played back together. One of the most important things a media container does is arrange and interleave the data so that the audio and video play out synchronously.
+Audio Container
+WAV:
+Waveform Audio File Format, or WAVE, is the main format used on Microsoft Windows systems for uncompressed audio. WAV is an application of the Resource Interchange File Format (RIFF) bitstream format for storing data in chunks. WAV files can contain compressed audio, but the most common WAV audio format is uncompressed audio in the linear pulse-code modulation format.
+BWF:
+The Broadcast Wave Format audio standard was developed by the European Broadcast Union and is an expansion of the popular WAV format. It is the recording format of most file-based non-linear digital recorders used for motion picture, radio, and television production. It is recommended for archival use. The purpose of this format is the addition of metadata and checksum embedding to facilitate the exchange of sound data between different computer platforms and applications, while maintaining file-integrity and intellectual property.
+Bibliography:
+ +Video Container
+Matroska:
+The Matroska container is a format for audio, video data, and other multimedia elements. It is a project to create a container format that can hold an unlimited number of video, audio, picture, or subtitle tracks in one file. Its specifications are fully open, and its implementation consists mostly of open source software.
+MP4:
+The MPEG-4 video file container is a compressed file format that can contain video, audio, subtitles, and still images. MP4 is based on the MPEG-4 standard and supports a more limited set of video and audio codecs compared to MKV.
+MXF:
+Media Exchange Format, or MXF, was developed from the beginning to be an SMPTE format that equipment manufacturers could use to exchange content among their products. An MXF file format can store video, audio data, timecodes, and codec instructions. MXF files are codec-agonistic, thus allowing for various video and audio codecs depending on the quality and storage need.
+Provenance metadata refers to the information that is recorded about the history and the origin of data, including its creation and the history of modification.
+Bibliography:
+PREMIS Data Dictionary Version 3.0
+It includes definition of Digital Provenance: Documentation of processes in a Digital Object’s life cycle. Digital Provenance typically describes Agents responsible for the custody and stewardship of Digital Objects, key Events that occur over the course of the Digital Object’s life cycle, and other information associated with the Digital Object’s creation, management, and preservation.
+Interlaced video is a method of encoding motion by splitting each frame into two fields: one containing the odd-numbered horizontal lines and the other containing the even-numbered lines. Because the fields are captured at different times, motion appears smoother even though the signal uses the same bandwidth. Many analog formats, such as broadcast television, VHS, Betamax, Digital8, and LaserDisc, used interlacing as standard, and it still appears in some digital sources.
+Deinterlacing converts interlaced video fields into progressive frames. A deinterlacer buffers the fields and reconstructs missing lines using techniques like blending or motion-adaptive interpolation. Effective deinterlacing reduces artifacts like combing and flicker.
+Constant Rate Factor (CRF) is the default quality mode for x264 and x265 encoders. It keeps quality constant while allowing bitrate to vary as needed. Values range from 0 to 51: lower = higher quality and bigger files, while higher = more compression and lower quality.
+Dithering adds low-level noise to a signal to make quantization artifacts less noticeable when reducing bit depth. It helps prevent visible or audible patterns, such as color banding in images or distortion in audio. Dithering is used in both digital audio and video workflows and is commonly applied when exporting to lower bit depths.
+Padding refers to adding extra pixels to the borders of an image or video frame. Padding is often used to change the frame size, adjust or preserve aspect ratios, create borders, or prepare material for further processing. The added pixels can be set to a constant value or sampled from the existing border.
+Bibliography:
+ + + +A color matrix is a set of coefficients used to convert pixel values between color spaces, such as RGB and YUV, or between different YUV standards like BT.601, BT.709, and BT.2020. Using the correct matrix ensures accurate color reproduction when encoding, decoding, or transforming video.
+A color space defines how colors are represented as numeric values, including their gamut and luminance values. It provides a standardized way to interpret and reproduce how colors are captured, processed, and displayed across different devices and workflows.
+NTSC is an analog television and color encoding standard used for broadcast in North America, Japan, and parts of South America. Many consumer video formats and DVD outputs in these regions follow NTSC parameters.
+PAL is an analog television and color encoding standard used across Europe, Asia, Oceania, Africa, and parts of South America. It was designed to correct NTSC’s color phase-shift issues by alternating the chroma phase each line.
+Phase describes the position of a waveform within its cycle. The timing offset between two similar waveforms is their phase difference, which strongly affects how the signals combine in audio production.
+An EQ curve provides a representation of gain adjustments across the audio frequency spectrum. They are used to boost, cut, or correct frequencies during recording, mixing, or playback.
+Image normalization adjusts the range of pixel intensity values in an image. This process improves contrast, standardizes brightness, and prepares images for consistent processing, display, or analysis.
+Frame rate refers to the frequency at which consecutive frames are captured or displayed, measured in frames per second (FPS). Typical frame rates include 24, 25, 30, and 60 FPS, depending on the source material and delivery standard.
+Chroma subsampling is a compression technique that reduces the resolution of color (chroma) information relative to brightness (luma) in a video signal. This lowers bandwidth or file size without noticeably affecting perceived image quality.
+Types of Chroma Subsampling
+4:2:0:
+A chroma subsampling format that stores color at half the horizontal and half the vertical resolution of luma. Each 2×2 block of luma samples shares a single pair of chroma samples, reducing color data to one-quarter of the luma data while maintaining most of the perceived image detail.
+4:2:2:
+A chroma subsampling format where luma is sampled at full resolution, but chroma is sampled at half the horizontal resolution and full vertical resolution. 4:2:2 reduces chroma data compared with 4:4:4 while preserving vertical color detail.
+4:4:4:
+A chroma subsampling format in which luma and chroma are stored at full resolution. Unlike 4:2:2 or 4:2:0, 4:4:4 retains all color information for each pixel.
+Bibliography:
+ +In digital video, a vectorscope graphs the Cb and Cr chrominance channels to display hue and saturation.
+Fixity means that a digital file has remained unchanged over time. Fixity checks use checksums or hashes to confirm that the file’s bitstream has not been altered or corrupted.
+A checksum is a small-sized block of data computed from a digital file that can be used to detect unintended changes during storage or transfer. Checksums verify integrity but do not establish authenticity.
+A hashcode is an integer derived from an object’s contents in Java, used primarily for efficient storage and retrieval in hash-based data structures. Every Java object has a hashcode, but different objects can share the same value.
+A sine wave is a smooth, periodic waveform representing a single-frequency tone without harmonics or overtones. Sine waves are used in audio signal analysis, calibration, and synthesis, and they are characterized by frequency, amplitude, and phase.
+An ISO file is a disk image that contains a sector-by-sector copy of an optical disc, including its file system. ISO images are commonly used to distribute software or media and are accessed by mounting or burning to a disc.
+ +Unless specified, FFmpeg will automatically set codec choices and codec parameters based off of internal defaults. These defaults are applied based on the file type used in the output (for example .mov or .wav).
When creating or transcoding files with FFmpeg, it is important to consider codec settings for both audio and video, as the default options may not be desirable in your particular context. The following is a brief list of codec defaults for some common file types:
.avi: Audio Codec: mp3, Video Codec: mpeg4.mkv: Audio Codec: ac3, Video Codec: H.264.mov: Audio Codec: AAC, Video Codec: H.264.mov: Audio Codec: AAC, Video Codec: H.264.mp4: Audio Codec: AAC, Video Codec: H.264.mpg: Audio Codec: mp2, Video Codec: mpeg1video.mxf: Audio Codec: pcm_s16le, Video Codec: mpeg2videoMany FFmpeg commands use filters that manipulate the video or audio stream in some way: for example, hflip to horizontally flip a video, or amerge to merge two or more audio tracks into a single stream.
The use of a filter is signaled by the flag -vf (video filter) or -af (audio filter), followed by the name and options of the filter itself. For example, take the convert colorspace command:
ffmpeg -i input_file -c:v libx264 -vf colormatrix=src:dst output_file
-
Here, colormatrix is the filter used, with src and dst representing the source and destination colorspaces. This part following the -vf is a filtergraph.
Here, colormatrix is the filter used, with src and dst representing the source and destination colorspaces. This part following the -vf is a filtergraph.
It is also possible to apply multiple filters to an input, which are sequenced together in the filtergraph. A chained set of filters is called a filter chain, and a filtergraph may include multiple filter chains. Filters in a filterchain are separated from each other by commas (,), and filterchains are separated from each other by semicolons (;). For example, take the inverse telecine command:
ffmpeg -i input_file -c:v libx264 -vf "fieldmatch,yadif,decimate" output_file
Here we have a filtergraph including one filter chain, which is made up of three video filters.
@@ -199,7 +373,7 @@-vf "fieldmatch, yadif, decimate"but -vf fieldmatch, yadif, decimate is not valid.
The ordering of the filters is significant. Video filters are applied in the order given, with the output of one filter being passed along as the input to the next filter in the chain. In the example above, fieldmatch reconstructs the original frames from the inverse telecined video, yadif deinterlaces (this is a failsafe in case any combed frames remain, for example if the source mixes telecined and real interlaced content), and decimate deletes duplicated frames. Clearly, it is not possible to delete duplicated frames before those frames are reconstructed.
The ordering of the filters is significant. Video filters are applied in the order given, with the output of one filter being passed along as the input to the next filter in the chain. In the example above, fieldmatch reconstructs the original frames from the inverse telecined video, yadif deinterlaces (this is a failsafe in case any combed frames remain, for example if the source mixes telecined and real interlaced content), and decimate deletes duplicated frames. Clearly, it is not possible to delete duplicated frames before those frames are reconstructed.
-vf is an alias for -filter:v-map 0:0 -map 0:2 means ‘take the first and third streams from the first input file’.-map 0:1 -map 1:0 means ‘take the second stream from the first input file and the first stream from the second input file’.When no mapping is specified in an ffmpeg command, the default for video files is to take just one video and one audio stream for the output: other stream types, such as timecode or subtitles, will not be copied to the output file by default. If multiple video or audio streams are present, the best quality one is automatically selected by FFmpeg.
-To map all streams in the input file to the output file, use -map 0. However, note that not all container formats can include all stream types: for example, .mp4 cannot contain timecode.
When no mapping is specified in an ffmpeg command, the default for video files is to take just one video and one audio stream for the output: other stream types, such as timecode or subtitles, will not be copied to the output file by default. If multiple video or audio streams are present, the best quality one is automatically selected by FFmpeg.
+To map all streams in the input file to the output file, use -map 0. However, note that not all container formats can include all stream types: for example, .mp4 cannot contain timecode.
To safely process files that may or may not contain given a type of stream, you can add a trailing ? to your map commands: for example, -map 0:a? instead of -map 0:a.
This makes the map optional: audio streams will be mapped over if they are present in the file—but if the file contains no audio streams, the transcode will proceed as usual, minus the audio stream mapping. Without adding the trailing ?, FFmpeg will exit with an error on that file.
ffmpeg -i input_file.ext -c copy -map 0 output_file.ext
This script will rewrap a video file. It will create a new video video file where the inner content (the video, audio, and subtitle data) of the original file is unchanged, but these streams are rehoused within a different container format.
+This script will rewrap video file. It will create a new video video file where the inner content (the video, audio, and subtitle data) of the original file is unchanged, but these streams are rehoused within a different container format.
Note: rewrapping is also known as remuxing, short for re-multiplexing.
It may not be possible to rewrap a file's contents to a new container without re-encoding one or more of the streams within (that is, the video, audio, and subtitle tracks). Some containers can only contain streams of a certain encoding type: for example, the .mp4 container does not support uncompressed audio tracks. (In practice .mp4 goes hand-in-hand with a H.264-encoded video stream and an AAC-encoded video stream, although other types of video and audio streams are possible). Another example is that the Matroska container does not allow data tracks.
+It may not be possible to rewrap a file's contents to a new container without re-encoding one or more of the streams within (that is, the video, audio, and subtitle tracks). Some containers can only contain streams of a certain encoding type: for example, the .mp4 container does not support uncompressed audio tracks. (In practice .mp4 goes hand-in-hand with a H.264-encoded video stream and an AAC-encoded video stream, although other types of video and audio streams are possible). Another example is that the Matroska container does not allow data tracks.
In such cases, FFmpeg will throw an error. If you encounter errors of this kind, you may wish to consult the list of transcoding recipes.
ffmpeg -i input_file.wav -c copy -write_bext 1 -metadata field_name='Content' output_file.wav
This command will write a file in the Broadcast Wave Format (BWF) containing a BEXT chunk with related metadata.
+This command will write a file in the Broadcast Wave Format (BWF) containing a BEXT chunk with related metadata.
ffmpeg -i input_file -f rawvideo -c:v copy output_file.dv
This script will take a video that is encoded in the DV Codec 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.
+This script will take a video that is encoded in the DV Codec 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.
ffmpeg -i input_file -c:v prores -profile:v 1 -vf yadif -c:a pcm_s16le output_file
This command transcodes an input file into a deinterlaced Apple ProRes 422 LT file with 16-bit linear PCM encoded audio. The file is deinterlaced using the yadif filter (Yet Another De-Interlacing Filter).
+This command transcodes an input file into a deinterlaced Apple ProRes 422 LT file with 16-bit linear PCM encoded audio. The file is deinterlaced using the yadif filter (Yet Another De-Interlacing Filter).
prores 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).prores_ks generates a better file, can also be used for interlaced video, allows also encoding of ProRes 4444 (-c:v prores_ks -profile:v 4) and ProRes 4444 XQ (-c:v prores_ks -profile:v 5), and seems to be better for video according to Rec. 709 (Recommendation ITU-R BT.709).Context: The standard for the intermediary file at the library is Apple ProRes 422 codec 10-bit wrapped in a MOV container. The input file is wrapped in an MKV container.
+Solution: Used FFmpeg command, -i input.mkv -c:v prores_ks -profile:v hq output.mov to create intermediary file. The flag prores_ks specifies that the video would only encode to 10-bit.
ffmpeg -i input_file -c:v libx264 -pix_fmt yuv420p -c:a aac output_file
This command takes an input file and transcodes it to H.264 with an .mp4 wrapper, audio is transcoded to AAC. The libx264 codec defaults to a “medium” preset for compression quality and a CRF of 23. CRF stands for constant rate factor and determines the quality and file size of the resulting H.264 video. A low CRF means high quality and large file size; a high CRF means the opposite.
+This command takes an input file and transcodes it to H.264 with an .mp4 wrapper, audio is transcoded to AAC. The libx264 codec defaults to a “medium” preset for compression quality and a CRF of 23. CRF stands for constant rate factor and determines the quality and file size of the resulting H.264 video. A low CRF means high quality and large file size; a high CRF means the opposite.
By default, this recipe will include one track of each type (e.g. audio, video) in the output file. If you wish to include more tracks, consult the entry on stream mapping.
For more information, see the FFmpeg and H.264 Encoding Guide on the FFmpeg wiki.
+Context: The University Archives and Records Management Services department acquired a non-professional, unedited footage of a graduation ceremony. The file was 112 gigabytes and encoded using the Apple ProRes codec. They tried to transcode the file into FFVI to decrease the size, but it doubled in size.
+Solution: The curator agreed to compression since it was not the only footage of the ceremony, and they decided on the h. 264 codec.Used the FFmpeg command -i -c:v libx264 -pix_fmt yuv420p -crf 12 -c:a copy [destination]
Outcome:After transcoding, the resulting file was 53 gigabytes, reducing almost half of the size of the original.
+Check out the blog to read more about the case study.
+ffmpeg -i input_video_file.mxf -i input_audio_file.mxf -c:v libx264 -pix_fmt yuv420p -c:a aac output_file.mp4
This will transcode MXF wrapped video and audio files to an H.264 encoded MP4 file. Please note this only works for unencrypted, single reel DCPs.
+This will transcode MXF wrapped video and audio files to an H.264 encoded MP4 file. Please note this only works for unencrypted, single reel DCPs.
.mxfffmpeg -i input_file -map 0 -dn -c:v ffv1 -level 3 -g 1 -slicecrc 1 -slices 16 -c:a copy output_file.mkv -f framemd5 -an framemd5_output_file
This will losslessly transcode your video with the FFV1 Version 3 codec in a Matroska container. In order to verify losslessness, a framemd5 of the source video is also generated. For more information on FFV1 encoding, try the FFmpeg wiki.
.mkv extension to save your file in a Matroska container.ffmpeg -i input_file.wav -write_id3v1 1 -id3v2_version 3 -dither_method triangular -out_sample_rate 48k -qscale:a 1 output_file.mp3
This will convert your WAV files to MP3s.
+This will convert your WAV files to MP3s.
A couple notes
Context: After WGBH ingested a sample 2TB production hard drive that included MP3 files from audio-only interviews, they created .mp3 proxies for all audio. While it might not have been necessary for the audio interviews that are already in .mp3 format, but it is easier to run a batch script on the whole drive for some of the stock footage rather than figuring out which one needs transcoding.
+Solution: They run a FFmpeg command with a batch script for the hard drive, relevant command is listed here +
for i in `find . -type f | grep -i '\(mp3\|m4a\|wmv\|aif\|aac\|aiff\|wma\|wav\)$'`;
+do
+ newDir=`dirname "$i"`;
+ mkdir -p "$outDir/$newDir";
+
+ ffmpeg -i "$i" -acodec libmp3lame -qscale:a 9 "$outDir/$newDir/$(basename $i)".mp3;
+done;
+
+ click here for full documentation.
+Outcome: The proxies can be viewed by internal producers in their local FileMaker database to help them better determine what they might want to use in a production.
+Check the blog for more information on the case study.
+A note about dither methods. FFmpeg comes with a variety of dither algorithms, outlined in the official docs, though some may lead to unintended, not-subtle digital clipping on some systems.
+A note about dither methods. FFmpeg comes with a variety of dither algorithms, outlined in the official docs, though some may lead to unintended, not-subtle digital clipping on some systems.
-c:a copy by -an.scale=1440:1080) works for both upscaling and downscaling. We use the Lanczos scaling algorithm (flags=lanczos), which is slower but gives better results than the default bilinear algorithm.pad=1920:1080:240:0) completes the transformation from SD to HD.Note: In order to keep the original timestamps, without trying to sanitize them, you may add the -copyts option.
Context: An art museum wants to make a 10 or 15-second excerpt of an interview with an artist to display on social media or in the exhibition hall as a compliment to the artwork.
+Solution: Run an ffmpeg command with the exact timestamp where the museum wants the excerpt.
+Possible Complication: Sometimes, in addition to trimming the original file, the institution might also want to transcode to other codecs and upscale the video from SD to HD with pillarbox for widescreen display. Check NYPL’s documentation for further details.
+null muxer. This allows video decoding without creating an output file.- prints the output to the screen (STDOUT), rather than creating a file.Context: PFA’s media archivist needs to determine which born-digital files are interlaced before creating access copies for screenings and online research access. The metadata does not clearly show whether the videos were captured as interlaced or progressive, and assuming all files are interlaced could lead to extra and unnecessary work. Missing interlaced files could cause artifacts in the final access copies.
+Solution: Using FFmpeg’s interlace detection filter -i filename.mp4 -vf idet -frames:v 500 -an -f rawvideo -y /dev/null to see whether each video is interlaced or progressive.
Outcome:Videos that show a high number of TFF or BFF frames are flagged as interlaced, and the archivist decides on the best way to deinterlace them before creating H.264 access copies, ensuring smooth playback on modern progressive displays. Videos that appear mostly progressive are left as-is, saving time and preserving their quality. This approach allows PFA to quickly determine which files need extra processing and which are ready to use.
+See also the FFmpeg documentation on ffprobe for a full list of flags, commands, and options.
+Context: Needed to access information about file formats that may have become obsolete as both the codec and container information are needed for playback.
+Solution: Used FFprobe, which uses libraries of various codecs and containers to extract technical metadata to determine the codec and container.
+Outcome: The output of FFprobe includes format name, format_long_name, and other metadata information such as start time, duration, and bitrate.
+Check out the blog post for more information
+ffmpeg -loglevel error -i input_file -map 0:v:0 -f hash -hash md5 -
This script will perform a fixity check on a specified audio or video stream of the file, useful for checking that the content within a video has not changed even if the container format has changed.
+This script will perform a fixity check on a specified audio or video stream of the file, useful for checking that the content within a video has not changed even if the container format has changed.
ffmpeg -i input_file -map 0 -f streamhash -hash md5 - -v quiet
The outcome is very similar to that of "-f hash", except you get one hash per-stream, instead of one (summary) hash. Another benefit is that you don't have to know which streams, or how many to expect in the source file. This is very handy for hashing mixed born-digital material.
-This script will perform a fixity check on all audio and video streams in the file and return one hashcode for each one. This is useful for e.g. being able to change to container/codec format later on and validate it matches the original source.
+This script will perform a fixity check on all audio and video streams in the file and return one hashcode for each one. This is useful for e.g. being able to change to container/codec format later on and validate it matches the original source.
The output is formatted for easily processing it further in any kind of programming/scripting language.
The Importance of Using a Test Pattern Video: As outlined in IASA’s Guidelines for the Preservation of Video Recordings, using an alignment and calibration test tape in transfer situations can help technical staff in assessing the day-to-day performance of a machine and double-checking when a playback problem arises with a collection item. Digital-file-based test patterns may cover several features, including video levels, chroma phase, colour space, audio mapping, audio levels, timecode reproduction, aspect ratio, scaling, cropping, and much more.
+
NYPL has detailed documentation of generating different test patterns, including 2K 10-bit with a silent audio track and a DPX test file.
+Generate a SMPTE bars test video + a 1kHz sine wave as audio testsignal.
+Generate a SMPTE bars test video + a 1kHz sine wave as audio testsignal.
ffmpeg -f lavfi -i "smptebars=size=720x576:rate=25" -f lavfi -i "sine=frequency=1000:sample_rate=48000" -c:a pcm_s16le -t 10 -c:v ffv1 output_file
Create an ISO file that can be used to burn a DVD. Please note, you will have to install dvdauthor. To install dvd author using Homebrew run: brew install dvdauthor
Create an ISO file that can be used to burn a DVD. Please note, you will have to install dvdauthor. To install dvd author using Homebrew run: brew install dvdauthor
ffmpeg -i input_file -aspect 4:3 -target ntsc-dvd output_file.mpg
This command will take any file and create an MPEG file that dvdauthor can use to create an ISO.
HandBrake is a free, open-source transcoding tool that allows users to convert video files between formats. It supports a wide range of input formats and codecs and is commonly used to create compressed access files from large preservation masters. Unlike command-line tools such as FFmpeg, HandBrake offers a graphical user interface (GUI), which makes it more user-friendly for beginners while still providing advanced options for experienced users. It runs on Windows, macOS, and Linux, includes built-in presets for common output types, supports batch processing, and can handle nearly any video, performing tasks like cropping, resizing, and deinterlacing to prepare files for viewing or sharing. See here for documentation
+HandBrake is not designed for combining multiple clips or passing through video without conversion (video is always re-encoded). Instead, its primary purpose is for creating access files. It does not operate with files protected by Digital Rights Management (DRM), such as content from iTunes, Amazon Video, Netflix, or many commercial DVDs and Blu-rays, and it is unable to create Blue-ray, AVCHD, or DVD discs. Always ensure you have the legal right to copy or convert any media you work with.
+Begin by opening HandBrake and selecting Open Source to load your preservation file (e.g., an uncompressed QuickTime or FFV1 file). Under the Summary tab, choose MP4 as the container format. In the Video tab, set the Video Encoder to H.264 (x264). Select an appropriate quality setting for access files, such as using the Constant Quality slider to balance file size and visual quality. Review the Dimensions, Audio, and Subtitles tabs and adjust settings as needed for access and playback. Next, choose a destination folder and filename for the output file. Click Start at the top of the window to begin encoding.
+For future reference, these settings can be saved as a preset, allowing them to be reused or applied to multiple files during batch processing.
+ +Begin by opening HandBrake and selecting Open Source to load your video file. Choose a destination folder and filename for the deinterlaced output file. In the Video tab, choose H.264 (x264) as the Video Encoder. Navigate to the Filters tab, and under Deinterlace, select Decomb.
+Optional: Select Bob, EEDI2, or EEDI2 Bob presets for different levels of motion smoothing and quality. Decomb is sufficient for most archival and access purposes because it preserves detail in partially interlaced footage.
+Tip: YADIF is a simple, fast option for fully interlaced video but it processes every frame, which can sometimes slightly affect the frame rate or motion.
+Always check the output file after encoding, since deinterlacing can sometimes introduce artifacts.
+See here for documentation
+Shutter Encoder is a free and open-source tool created by Paul Pacifico that provides a suite of functionalities designed for effectively managing and manipulating image, audio, and video content. Using multiple open-source programs including 7-Zip, VLC, dcraw, FFmpeg, ExifTool, tsMuxeR, mkvmerge, MediaInfo, dvdauthor, youtube-dl, XpdfReader, and bmxtranswrap, Shutter Encoder can perform many preservation tasks and it boasts a rather easy-to-use GUI interface. See here for documentation
+While Shutter Encoder keeps a vibrant GitHub Repository for flagging issues and releases new versions frequently, users should exercise caution. Some known issues include inaccurate metadata retention and remaining time calculations. Always check the output file and playback to ensure the integrity of your work.
+Shutter Encoder has been recommended by University of British Columbia's Indigitization Toolkit for creating Video Primary Access files using the H.264 codec wrapped in MP4, thanks to its built-in, user-friendly interface.
+To create an H.264 access file, simply select H.264 as the output codec and choose a destination for the output file. You can select Open destination at end to save it in the same directory as the source file, or click Change to specify a different folder. Once your settings are configured, click Start function to begin encoding.
+Shutter Encoder also supports batch processing. Drag and drop multiple files into the Choose files area, set your desired output specifications, and start encoding.
+Shutter Encoder can create an thumbnail of a video file while the interface displays the video. One can manually toggle the timeline and select the exact time in the video for the thumbnail image. Select specifications under Image Creation in functions, which support JPEG, JPEG XL, and Image, and choose the 100% for the full image. Click Start Function.
+ +X Lossless Decoder(XLD) is a tool for Mac OS X that is able to decode/convert/play various 'lossless' audio files. The supported audio files can be split into some tracks with cue sheet when decoding. It works on Mac OS X 10.4 and later.
+Open Preferences on XLD and go to the tab CD Rip. In the column “Read samples offset correction value,” there is a number value that tells the correction offset, and when you hover over the value, you will see the CD drive specification.
+Important Setup: + 🔧 + to configure XLD properly before ripping your first CD, you should set Character encoding of cuesheet to Unicode (UTF-8), check the Automatically check for updates box, and set Maximum #Threads according to your processor cores if not automatically detected. For the output format, select FLAC, and click the option button to set compression level to none for lossless compression. Uncheck “Allow to embed cue sheet.” In the CD Rip Tab: Set Ripper Mode to “XLD Secure Ripper” and check “Use C2 Error Pointers” if your drive supports them.
+The Ripping Process: Once you load the CD, if not automatically loaded, open to file and open Audio CD to find your CD. XLD will begin to detect the pre-gaps. At the top of the window of Pre-gap settings, choose “Include pre-gap except for HTOA” and choose your output directory. You can also click “Get Metadata” and save cue sheet to store CD tags and other related metadata. To start the ripping process, click the extract and wait for the process to complete.
+After the ripping process is completed, Check any error messages to verify the rip.
+