Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- max_file_size=2800
- DEFAULT_OFFSET=0
- if [ $# -eq 0 ]; then
- echo "No arguments supplied. Please provide the video path."
- exit 1
- fi
- VIDEO_PATH="$1"
- # Get the original video length in seconds
- FULL_LENGTH=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$VIDEO_PATH")
- DEFAULT_LENGTH=$FULL_LENGTH
- DEFAULT_RESOLUTION=$(ffprobe -v error -select_streams v:0 -show_entries stream=width -of csv=p=0 "$VIDEO_PATH")
- echo "Please enter an offset from the video beginning (in seconds) [default: $DEFAULT_OFFSET]:"
- read OFFSET
- OFFSET=${OFFSET:-$DEFAULT_OFFSET}
- echo "Please enter the length of the clip (in seconds) [default: $DEFAULT_LENGTH]:"
- read LENGTH
- LENGTH=${LENGTH:-$DEFAULT_LENGTH}
- echo "Enter the preferred video resolution (width:height, e.g., 720:1280 or original) [default: $DEFAULT_RESOLUTION]:"
- read RESOLUTION
- RESOLUTION=${RESOLUTION:-$DEFAULT_RESOLUTION}
- # Now you can use the variables OFFSET, LENGTH, and RESOLUTION in your script
- echo "VIDEO_PATH: $VIDEO_PATH"
- echo "OFFSET: $OFFSET"
- echo "LENGTH: $LENGTH"
- echo "RESOLUTION: $RESOLUTION"
- OUTPUT_NAME=$(basename "$VIDEO_PATH" | cut -d. -f1)
- # Determine output video path
- OUTPUT_PATH=$(dirname "${VIDEO_PATH}")
- # Use bc for floating-point arithmetic to calculate the bitrate
- bitrate=$(echo "scale=2; 8 * $max_file_size / $LENGTH" | bc)
- echo "Target bitrate: $bitrate"
- ffmpeg -y -ss ${OFFSET} -i ${VIDEO_PATH} -t ${LENGTH} -pass 1 -c:v libvpx -b:v ${bitrate}K -vf scale=${RESOLUTION}:-1 -an -sn -f webm /dev/null && \
- ffmpeg -ss ${OFFSET} -i ${VIDEO_PATH} -t ${LENGTH} -pass 2 -c:v libvpx -b:v ${bitrate}K -vf scale=${RESOLUTION}:-1 -an -sn -c:a libvorbis ${OUTPUT_PATH}/${OUTPUT_NAME}-out.webm
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement