输出当前目录下所有视频的编码、帧率、码率#

1
2
3
4
5
6
for i in ./*.mp4; do
codec=$(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i")
r_frame_rate=$(ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1 "$i")
bit_rate=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 "$i")
echo -e "$codec\t$r_frame_rate\t$bit_rate\t$i"
done

将当前目录下所有文件由 h264 编码无损转换至 h265 编码#

1
2
3
for i in ./*.mp4; do
ffmpeg -c:v h264_cuvid -i "$i" -c:v hevc_nvenc -r 24 -c:a copy -x265-params lossless=1 "./h265/$i";
done

截图#

1
ffmpeg -ss 00:20:00 -i "$i" -vframes 1 "$i.jpg"

截取视频片段#

1
ffmpeg -i d.mp4 -ss 00:11:17 -t 00:51:37 -c copy d1.mp4

遍历压缩图片#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash     

IFS=$'\n'
for file in $(find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -not -path "*/compressed/*"); do
dir=$(dirname "$file")
filename=$(basename "$file")
name="${filename%.*}"
ext="${filename##*.}"
compressed_dir="${dir}/compressed"
mkdir -p "$compressed_dir"

echo -n "正在压缩: $file\t"
if [[ "${ext}" == "png" ]]; then
ffmpeg -loglevel error -i "$file" -compression_level 100 "${compressed_dir}/${name}_compressed.png" -y
else
ffmpeg -loglevel error -i "$file" -q:v 31 "${compressed_dir}/${name}_compressed.jpg" -y
fi
ls -lh "${compressed_dir}/${name}_compressed.jpg"
done