<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.tonytascioglu.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.tonytascioglu.com/feed.php">
        <title>Tony Tascioglu Wiki - scripts:ffmpeg</title>
        <description>TechnoTony Wiki - Tony Tascioglu's personal public knowledge-base!</description>
        <link>https://wiki.tonytascioglu.com/</link>
        <image rdf:resource="https://wiki.tonytascioglu.com/_media/wiki/logo.png" />
       <dc:date>2026-04-12T00:25:59+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/add_countdown_to_video?rev=1649281432"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/av1_hdr_sdr?rev=1742366498"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/change_video_gain_brightness?rev=1679883283"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_60_interlaced_to_60_progressive?rev=1649273908"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_60_progressive_to_60_interlaced?rev=1668489292"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_still_image_to_video?rev=1649273956"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/dither_video_reduce_colors?rev=1744101582"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/dynamic_range_compression_dynaudnorm_compand?rev=1655006933"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/encode_all_files_to_opus?rev=1649862677"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/extract_closed_captions_to_subtitles?rev=1748730327"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/fix_color_space_convering_from_jpeg?rev=1703060019"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/force_fixed_frame_rate?rev=1649862926"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/fun_music_visualizer?rev=1740476721"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/gstreamer_ximagesrc_slightly_better_performance?rev=1715723964"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/interpolate_video_to_higher_framerate?rev=1649281617"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/kmsgrab_screen_capture?rev=1735883194"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/merge_concatenate_video_audio_files?rev=1649281961"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/overlay_transparent_logo_over_video?rev=1679882649"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/rotate_video_with_metadata?rev=1735883087"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/scale_video_with_bars?rev=1649281354"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/side_by_side_video?rev=1703060065"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/split_video_to_multiple_parts?rev=1649281673"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/stream_desktop_over_icecast?rev=1649862882"/>
                <rdf:li rdf:resource="https://wiki.tonytascioglu.com/scripts/ffmpeg/visualize_music_into_notes?rev=1649862775"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.tonytascioglu.com/_media/wiki/logo.png">
        <title>Tony Tascioglu Wiki</title>
        <link>https://wiki.tonytascioglu.com/</link>
        <url>https://wiki.tonytascioglu.com/_media/wiki/logo.png</url>
    </image>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/add_countdown_to_video?rev=1649281432">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T21:43:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Add (burn in) countdown timer to video</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/add_countdown_to_video?rev=1649281432</link>
        <description>Add (burn in) countdown timer to video

I'm not sure who has a use for it, but I've used it to act as a countdown in a slideshow video.

To do this, first, you need to get the length of the video, then draw the text onto the video frame.

I recommend using this in a shell or bash script. First, find the duration as follows, where $f is the input video filename, and duration is the output duration variable.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/av1_hdr_sdr?rev=1742366498">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-19T06:41:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>AV1 encoding with HDR to SDR tonemapping and 5.1 to stereo downmixing</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/av1_hdr_sdr?rev=1742366498</link>
        <description>AV1 encoding with HDR to SDR tonemapping and 5.1 to stereo downmixing

If you want real surround audio, use Sofa. But that only sounds good with headphones, and I want a 2.0 speaker mix.
ffmpeg -i legit_file.mkv -c:v libsvtav1 -crf 34 -preset 2 -threads 4 -g 240 -svtav1-params tune=0:film-grain=10:mbr=3000k -vf 'zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv420p,scale=if(gte(iw\,ih)\,min(1920\,iw)\,-2):if(lt(iw\,ih)\,m…</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/change_video_gain_brightness?rev=1679883283">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-27T02:14:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Change Video Gain (Brightness)</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/change_video_gain_brightness?rev=1679883283</link>
        <description>Change Video Gain (Brightness)

The gain for the video is the multiplier for the brightness. This is not to be confused with the brightness eq option which changes the offset, or gamma, which changes the exponent.

The simple way for this is using the curves filter (which can change the entire curve, be it offset, exponential or multiplier)</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_60_interlaced_to_60_progressive?rev=1649273908">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T19:38:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Convert 60i video to 60p using yadif (60 interlaced field per second video to 60 progressive frame per second video)</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_60_interlaced_to_60_progressive?rev=1649273908</link>
        <description>Convert 60i video to 60p using yadif (60 interlaced field per second video to 60 progressive frame per second video)

If you have interlaced video, where each field is separate, there isn't a very good way to deinterlace without losing temporal or spatial resolution.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_60_progressive_to_60_interlaced?rev=1668489292">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-15T05:14:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Convert 60p video to 60i (60 frame per second progressive video to 60 field per second interlaced)</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_60_progressive_to_60_interlaced?rev=1668489292</link>
        <description>Convert 60p video to 60i (60 frame per second progressive video to 60 field per second interlaced)

This is useful if you have 60 fps progressive video, and want to make it compatible with a DVD or other interlaced formats. Normally, 60p to 60i would go 60p to 30p to 60i to remove the interlacing artifacts, but depending on your TV, it might be better to create 60 fields, where each field is different. This will appear smoother at the expense of the comb lines.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_still_image_to_video?rev=1649273956">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T19:39:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Convert still image to a video</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/convert_still_image_to_video?rev=1649273956</link>
        <description>Convert still image to a video

You can convert a still picture into a video of your specified length. You just need to loop the input, and provide -t to set the time.

In the below, change the -t for how long the resulting video should be and mark -loop 1 for the input. All other parameters are placeholders and don't really matter.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/dither_video_reduce_colors?rev=1744101582">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-08T08:39:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Dither Video and Reduce Colors</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/dither_video_reduce_colors?rev=1744101582</link>
        <description>Dither Video and Reduce Colors

Sometimes you need to reduce the number of colors you can use.

Typically for gif, but sometimes other reasons.

Step 1 - create the palette

Example to batch process a bunch of Mp4 files for reducing to 14 colors
parallel --ungroup -j16 -q ffmpeg -i &quot;{}&quot; -vf palettegen=max_colors=16  -y &quot;{.}.png&quot; ::: *.mp4</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/dynamic_range_compression_dynaudnorm_compand?rev=1655006933">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-12T04:08:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Volume Adjustment and Dynamic Range Compression using dynaudnorm and compand</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/dynamic_range_compression_dynaudnorm_compand?rev=1655006933</link>
        <description>Volume Adjustment and Dynamic Range Compression using dynaudnorm and compand

Normally, dynamic range compression is bad. Makes music sound lifeless. However, I hate adjusting volume between and during tracks when I'm walking. 

Normalization takes care of consistent volume across tracks but not sudden jumps or louder rms. 
Dynaudnorm can essentially vary the volume throughout a track based on the peak volume, without losing range.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/encode_all_files_to_opus?rev=1649862677">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:11:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Compress all FLAC (or MP3) files in subfolders to OPUS</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/encode_all_files_to_opus?rev=1649862677</link>
        <description>Compress all FLAC (or MP3) files in subfolders to OPUS

Compress all FLAC audio files in subfolders to OPUS at 128 Kbit/s (near-transparent), while maintaining the metadata tags and album art.


find ./ -name '*.flac' -exec bash -c 'ffmpeg -i &quot;$0&quot; -f flac - | opusenc - --bitrate 128 --vbr --comp 10  &quot;${0/flac/opus}&quot; &amp;&amp; rm -v &quot;$0&quot;' {} \;</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/extract_closed_captions_to_subtitles?rev=1748730327">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-31T22:25:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Extract line 21 / EIA 608 closed captions to subtitle files</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/extract_closed_captions_to_subtitles?rev=1748730327</link>
        <description>Extract line 21 / EIA 608 closed captions to subtitle files

NOTE: If you are coming here from the Technology Connections video on DVD closed captions, this method will work! Once you convert closed captions to subtitles, it works much better in players!</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/fix_color_space_convering_from_jpeg?rev=1703060019">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-20T08:13:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fix color space issues when converting from jpeg</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/fix_color_space_convering_from_jpeg?rev=1703060019</link>
        <description>Fix color space issues when converting from jpeg

If you're taking a sequence of jpg images into video, you can have color issues.

Just add
ffmpeg ... -c:v libx264 -crf 20 -pix_fmt yuv420p -colorspace bt709 -color_trc bt709 -color_primaries bt709 -color_range tv</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/force_fixed_frame_rate?rev=1649862926">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:15:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Force a fixed frame rate</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/force_fixed_frame_rate?rev=1649862926</link>
        <description>Force a fixed frame rate

Some devices seem to record both the screen and camera with variable frame rates. COUGH  APPLE COUGH.

FFmpeg handles some frame rates differently. If you do -r, it depends on container. For MP4, it WILL make it a fixed rate by dropping or duplicating. For MKV, it won't. It will ONLY DROP frames if the input frame rate is above the specified one. If the output is higher it WON'T duplicate frames.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/fun_music_visualizer?rev=1740476721">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-25T09:45:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fun music visualizer with FFMPEG</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/fun_music_visualizer?rev=1740476721</link>
        <description>Fun music visualizer with FFMPEG

Uh so maybe you want to make cringe videos out of an mp3. 

Well I got you.

Here is my current go-to for creating a 4k60 output that uses every ffmpeg visualizer I could find.
Even includes a bouncing DVD logo aesthetic with the cover art (second input file).</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/gstreamer_ximagesrc_slightly_better_performance?rev=1715723964">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-14T21:59:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Try to make gstreamer x11imagesrc bearable</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/gstreamer_ximagesrc_slightly_better_performance?rev=1715723964</link>
        <description>Try to make gstreamer x11imagesrc bearable

OBS has x11 screen capture (terrible perf) or window capture with xcomposite (good).
FFMPEG has x11grab (terrible) or kmsgrab (good).

As far as I know, gstreamer can't do kms capture, can't do GL image capture, nor has an xcomposite equivalent.
I haven't found an equivalent high performance capture with gstreamer short of doing something like just grabbing the texture and pushing it through an appsrc.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/interpolate_video_to_higher_framerate?rev=1649281617">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T21:46:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Interpolate video to higher framerate</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/interpolate_video_to_higher_framerate?rev=1649281617</link>
        <description>Interpolate video to higher framerate

Ffmpeg has a filter called 'minterpolate' that can interpolate videos to a higher framerate. You get get not-terrible results by playing with the parameters, it's better then the 60 or 120hz interpolation done by TV's that just fades/blends the frames.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/kmsgrab_screen_capture?rev=1735883194">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-03T05:46:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Better, faster screen capture with kmsgrab</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/kmsgrab_screen_capture?rev=1735883194</link>
        <description>Better, faster screen capture with kmsgrab

Those of you that have tried to use x11grab are probably aware that it is terrible at high resolutions. To be fair, it's not really FFMPEGs fault either to capture an aging X11 window (yes I remain hopeful for Wayland). The user experience isn't great though, and not only does it drop frames, it tends to lag the entire X server causing everything on screen to stutter as well. By the way, this isn't limited to FFMPEG, full XSHM screen capture on OBS has…</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/merge_concatenate_video_audio_files?rev=1649281961">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T21:52:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Merge/concatenate multiple video/audio files into one</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/merge_concatenate_video_audio_files?rev=1649281961</link>
        <description>Merge/concatenate multiple video/audio files into one

This is useful when you need to combine multiple videos into one, either from parts above, or more likely, to make a pseudo-playlist or slideshow of videos. This method also works for audio files such as if you're going to burn a continous track on a CD, or combine interviews for a podcast or whatever.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/overlay_transparent_logo_over_video?rev=1679882649">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-27T02:04:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Overlay Logo Over Video With Transparency</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/overlay_transparent_logo_over_video?rev=1679882649</link>
        <description>Overlay Logo Over Video With Transparency

This is typically used to burn in a video logo or copyright. You typically want to have a transparent PNG file to begin with.
ffmpeg -i video.mkv -i image.png -filter_complex &quot;[1:v] scale=75:75 [scaled]; [scaled] format=argb,colorchannelmixer=aa=0.5 [logo];  [0:v][logo] overlay=x=20:y=main_h-overlay_h-(20) [out]&quot; -map &quot;[out]&quot; -map 0:a -c:v libx264 -c:a copy -crf 18 -threads 4 output.mkv</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/rotate_video_with_metadata?rev=1735883087">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-03T05:44:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rotate a video using only metadata</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/rotate_video_with_metadata?rev=1735883087</link>
        <description>Rotate a video using only metadata

You did it again. You started filming a video on your phone in portrait and turned it landscape 1 second later. 

Now your whole video appears portrait and you're lookin at your screen funny rotating your head.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/scale_video_with_bars?rev=1649281354">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T21:42:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Scale video using black bars</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/scale_video_with_bars?rev=1649281354</link>
        <description>Scale video using black bars

By default FFMPEG scales video to a given resolution but keeps the original aspect ratio, so you can end up with a 1920×1080 video that plays in 4:3. This may not be what you want.

There are a few solutions. First, you could not set the width or height with -1, and this way, FFMPEG will scale it keeping the same aspect ratio (eg: -vf scale=1920:-1) and match the missing width/height for what it needs to be for that aspect ratio. This is the recommended way.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/side_by_side_video?rev=1703060065">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-20T08:14:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Overlay videos side by side</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/side_by_side_video?rev=1703060065</link>
        <description>Overlay videos side by side

This one I use quite often to A/B test videos or do before after runs.


This is particularly useful for example when comparing upscaled videos through say realesrgan and realsr or between two models. Or if you're comparing different interpolation methods.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/split_video_to_multiple_parts?rev=1649281673">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-06T21:47:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Split a video file to multiple parts</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/split_video_to_multiple_parts?rev=1649281673</link>
        <description>Split a video file to multiple parts

If you need to either upload a video in multiple parts, or run a command in parallel (see above), it can be useful to split a video of audio file.

This can be done with ffmpeg using the 'segment' feature.


ffmpeg -i input.mkv -f segment -segment_time 30 -c:v copy -c:a copy -reset_timestamps 1 -map 0 output-%2d.mkv</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/stream_desktop_over_icecast?rev=1649862882">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:14:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Stream desktop over Icecast</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/stream_desktop_over_icecast?rev=1649862882</link>
        <description>Stream desktop over Icecast

If you need to stream to many computers at once, Icecast is pretty useful. FFMPEG can directly stream to an Icecast server (alternatively, you can use similar settings in OBS). I capture the x11 window, then encode using VAAPI for reduced CPU usage.</description>
    </item>
    <item rdf:about="https://wiki.tonytascioglu.com/scripts/ffmpeg/visualize_music_into_notes?rev=1649862775">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:12:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Visualize music into notes</title>
        <link>https://wiki.tonytascioglu.com/scripts/ffmpeg/visualize_music_into_notes?rev=1649862775</link>
        <description>Visualize music into notes

Sometimes I get curious and want to break down a song to it's core melodies, FFMPEG has a cqt filter (like fft), that can convert an audio file into a visual based on the notes. I also realized you can do this in real-time with decent latency using ALSA.</description>
    </item>
</rdf:RDF>
