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
epub in dark mode on eyephone using Kybook 3
Splitting video (mp4 or mkv) into fixed intervals as chapter markers into a single mkv file.  Drag mp4 or mkv video into MKVToolNix (open source Linux, Mac, Win) into the Multiplexer | Output and choose Chapters in fixed intervals | Start Multiplexing

Chapter <NUM:2> will give Chapter 01, Chapter 02, etc. or change to <NUM:3> for Chapter 001, Chapter 002, etc. 00:15:00 or 15:00 or 15m will split audio into chapters every 15 minutes.
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