scp s01e01.mkv myserver:/tmp/ && \ ssh myserver "ffmpeg -i /tmp/s01e01.mkv -c:v libvpx-vp9 -crf 30 output.webm && mv output.webm /var/www/"
(to a server or cloud) Local to remote server (scp/rsync) scp s01e01.mkv user@your-server:/path/to/uploads/ Or upload to cloud storage (AWS S3 example) aws s3 cp s01e01.mkv s3://my-bucket/videos/s01e01.mkv 2. Encode with libvpx (VP8 or VP9) VP8 (older, wider compatibility) ffmpeg -i s01e01.mkv -c:v libvpx -b:v 1M -c:a libvorbis output_vp8.webm VP9 (better compression, modern) ffmpeg -i s01e01.mkv -c:v libvpx-vp9 -b:v 1M -c:a libopus output_vp9.webm 3. Recommended encoding settings for quality/size ffmpeg -i s01e01.mkv \ -c:v libvpx-vp9 \ -b:v 1M \ -crf 30 \ -row-mt 1 \ -tile-columns 2 \ -frame-parallel 1 \ -c:a libopus \ -b:a 96k \ output_final.webm | Parameter | Purpose | |-----------|---------| | -crf 30 | Quality (lower=better, 30 is good for web) | | -row-mt 1 | Multithreading | | -tile-columns 2 | Parallel encoding | | -b:a 96k | Audio bitrate | 4. Two-pass encoding (best quality) # Pass 1 ffmpeg -i s01e01.mkv -c:v libvpx-vp9 -b:v 1M -pass 1 -f webm /dev/null Pass 2 ffmpeg -i s01e01.mkv -c:v libvpx-vp9 -b:v 1M -pass 2 -c:a libopus output.webm 5. After encoding – upload result (if needed) scp output_final.webm user@your-server:/var/www/videos/ Quick summary for a single command If you just want to upload & encode in one go (remote server): upload s01e01 libvpx