useful commands¶
Batch convert PNG to JPG:
magick mogrify -format jpg *.png
Compress single JPG:
magick convert [original image] -resize '1024>' -quality 50 [converted image name]
Batch compress JPG:
magick mogrify -resize '1024>' -quality 50 *.jpg
Convert and compress MOV to MP4 and remove audio:
ffmpeg -i input.mov -q:v 0 -vcodec libx264 -b:v 500k -vf scale=-2:500 -an output.mp4
Compress, scale MP4 and remove audio:
ffmpeg -i input.mp4 -vcodec libx264 -b:v 500k -vf scale=-2:500 -an output.mp4
Trim video from timemarker (11 seconds) to timemarker (20 seconds):
ffmpeg -ss 11s -accurate_seek -i input.mp4 -t 20s output.mp4
Rotate video 90 degrees counter-clockwise (use transpose=1 for clockwise):
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4
Speed up video 24x:
ffmpeg -i input.mp4 -filter:v "setpts=PTS/24" output.mp4
Add text to a video:
ffmpeg -i input.mp4 -vf "drawtext=text=Hello World!:font=Arial:fontsize=50:fontcolor=white:x=20:y=10" -codec:a copy output.mp4
Add video to markdown (using obsidian):
<video controls>
<source src="../assets/video.mp4" type="video/mp4">
</video>
(not sure why it doesn’t play in obsidian though)
iPhones don’t like mp3 audio in an MP4 container! To maintain compatibility for iPhone audio, use AAC:
ffmpeg -i input.mov -vcodec libx264 -crf 40 -preset veryslow -vf scale=-2:720 -c:a aac -q:a 1 -ac 1 output-with-iphone-audio.mp4
Firefox doesn’t like yuv444 or yuv422 chroma subsampling. So if the video doesn’t work on firefox, try reencoding it to yuv420:
ffmpeg -i input.mov -q:v 0 -vcodec libx264 -b:v 500k -vf format=yuv420p output.mp4
Linux¶
Check sizes of files:
ncdu
(install using sudo apt install ncdu
)
Git¶
git status
-> get git status of the files
git add .
-> add all files to stage
git commit -m "commit comment"
-> commit the staged files with a comment
git push
-> push committed files to the repo
git rm -r <file/path>
-> stage file (or complete folder) to be removed from repo (next do a commit and push to effectuate)
git restore --staged <file/path>
-> undo git add. So remove file from staged list.
.gitignore
is a file that allows you to define files and folders to NOT be added to your git repo.
If you do a git status
you should not see the file listed in gitignore (that means the gitignore works).
If the files have already been commited once, they are already tracked and thus skipping .gitignore.