GeekTips
109 subscribers
586 photos
3 videos
77 files
231 links
Linux Mint, video encoding, ffmpeg, geek tips, regex, pdf manipulation, substitcher, mpv config
Download Telegram
split video file (mp4 or mkv) into fixed intervals for each file video001.mkv, video002.mkv, etc.

splits into multiple files each 2 minutes
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 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)
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
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
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)
This section assumes ffmpeg -i input.mkv and output.mkv or mp4, etc.

-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 32k
-c:v hevc -c:a aac -b:a 64k

resolution 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
-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

for f in *.mp4; do echo "file '$f'" >> videos.txt; done
concat without re-encoding (make sure all have same aspect ratio, resolution, video and audio codec

ffmpeg -f concat -i videos.txt -c copy output.mp4
To re-encode video and audio

ffmpeg -f concat -i videos.txt -c:v hevc -c:a libopus -b:a 64k output.mp4
To 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.mp4

sets 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.
To add an additional audio track (-map 0 chooses all streams rather than -map 0:v)

ffmpeg -i video.mkv -i audio.mp3 -map 0 -map 1:a -c:v copy -c:a copy -shortest output.mkv
To merge two audio tracks into one

ffmpeg -i video.mkv -i audio.m4a -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -ac 2 -shortest output.mp4
Add Title and Author metadata to an m4b audiobook.

Title is Linux Mint and Author is Evil Penguin

ffmpeg -i LinuxMint.m4b -c copy -metadata title="Linux Mint" -metadata artist="Evil Penguin" LinuxMint1.m4b

adding 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%); }
CMD + , (comma) to quickly bring up advance settings in Safari to toggle dark mode
Reduce files of PDFs by a huge margin while maintaining acceptable image quality

Create your own filters using Color Sync Utility
open PDF - File | Export
select your custom filter
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.
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