2025-01-06

ffmpeg

 

jpg -> mp4

ffmpeg -framerate 1 -pattern_type glob -i '*.jpg' -c:v libx264 video.mp4


ffmpeg -framerate 0.3 -pattern_type glob -i '*.jpg' -vf "scale=-1:3072,pad=4096:ih:(ow-iw)/2" -c:v libx264 video.mp4


video -> png

ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png


change framerate

ffmpeg -i in.mp4 -filter:v "setpts=PTS*8" -an -vcodec copy -r 30 out.mp4

ffmpeg -i  in.mp4 -filter:v "setpts=0.1*PTS" -an  -r 60 out.mp4

ffmpeg -i  in.mp4 -vf "select='not(mod(n\,60))',setpts=N/FRAME_RATE/TB" -an -r 60  out.mp4

ffmpeg -i  in.mp4 -vf framestep=90,setpts=N/FRAME_RATE/TB -an -r 60 out.mp4

ffmpeg -i in.mp4 -c copy -f h264 - | ffmpeg -r 120 -i - -c copy out.mp4



ffmpeg -i i.mp4 -i 1.jpg -filter_complex "[1:v] fade=out:125:25:alpha=1 [intro]; [0:v][intro] overlay [v]" -map "[v]" -map 0:a -acodec copy  o5.mp4


ffmpeg -y -i i.mp4 -i 1.jpg -filter_complex "[1:v] fade=out [intro]; [0:v][intro] overlay=x=100:y=800 [v]" -map "[v]" -map 0:a -acodec copy  o9.mp4


ffmpeg -i i.mp4 -i 1.jpg -i a.svg -filter_complex "[0:v][1:v]overlay=100:600[v0];  [v0][2:v]overlay=W-200:30" -c:a copy -y o6.mp4


ffmpeg -i i.mp4 -i 1.jpg -i a.svg -filter_complex "[0:v][1:v]overlay=100:H-300[VV];  [VV][2:v]overlay=W-200:30" -c:a copy -y o6.mp4


ffmpeg -i i.mp4 -i s.svg -i l.svg -filter_complex "[0:v][1:v]overlay=100:H-150:enable='between(t,3,4)' [VV];  [VV][2:v]overlay=W-200:30:enable='between(t,1,2)'" -c:a copy -y o6.mp4



ffmpeg -ss $a -to $b -i $I -i $Logo -i ba0.svg -i ba2.svg -filter_complex

  "[0:v][1:v]overlay=W-160:30 [VV]; [VV][2:v]overlay=100:H-150 [VVV]; [VVV][3:v]overlay=100:H-150:enable='between(t,$T2,30)'" -y $OPT $N

ffmpeg cam

 

ffmpeg /dev/video0


ffmpeg -f v4l2 -list_formats all -i /dev/video0

ffplay -f v4l2 -list_formats all /dev/video0


arecord -l

cat /proc/asound/cards

hw:1,0

lsusb -v | grep 'tSamFreq'


arecord -f S16_LE -c 2  -D "hw:1,0" a-001

ffplay -f alsa -i hw:1,0


ffplay -f v4l2 -video_size 1920x1080 -framerate 30 /dev/video0

ffplay -f v4l2 -video_size 1280x720 -framerate 30 /dev/video0

ffplay -f v4l2 -video_size 1366x768 -framerate 30 /dev/video0


ffmpeg -f v4l2 -framerate 30 -video_size 1920x1080 -c:v mjpeg -i /dev/video0 -c:v copy output.mov


ffmpeg -f v4l2 -framerate 30 -c:v mjpeg -i /dev/video0 -c:v copy output.mkv

ffmpeg -f v4l2 -framerate 30 -c:v mjpeg -i /dev/video0 -f alsa -i hw:1,0 -c:v copy -c:a copy  output.mkv

ffmpeg -f v4l2 -framerate 30 -c:v mjpeg -i /dev/video0 -f alsa -i hw:1,0 -c copy  output.mkv

ffmpeg -f v4l2 -framerate 30 -c:v mjpeg -i /dev/video0 -f alsa -i hw:1,0 -c copy -f rawvideo  - | ffplay -

ffmpeg -f v4l2 -framerate 30 -c:v mjpeg -i /dev/video0 -f alsa -i hw:1,0 -c copy -f avi  - | ffplay -

ffplay -f v4l2 -framerate 30   /dev/video0 

vlc v4l2:///dev/video0 --input-slave=alsa://hw1,0 --alsa-samplerate=96000




bluetooth

 

/usr/local/etc/init.d/bluez status


pulseaudio

bluetoothctl power on
bluetoothctl agent on

bluetoothctl
  scan on
  scan off

bluetoothctl devices
bluetoothctl info

bluetoothctl remove xx:xx:xx:xx:xx:xx
bluetoothctl trust      xx:xx:xx:xx:xx:xx
bluetoothctl pair        xx:xx:xx:xx:xx:xx
bluetoothctl connect xx:xx:xx:xx:xx:xx
bluetoothctl info        xx:xx:xx:xx:xx:xx

pactl list sinks | grep Name:
pactl set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx.a2dp_sink

pactl -- set-sink-volume 1 -10%
pactl -- set-sink-volume 1 +10%

pactl -- set-sink-volume 1 10%
pactl -- set-sink-volume 1 50%

2023-01-10

jdk ssl/tls

1.7 default tls1


-Dhttps.protocols=SSLv3,TLSv1,TLSv1.1,TLSv1.2

-Djavax.net.debug=ssl


1.8 default tls1.2

mobile browser request retry - idempotent requests

https://groups.google.com/a/chromium.org/g/chromium-dev/c/urswDsm6Pe0


https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/


https://answers.sap.com/questions/13359226/preventing-http-retry-requests-eg-via-approuter.html


zip filename encode (non-UTF8)

LC_CTYPE=zh_TW.big5 7z x file.zip


LC_CTYPE=zh_TW.big5 busybox unzip file.zip


TODO: filename in big5



ls -i 


find . -inum 12321475 -exec mv {} new-filename \;


find . -inum 12321475 -print0 | xargs -0 mv -t new-filename


wmctrl / xdotool - XWindow move resize

 

wmctrl


wmctrl -d


wmctrl -l


wmctrl -i -a <win id>


wmctrl -i -r <win id> 0,x,y,w,h




wmctrl -lx

0x00a00002  1 aterm.XTerm           box Terminal

0x01000002  1 google-chrome.Google-chrome  box WeChat/Weixin for Web - Google Chrome

0x01000005  1 google-chrome.Google-chrome  box about:blank - Google Chrome

0x01000006  1 google-chrome.Google-chrome  box QR-slot.png (500×500) - Google Chrome



google

wmctrl -i -r 0x01000005 -e 0,150,40,1000,800


wechat

wmctrl -i -r 0x01000002 -e 0,0,140,900,800


xdotool


xdotool search wechat

xdotool search ""