ffmpeg tips
ffmpeg is an open source free video encoder, muxer, audio encoder
split video into 3 min equal time interval segments split00.mp4, split01.mp4, split02.mp4, split03.mp4
ffmpeg -i input.mp4 -c copy -f segment -segment_time 3:00 -reset_timestamps 1 test%02d.mp4
-reset_timestamps 1 is critical as for each segment it recalculates the time
%02d outputs 00, 01, 02, 03, etc. change to %03 for 000, 001, 002, 003, etc.
for an hour use 1:00:00 not 60:00
ffmpeg is an open source free video encoder, muxer, audio encoder
split video into 3 min equal time interval segments split00.mp4, split01.mp4, split02.mp4, split03.mp4
ffmpeg -i input.mp4 -c copy -f segment -segment_time 3:00 -reset_timestamps 1 test%02d.mp4
-reset_timestamps 1 is critical as for each segment it recalculates the time
%02d outputs 00, 01, 02, 03, etc. change to %03 for 000, 001, 002, 003, etc.
for an hour use 1:00:00 not 60:00
ffmpeg tips
Extracts audio from a video file to an mp3 -b:a 256k - set audio bitrate (default 128kbps) -ar 44100 - Set the audio frequency of the output file. 22050, 44100, 48000 Hz. -ac 2 - Set the number of audio channels. (1 mono, 2 stereo, etc.) -vn -an -sn (skip video, audio, or subtitle stream)
Extracts audio from a video file to an mp3 -b:a 256k - set audio bitrate (default 128kbps) -ar 44100 - Set the audio frequency of the output file. 22050, 44100, 48000 Hz. -ac 2 - Set the number of audio channels. (1 mono, 2 stereo, etc.) -vn -an -sn (skip video, audio, or subtitle stream)
ffmpeg -i input.mp4 -vn output.mp3
Extract a portion from video --ss (starting time at 6 mins) -t (time duration 4m30s) OR -to (time stop)
New video clip will be from 6 mins to 10min 30seconds mark and 4 mins and 30 seconds in length.
ffmpeg -i input.mp4 -ss 6:00 -t 4:30 output.mp4
ffmpeg -i input.mp4 -ss 6:00 -to 10:30 output.mp4
Extract a portion from video --ss (starting time at 6 mins) -t (time duration 4m30s) OR -to (time stop)
New video clip will be from 6 mins to 10min 30seconds mark and 4 mins and 30 seconds in length.
ffmpeg -i input.mp4 -ss 6:00 -t 4:30 output.mp4
ffmpeg -i input.mp4 -ss 6:00 -to 10:30 output.mp4
Encode a video to x265 (hevc) --crf 28 (default) 23 is better quality but bigger file size for great movies
-crf 31 is ok for a small file size
--preset medium (default) could try fast or slow but slow isn't worth the extra encoding time. Fast is about same as medium encoding time so default I believe is perfect.
-c:v hevc (encoding to x265)
-c:v copy passthru video doesn't touch original video stream
-c:a copy passthru doesn't touch original audio stream.
-c:s copy passthru copy subtitle stream.
-c copy will copy video, audio, subtitle streams as is (passthru)
from START of video or to END of video simply don't specify anything
-crf 31 is ok for a small file size
--preset medium (default) could try fast or slow but slow isn't worth the extra encoding time. Fast is about same as medium encoding time so default I believe is perfect.
-c:v hevc (encoding to x265)
-c:v copy passthru video doesn't touch original video stream
-c:a copy passthru doesn't touch original audio stream.
-c:s copy passthru copy subtitle stream.
-c copy will copy video, audio, subtitle streams as is (passthru)
from START of video or to END of video simply don't specify anything
ffmpeg -i input.mp4 -to 5:30 output.mp4
ffmpeg -i input.mp4 -ss 6:32 output.mp4
encode clip from START of movie to 5 min 30 sec mark (to indicate START don't specify -ss)
encode clip from 6 min 32 sec mark till END of video (to indicated END time don't specify -to)
ffmpeg -i input.mp4 -ss 6:32 output.mp4
encode clip from START of movie to 5 min 30 sec mark (to indicate START don't specify -ss)
encode clip from 6 min 32 sec mark till END of video (to indicated END time don't specify -to)
This section assumes ffmpeg -i input.mkv and output.mkv or mp4, etc.
-acodec libopus (prefer opus at 32kbps for talking only and 96kbps for movies and music)
-vf scale=-2:640 will downscale 1060x720 to 640p and maintain its aspect ratio
-c:v hevc -c:a copy-acodec aac (most common one)
-acodec libopus (prefer opus at 32kbps for talking only and 96kbps for movies and music)
-c:v hevc -c:a libopus -b:a 32kresolution 3840:2160, 1920:1080, 1280:720, 854 or 720:480, 640:360, 426:240 (16:9 aspect ratios) to preserve aspect ratio while downscaling resolution or upscaling resolution use -2 value
-c:v hevc -c:a aac -b:a 64k
-vf scale=-2:640 will downscale 1060x720 to 640p and maintain its aspect ratio
To concat files together make a text file with your videos putting file before them. Put # in front of them if not used. Makes modifying list easy.
# videos.txt file '01.mp4' file '02.mp4' file '03.mp4' file '04.mp4' file '05.mp4' #file '06.mp4' #file '07.mp4'
or use this command to generate the text file
# videos.txt file '01.mp4' file '02.mp4' file '03.mp4' file '04.mp4' file '05.mp4' #file '06.mp4' #file '07.mp4'
or use this command to generate the text file
for f in *.mp4; do echo "file '$f'" >> videos.txt; doneconcat without re-encoding (make sure all have same aspect ratio, resolution, video and audio codec
ffmpeg -f concat -i videos.txt -c copy output.mp4To re-encode video and audio
ffmpeg -f concat -i videos.txt -c:v hevc -c:a libopus -b:a 64k output.mp4To replace original audio track with a new one
ffmpeg -i video.mp4 -i audio.wav -map 0:v -map 1:a -c:v hevc -vf scale="-2:720" -c:a copy -ss 1:17 -to 4:16 output.mp4sets the audio track to start at 1:17 and end at 4:16.
ffmpeg -i input.mp4 -i newaudio.opus -map 0:v -map 1:a -c:v copy -c:a copy -shortest output.mp4-shortest option sets video and audio track to the same duration determined by the shortest one.
Add Title and Author metadata to an m4b audiobook.
Title is Linux Mint and Author is Evil Penguin
Title is Linux Mint and Author is Evil Penguin
ffmpeg -i LinuxMint.m4b -c copy -metadata title="Linux Mint" -metadata artist="Evil Penguin" LinuxMint1.m4badding a cover to an m4b file isn't so easy if you don't use m4b-tool so best way in linux is to use TagEditor
Max OS Tips
dark mode in Safari with SafariDarkMode.css
Dark mode in Safari make a CSS text file using the CSS code below copy/paste into TextEdit. In TextEdit choose View | Make Plain Text then save it calling it like SafariDarkMode.css and save it to your documents folder.
color (text is silver), background-color and background are night black. Notice that background doesn't have !important tag otherwise it'll block out many elements. a:link is purple, a:visited is red a:hover is pink. Change the hex colors as you wish.
* { color: #BCC6CC !important; background-color: #0C090A !important; background: #0C090A; }
a:link { color: #7A5DC7 !important; }
a:visited { color: #CA226B !important; }
a:hover { color: #C48793 !important; }
img { filter: grayscale(40%); }
dark mode in Safari with SafariDarkMode.css
Dark mode in Safari make a CSS text file using the CSS code below copy/paste into TextEdit. In TextEdit choose View | Make Plain Text then save it calling it like SafariDarkMode.css and save it to your documents folder.
color (text is silver), background-color and background are night black. Notice that background doesn't have !important tag otherwise it'll block out many elements. a:link is purple, a:visited is red a:hover is pink. Change the hex colors as you wish.
* { color: #BCC6CC !important; background-color: #0C090A !important; background: #0C090A; }
a:link { color: #7A5DC7 !important; }
a:visited { color: #CA226B !important; }
a:hover { color: #C48793 !important; }
img { filter: grayscale(40%); }
Mac OS
Screen Capturing
cmd + shift + 3 = captures whole screen
cmd + shift + 4 = captures selected region
cmd + shift + 4 + spacebar = captures window with camera icon
Use Preview as an image and PDF viewer. Basic image editing functions are Tools - Crop, Adjust Size to make the dimensions smaller, Export as jpg to reduce file size.
Screen Capturing
cmd + shift + 3 = captures whole screen
cmd + shift + 4 = captures selected region
cmd + shift + 4 + spacebar = captures window with camera icon
Use Preview as an image and PDF viewer. Basic image editing functions are Tools - Crop, Adjust Size to make the dimensions smaller, Export as jpg to reduce file size.
56Kbps = 7KB/s (dial up 1995, DSL 1997) 64Kbps = 8KB/s (ISDN) 128Kbps = 16KB/s (ISDN) 512Kbps = 64KB/s 1024Kbps = 128KB/s 3G (1,000Kbps) = 125KB/s 1.5Mbps = 188KB/s (some DSL & T1) 6Mbps = 800KB/s (cable and DSL) 10Mbps = 1.3MB/s (cable) 25Mbps = 3MB/s (cable) 50Mbps = 6MB/s (cable) 100Mbps = 12MB/s (fiber, 10/100Mbps ethernet) 1000Mbps = 120MB/s (if all switches, routers are gigabit ethernet)
USB 2.0 = 57MB/s WiFi 802.11b = 1.4MB/s WiFi 802.11g = 6.8MB/s WiFi 802.11n = 31MB/s
USB 2.0 = 57MB/s WiFi 802.11b = 1.4MB/s WiFi 802.11g = 6.8MB/s WiFi 802.11n = 31MB/s