

I didn’t realize it at first, but Pornhub has also been requesting device based age verification legislation.



I didn’t realize it at first, but Pornhub has also been requesting device based age verification legislation.



I might add one for scaling. I just don’t use it as frequently as trying to meet a file size limit. The scaling is also much easier to remember
ffmpeg -i in.mp4 -vf "scale=600:-1" -an out.mp4
It does get complicated though, when scaling many videos and images, I’ve used something like the following in the past
find . -exec ffmpeg -i {} -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black" {}.mp4 \;
Those were the only two that showed up when I typed history | grep scale.
It works significantly better than the one I previously posted. It’s also copied from stackoverflow.
bitrate="$(awk "BEGIN {print int($2 * 1024 * 1024 * 8 / $(ffprobe \
-v error \
-show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 \
"$1" \
) / 1000)}")k"
ffmpeg \
-y \
-i "$1" \
-c:v libx264 \
-preset medium \
-b:v $bitrate \
-pass 1 \
-an \
-f mp4 \
/dev/null \
&& \
ffmpeg \
-i "$1" \
-c:v libx264 \
-preset medium \
-b:v $bitrate \
-pass 2 \
-an \
"${1%.*}-$2mB.mp4"


The version I have was copied from stackoverflow. It doesn’t work very well, it makes a rough estimate to get the video file size under the set value. As an example
resize video.mp4 10
Which then resizes the video to 10 megabytes if possible.
file=$1
target_size_mb=$2 # target size in MB
target_size=$(( $target_size_mb * 1000 * 1000 * 8 )) # target size in bits
length=`ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file"`
length_round_up=$(( ${length%.*} + 1 ))
total_bitrate=$(( $target_size / $length_round_up ))
audio_bitrate=$(( 128 * 1000 )) # 128k bit rate
video_bitrate=$(( $total_bitrate - $audio_bitrate ))
ffmpeg -i "$file" -b:v $video_bitrate -maxrate:v $video_bitrate -bufsize:v $(( $target_size / 20 )) -b:a $audio_bitrate "${file}-${target_size_mb}mb.mp4"
I’ll probably replace it eventually.


What does your ~/.bashrc look like? My last change was modifying a playlist command
playlist https://www.youtube.com/@YouTube/videos
or
playlist /home/username/Videos
or just from any directory with files
playlist
And then takes all the videos found at the url or at the path (including within folders), adds them to a playlist, shuffles them, and plays them from mpv.


playlist() {
param=""
# If the first parameter has a length more than 1 character
if [ ${#1} -gt 1 ]; then
param="${@}"
else
param="."
fi
screen mpv $param --shuffle --ytdl-raw-options-add=cookies-from-browser=firefox --loop-playlist=inf --no-keepaspect-window --no-auto-window-resize
}
alias code=codium
alias files=nautilus
alias explorer=nautilus
alias rust="/path/to/.cargo/bin/evcxr"
alias sniffnet="export ICED_BACKEND=tiny-skia; /path/to/.cargo/bin/sniffnet"
alias http-server='/path/to/.cargo/bin/miniserve'
alias iphone='uxplay'
alias airplay='uxplay'
alias watch='screen mpv --ytdl-raw-options-add=remote-components=ejs:github --ytdl-raw-options-add=cookies-from-browser=firefox --no-keepaspect-window '
alias twitch='watch'
alias timeshift-launcher="pkexec env WAYLAND_DISPLAY='$WAYLAND_DISPLAY' XDG_RUNTIME_DIR='$XDG_RUNTIME_DIR' /usr/bin/timeshift-launcher"
alias update="sudo apt update && sudo apt upgrade -y && sudo flatpak update -y && sudo snap refresh"
alias resize="path/to/resize/videos/resize.sh"
playlist() {
param=""
# If the first parameter has a length more than 1 character
if [ ${#1} -gt 1 ]; then
param="${@}"
else
param="."
fi
screen mpv $param --shuffle --ytdl-raw-options-add=cookies-from-browser=firefox --loop-playlist=inf --no-keepaspect-window --no-auto-window-resize
}
gif() { ffmpeg -i $1 -f yuv4mpegpipe - | gifski -o $2 ${@:3} -;}
deleted by creator