Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Post your project for free and start receiving proposals from freelancers within minutes after publication!

AUTOMATION with FFMPEG

698 USD

  1. 21933
     20  0

    10 days698 USD

    Hello! I am ready to perform the automation task using FFmpeg: generating videos with subtitles, effects, masks, watermarks, as well as voice-over of text via speech synthesis API (for example, ElevenLabs or Google TTS). I will implement a form for uploading large texts (up to 100,000 characters) with subsequent processing and video assembly. Estimated timeline — up to 14 days. Everything will be automated and tested. I am ready to discuss details in private messages.

  2. 232  
    3 days698 USD

    Good evening, I have been developing a very similar program for 10 months. All the functions are there, you just need to choose what you need.

  3. 99  
    5 days698 USD

    Your video generation project looks interesting. I can create a script for subtitles, effects, masks, and watermarks, as well as voice synthesis via API and ChatGPT integration. I have experience in similar tasks, for example, in AI platforms and multilingual assistants, so I know how to handle large texts. Let's discuss the details.

    My past work:
    https://elysianai.com/
    https://storyai.cc/

  4.    1  2   3
    5 days698 USD

    Hello! I understand your task: a script that can automatically generate videos with subtitles, effects, masks, and watermarks, as well as voice-over via ChatGPT API. I suggest implementing this using Python + FFMPEG + third-party text-to-speech integration for audio generation. A form for uploading large texts can be made using Flask or FastAPI with support for large data. I already have some developments and am ready to quickly get started and set up a working system according to your requirements.

  5. 260    1  1
    2 days698 USD

    Everything will be as fast as possible, it will be ready today, but I suggest something better than a script, write to me privately and I will tell you more.

  6. 1660    100  5   3
    10 days704 USD

    Good afternoon! Interesting project. Write to me, I will be glad to cooperate with you!

  7. 4189    123  0
    14 days697 USD

    I can create such a script. I will use Python + ffmpeg.
    for voice generation API openai

  8. 120  
    2 days699 USD

    I am ready to make ur project. I know how to work with GraphicsMagik and FFMPEG. I know bash scripting.

  9. Another 2 proposals concealed
  • Yakob Ingers
    12 May 2025, 20:47 |

    Sample (without API of ChatGPT (pay for)).



    #!/bin/ksh

    ############################################
    input_video="input.mp4"
    output_video="output_with_k.mp4"
    watermark_text="КR"
    font_size=100
    font_color="white"
    font_file="Arial"
    watermark_x=50
    watermark_y=50
    audio_description_prompt="dsgddfgdfdgfg bbbdfbd"
    generated_audio_file="generated_audio.mp3"

    #0
    watermark_image="watermark_k.png"
    echo "Generating with letter K '$watermark_text'..."
    gm convert -background none -fill "$font_color" -font "$font_file" -pointsize "$font_size" label:"$watermark_text" "$watermark_image"
    if [ $? -ne 0 ]; then
      echo "Error genereating watermark"
      exit 1
    fi
    echo "Image for watermark  '$watermark_image' created"

    #1
    echo "adding to video '$input_video'..."
    ffmpeg -i "$input_video" -i "$watermark_image" -filter_complex "overlay=x=$watermark_x:y=$watermark_y" -c:a copy "video_with_watermark.mp4"
    if [ $? -ne 0 ]; then
      echo "error"
      rm -f "$watermark_image"
      exit 1
    fi
    echo "1th step of video: video_with_watermark.mp4"



  • Yakob Ingers
    12 May 2025, 23:17 |

    The sample of my new script: 

    ./finale.ksh  -size 122  -i input.mp4 -label sdfds  -shadow -x 250 -y 250 -font Helvetica -wave -color white
    The result:



    This is a shell script (.ksh) designed to add a text watermark to a video file. It utilizes two command-line tools:

    1. GraphicsMagick (gm convert, gm composite): Used to generate the watermark image with optional shadow and wave effects.
    2. FFmpeg (ffmpeg): Used to overlay the generated watermark image onto the input video.

    Key functionalities:

    • Takes input video and watermark text as mandatory arguments.
    • Offers several optional parameters:
      • -font: Specifies the font for the text watermark.
      • -color: Sets the color of the text.
      • -size: Controls the size of the text.
      • -shadow: Enables a shadow effect behind the text.
      • -wave: Applies a wave distortion effect to the text.
      • -x and -y: Define the position of the watermark on the video.
    • Lists available fonts using the --help fonts option.
    • Generates a PNG image of the text watermark (with shadow and wave if enabled) using GraphicsMagick.
    • Overlays the generated PNG image onto the input video using FFmpeg.
    • Outputs the watermarked video to a file named output_with_wm.mp4.
    • Handles errors such as missing mandatory arguments or failures in image generation or video processing.
    • Cleans up by removing the temporary watermark image file after processing.

    In essence, the script automates the process of creating a text-based watermark with optional visual enhancements and embedding it into a video file.


    #!/bin/ksh


    # --- Default parameters ---

    input_video=""
    watermark_text=""
    selected_font="Arial"
    text_color="white"
    text_size=50
    enable_shadow=0
    enable_wave=0
    watermark_x=10
    watermark_y=10


    # --- Function to list available fonts ---
    list_fonts() {
      echo "Avaiable Fonts:"
      fc-list | awk -F: '{print $1}' | sort -u
    }


    # --- Argument processing ---
    while [ $# -gt 0 ]; do
      case "$1" in
        -i)
          if [ $# -gt 1 ]; then
            input_video="$2"
            shift 2
          else
            echo "Error: Expected filename after -i."
            exit 1
          fi
          ;;
        -label)
          if [ $# -gt 1 ]; then
            watermark_text="$2"
            shift 2
          else
            echo "Error: Expected text after -label."
            exit 1
          fi
          ;;
        -font)
          if [ $# -gt 1 ]; then
            selected_font="$2"
            shift 2
          else
            echo "Error: Expected font name after -font."
            exit 1
          fi
          ;;
        -color)
          if [ $# -gt 1 ]; then
            text_color="$2"

            shift 2

          else

            echo "Error: Expected color after -color."

            exit 1

          fi

          ;;

        -size)

          if [ $# -gt 1 ]; then

            text_size="$2"

            shift 2

          else

            echo "Error: Expected size after -size."

            exit 1

          fi

          ;;

        -shadow)

          enable_shadow=1

          shift

          ;;

        -wave)

          enable_wave=1

          shift

          ;;

        -x)

          if [ $# -gt 1 ]; then

            watermark_x="$2"

            shift 2

          else

            echo "Error: Expected value after -x."

            exit 1

          fi

          ;;

        -y)

          if [ $# -gt 1 ]; then

            watermark_y="$2"

            shift 2

          else

            echo "Error: Expected value after -y."

            exit 1
          fi
          ;;

        --help)
          case "$2" in
            fonts)
              list_fonts
              exit 0
              ;;

            *)

              echo "Usage: $0 -i <input_video> -label \"text\" [options]"
              echo "Options: -font <font_name>, -color <color>, -size <size>, -shadow, -wave, -x <number>, -y <number>"
              echo "           $0 --help fonts"
              exit 0

              ;;
          esac
          exit 0
          ;;

        *)

          echo "Unknown parameter: '$1'"
          echo "Usage: $0 -i <input_video> -label \"text\" [options]"
          echo "           $0 --help fonts"
          exit 1
          ;;
      esac

    done


    # --- Check for mandatory parameters ---

    if [ -z "$input_video" ] || [ -z "$watermark_text" ]; then
      echo "Error: You must specify -i <input_video> and -label \"text\"."
      echo "Usage: $0 -i <input_video> -label \"text\" [options]"
      echo "           $0 --help fonts"
      exit 1
    fi


    # --- GraphicsMagick settings ---

    watermark_text_safe=$(echo "$watermark_text" | sed 's/ /_/g')
    watermark_image="watermark_${watermark_text_safe}_${selected_font}_${text_color}_${text_size}.png"
    font_file="$selected_font"
    shadow_color="#00000080" # Semi-transparent black

    shadow_offset="+2+2"
    wave_amplitude=5
    wave_length=20
    watermark_x_offset=0
    watermark_y_offset=0

    output_video="output_with_wm.mp4"

    echo "Input video file: $input_video"
    echo "Watermark text: $watermark_text"
    echo "Font: $selected_font"
    echo "Text color: $text_color"
    echo "Text size: $text_size"
    echo "Position (x, y): ($watermark_x, $watermark_y)"

    if [ $enable_shadow -eq 1 ]; then
      echo "Shadow enabled."
    fi

    if [ $enable_wave -eq 1 ]; then
      gm convert "$watermark_image" -bordercolor none -border 10x10 -wave "$wave_amplitude"x"$wave_length" -trim "$watermark_image"
      echo "Wave effect enabled."
    fi

    # --- 1. Generating the image with text and effects using GraphicsMagick ---
    echo "Generating image with text '$watermark_text' in font '$selected_font', color '$text_color', size '$text_size'..."

    text_image="text_$watermark_image"
    shadow_image="shadow_$watermark_image"
    final_image="$watermark_image"

    # Create image with main text
    gm convert -background none -font "$font_file" -pointsize "$text_size" -fill "$text_color" label:"$watermark_text" "$text_image"

    # Create shadow image (offset text)
    if [ $enable_shadow -eq 1 ]; then
      gm convert -background none -font "$font_file" -pointsize "$text_size" -fill "#00000080" label:"$watermark_text" -bordercolor none -border 5x5 "$shadow_image"

      gm composite -geometry "+12+12" "$text_image" "$shadow_image" "$final_image"
    else
      cp "$text_image" "$final_image"
    fi

    rm -f "$text_image" "$shadow_image"

    if [ $? -ne 0 ]; then
      echo "Error generating watermark image."
      exit 1
    fi

    if [ $enable_wave -eq 1 ]; then
      gm convert "$watermark_image" -bordercolor none -border 200x200 "$watermark_image"
      gm convert "$watermark_image" -wave "$wave_amplitude"x"$wave_length" "$watermark_image"
      gm convert "$watermark_image" -trim "$watermark_image"
    fi

    # Trim the final image
    gm convert "$final_image" -trim "$watermark_image"

    echo "Watermark image '$watermark_image' created."

    # --- 2. Adding the watermark to the video using FFmpeg ---
    echo "Adding watermark to video '$input_video'..."
    ffmpeg -i "$input_video" -i "$watermark_image" -filter_complex "overlay=x=$watermark_x:y=$watermark_y" -c:a copy "$output_video"


    if [ $? -ne 0 ]; then
      echo "Error adding watermark to video."
      rm -f "$watermark_image"
      exit 1
    fi

    echo "Watermark added. Output file: $output_video"
    rm -f "$watermark_image"


    echo "Script finished."


    exit 0


  • Yakob Ingers
    12 May 2025, 23:17 |

    The sample of my new script: 

    ./finale.ksh  -size 122  -i input.mp4 -label sdfds  -shadow -x 250 -y 250 -font Helvetica -wave -color white
    The result:

    image


    This is a shell script (.ksh) designed to add a text watermark to a video file. It utilizes two command-line tools:

    1. GraphicsMagick (gm convert, gm composite): Used to generate the watermark image with optional shadow and wave effects.
    2. FFmpeg (ffmpeg): Used to overlay the generated watermark image onto the input video.

    Key functionalities:

    • Takes input video and watermark text as mandatory arguments.
    • Offers several optional parameters:
      • -font: Specifies the font for the text watermark.
      • -color: Sets the color of the text.
      • -size: Controls the size of the text.
      • -shadow: Enables a shadow effect behind the text.
      • -wave: Applies a wave distortion effect to the text.
      • -x and -y: Define the position of the watermark on the video.
    • Lists available fonts using the --help fonts option.
    • Generates a PNG image of the text watermark (with shadow and wave if enabled) using GraphicsMagick.
    • Overlays the generated PNG image onto the input video using FFmpeg.
    • Outputs the watermarked video to a file named output_with_wm.mp4.
    • Handles errors such as missing mandatory arguments or failures in image generation or video processing.
    • Cleans up by removing the temporary watermark image file after processing.

    In essence, the script automates the process of creating a text-based watermark with optional visual enhancements and embedding it into a video file.


    #!/bin/ksh


    # --- Default parameters ---

    input_video=""
    watermark_text=""
    selected_font="Arial"
    text_color="white"
    text_size=50
    enable_shadow=0
    enable_wave=0
    watermark_x=10
    watermark_y=10


    # --- Function to list available fonts ---
    list_fonts() {
      echo "Avaiable Fonts:"
      fc-list | awk -F: '{print $1}' | sort -u
    }


    # --- Argument processing ---
    while [ $# -gt 0 ]; do
      case "$1" in
        -i)
          if [ $# -gt 1 ]; then
            input_video="$2"
            shift 2
          else
            echo "Error: Expected filename after -i."
            exit 1
          fi
          ;;
        -label)
          if [ $# -gt 1 ]; then
            watermark_text="$2"
            shift 2
          else
            echo "Error: Expected text after -label."
            exit 1
          fi
          ;;
        -font)
          if [ $# -gt 1 ]; then
            selected_font="$2"
            shift 2
          else
            echo "Error: Expected font name after -font."
            exit 1
          fi
          ;;
        -color)
          if [ $# -gt 1 ]; then
            text_color="$2"

            shift 2

          else

            echo "Error: Expected color after -color."

            exit 1

          fi

          ;;

        -size)

          if [ $# -gt 1 ]; then

            text_size="$2"

            shift 2

          else

            echo "Error: Expected size after -size."

            exit 1

          fi

          ;;

        -shadow)

          enable_shadow=1

          shift

          ;;

        -wave)

          enable_wave=1

          shift

          ;;

        -x)

          if [ $# -gt 1 ]; then

            watermark_x="$2"

            shift 2

          else

            echo "Error: Expected value after -x."

            exit 1

          fi

          ;;

        -y)

          if [ $# -gt 1 ]; then

            watermark_y="$2"

            shift 2

          else

            echo "Error: Expected value after -y."

            exit 1
          fi
          ;;

        --help)
          case "$2" in
            fonts)
              list_fonts
              exit 0
              ;;

            *)

              echo "Usage: $0 -i <input_video> -label \"text\" [options]"
              echo "Options: -font <font_name>, -color <color>, -size <size>, -shadow, -wave, -x <number>, -y <number>"
              echo "           $0 --help fonts"
              exit 0

              ;;
          esac
          exit 0
          ;;

        *)

          echo "Unknown parameter: '$1'"
          echo "Usage: $0 -i <input_video> -label \"text\" [options]"
          echo "           $0 --help fonts"
          exit 1
          ;;
      esac

    done


    # --- Check for mandatory parameters ---

    if [ -z "$input_video" ] || [ -z "$watermark_text" ]; then
      echo "Error: You must specify -i <input_video> and -label \"text\"."
      echo "Usage: $0 -i <input_video> -label \"text\" [options]"
      echo "           $0 --help fonts"
      exit 1
    fi


    # --- GraphicsMagick settings ---

    watermark_text_safe=$(echo "$watermark_text" | sed 's/ /_/g')
    watermark_image="watermark_${watermark_text_safe}_${selected_font}_${text_color}_${text_size}.png"
    font_file="$selected_font"
    shadow_color="#00000080" # Semi-transparent black

    shadow_offset="+2+2"
    wave_amplitude=5
    wave_length=20
    watermark_x_offset=0
    watermark_y_offset=0

    output_video="output_with_wm.mp4"

    echo "Input video file: $input_video"
    echo "Watermark text: $watermark_text"
    echo "Font: $selected_font"
    echo "Text color: $text_color"
    echo "Text size: $text_size"
    echo "Position (x, y): ($watermark_x, $watermark_y)"

    if [ $enable_shadow -eq 1 ]; then
      echo "Shadow enabled."
    fi

    if [ $enable_wave -eq 1 ]; then
      gm convert "$watermark_image" -bordercolor none -border 10x10 -wave "$wave_amplitude"x"$wave_length" -trim "$watermark_image"
      echo "Wave effect enabled."
    fi

    # --- 1. Generating the image with text and effects using GraphicsMagick ---
    echo "Generating image with text '$watermark_text' in font '$selected_font', color '$text_color', size '$text_size'..."

    text_image="text_$watermark_image"
    shadow_image="shadow_$watermark_image"
    final_image="$watermark_image"

    # Create image with main text
    gm convert -background none -font "$font_file" -pointsize "$text_size" -fill "$text_color" label:"$watermark_text" "$text_image"

    # Create shadow image (offset text)
    if [ $enable_shadow -eq 1 ]; then
      gm convert -background none -font "$font_file" -pointsize "$text_size" -fill "#00000080" label:"$watermark_text" -bordercolor none -border 5x5 "$shadow_image"

      gm composite -geometry "+12+12" "$text_image" "$shadow_image" "$final_image"
    else
      cp "$text_image" "$final_image"
    fi

    rm -f "$text_image" "$shadow_image"

    if [ $? -ne 0 ]; then
      echo "Error generating watermark image."
      exit 1
    fi

    if [ $enable_wave -eq 1 ]; then
      gm convert "$watermark_image" -bordercolor none -border 200x200 "$watermark_image"
      gm convert "$watermark_image" -wave "$wave_amplitude"x"$wave_length" "$watermark_image"
      gm convert "$watermark_image" -trim "$watermark_image"
    fi

    # Trim the final image
    gm convert "$final_image" -trim "$watermark_image"

    echo "Watermark image '$watermark_image' created."

    # --- 2. Adding the watermark to the video using FFmpeg ---
    echo "Adding watermark to video '$input_video'..."
    ffmpeg -i "$input_video" -i "$watermark_image" -filter_complex "overlay=x=$watermark_x:y=$watermark_y" -c:a copy "$output_video"


    if [ $? -ne 0 ]; then
      echo "Error adding watermark to video."
      rm -f "$watermark_image"
      exit 1
    fi

    echo "Watermark added. Output file: $output_video"
    rm -f "$watermark_image"


    echo "Script finished."


    exit 0


Current freelance projects in the category C & C++

Consultation and audit of the current project on Odoo 19 Community Edition

We are looking for an Odoo Developer — a solo developer with experience in Odoo 19 Community Edition, including using Claude Code. We need a specialist who has successfully implemented projects in Odoo and practical experience in development using Claude Code. Important: we only…

C & C++Javascript and Typescript ∙ 1 day 5 hours back ∙ 5 proposals

Creation or refinement of firmware and logic for three autonomous LoRa stations based on ESP32.

113 USD

Creation or refinement of firmware and logic for three autonomous LoRa stations based on ESP32. The devices must set up a Wi-Fi access point, serve a local site via a browser (HTTP), receive text and images within a radius of 5-10 km (plus or minus), store data (preferably on…

C & C++C# ∙ 1 day 7 hours back ∙ 3 proposals

Software development for Arduino (RF modules 3–7.5 GHz, automatic frequency scanning)

It is necessary to develop a system on Arduino for the automatic search of active analog video signals and the automatic tuning of the transmitter to the detected frequency.It is planned to use three separate transceiver modules: 3000–4200 MHz; 4900–6000 MHz; 6100–7500…

C & C++Embedded Systems & Microcontrollers ∙ 2 days 5 hours back ∙ 4 proposals

Black Ukraine (RP-project on base MTA)

1164 USD

Fixing bugs of varying complexity, like those pictured. Map navigation adjustments. Fixing map holes, adapting vehicles to the project, removing logos, or rewriting them.

C & C++Python ∙ 3 days 17 hours back ∙ 19 proposals

Residential Proxy Infrastructure Engineer

We're building a residential proxy network from scratch — fully owned, no third-party suppliers. We need one exceptional network engineer to build the entire technical foundation. What you'll build: - Android background SDK that routes proxy traffic through user devices…

C & C++DevOps ∙ 8 days 1 hour back ∙ 13 proposals

Client
David Tourino TouxStudio
Spain Las Palmas  6  0
Project published
1 year back
185 views
Tags
  • ffmpeg
  • API