133 lines
2.8 KiB
Markdown
133 lines
2.8 KiB
Markdown
# Common Media Processing Workflows
|
|
|
|
## Video Optimization
|
|
|
|
### Optimize for Web
|
|
```bash
|
|
# H.264 with good compression
|
|
ffmpeg -i input.mp4 \
|
|
-c:v libx264 -preset slow -crf 23 \
|
|
-c:a aac -b:a 128k \
|
|
-movflags +faststart \
|
|
output.mp4
|
|
```
|
|
|
|
### Multi-Pass Encoding
|
|
```bash
|
|
# Pass 1 (analysis)
|
|
ffmpeg -y -i input.mkv -c:v libx264 -b:v 2600k -pass 1 -an -f null /dev/null
|
|
|
|
# Pass 2 (encoding)
|
|
ffmpeg -i input.mkv -c:v libx264 -b:v 2600k -pass 2 -c:a aac output.mp4
|
|
```
|
|
|
|
### Hardware-Accelerated Encoding
|
|
```bash
|
|
# NVIDIA NVENC
|
|
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset fast -crf 22 output.mp4
|
|
|
|
# Intel QuickSync
|
|
ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -c:v h264_qsv output.mp4
|
|
```
|
|
|
|
### Extract Video Segment
|
|
```bash
|
|
# From 1:30 to 3:00 (re-encode for precision)
|
|
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00 \
|
|
-c:v libx264 -c:a aac output.mp4
|
|
```
|
|
|
|
## Image Workflows
|
|
|
|
### Create Responsive Images
|
|
```bash
|
|
# Generate multiple sizes
|
|
for size in 320 640 1024 1920; do
|
|
magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg"
|
|
done
|
|
```
|
|
|
|
### Batch Image Optimization
|
|
```bash
|
|
# Convert PNG to optimized JPEG
|
|
mogrify -path ./optimized -format jpg -quality 85 -strip *.png
|
|
```
|
|
|
|
### Complex Image Pipeline
|
|
```bash
|
|
# Resize, crop, border, adjust
|
|
magick input.jpg \
|
|
-resize 1000x1000^ \
|
|
-gravity center \
|
|
-crop 1000x1000+0+0 +repage \
|
|
-bordercolor black -border 5x5 \
|
|
-brightness-contrast 5x10 \
|
|
-quality 90 \
|
|
output.jpg
|
|
```
|
|
|
|
## GIF Creation
|
|
|
|
### Video to GIF
|
|
```bash
|
|
# High quality GIF with palette
|
|
ffmpeg -i input.mp4 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
|
|
```
|
|
|
|
### Animated GIF from Images
|
|
```bash
|
|
# Create with delay
|
|
magick -delay 100 -loop 0 frame*.png animated.gif
|
|
|
|
# Optimize size
|
|
magick animated.gif -fuzz 5% -layers Optimize optimized.gif
|
|
```
|
|
|
|
## Background Removal Workflows
|
|
|
|
### Batch Background Removal
|
|
```bash
|
|
# Process all images in directory
|
|
for img in *.jpg; do
|
|
rmbg "$img" -m modnet -o "${img%.jpg}-no-bg.png"
|
|
done
|
|
```
|
|
|
|
### Product Photography
|
|
```bash
|
|
# 1. Remove background
|
|
rmbg product.jpg -m u2net-cloth -o product-no-bg.png
|
|
|
|
# 2. Resize to multiple sizes
|
|
magick product-no-bg.png -resize 800x800 product-800.png
|
|
magick product-no-bg.png -resize 400x400 product-400.png
|
|
|
|
# 3. Add white background if needed
|
|
magick product-no-bg.png -background white -flatten product-white-bg.jpg
|
|
```
|
|
|
|
## Media Analysis
|
|
|
|
### Inspect Video Properties
|
|
```bash
|
|
# Detailed JSON output
|
|
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
|
|
|
|
# Get resolution
|
|
ffprobe -v error -select_streams v:0 \
|
|
-show_entries stream=width,height \
|
|
-of csv=s=x:p=0 input.mp4
|
|
```
|
|
|
|
### Image Information
|
|
```bash
|
|
# Basic info
|
|
identify image.jpg
|
|
|
|
# Detailed format
|
|
identify -verbose image.jpg
|
|
|
|
# Custom format
|
|
identify -format "%f: %wx%h %b\n" image.jpg
|
|
```
|