ื”ืจืฆืื•ืช ื•ื™ื“ืื•: ื“ืจืš ื™ื•ื ื™ืงืก

ื”ืจืฆืื•ืช ื•ื™ื“ืื•: ื“ืจืš ื™ื•ื ื™ืงืก
ื”ืกื’ืจ ื”ื•ื ื–ืžืŸ ื ืคืœื ืœืœืžื•ื“ ืžืฉื”ื•. ืขื ื–ืืช, ื›ืคื™ ืฉืืชื” ืžื‘ื™ืŸ, ื›ื“ื™ ืฉืžื™ืฉื”ื• ื™ืœืžื“ ืžืฉื”ื•, ืžื™ืฉื”ื• ื—ื™ื™ื‘ ืœืœืžื“. ืื ื™ืฉ ืœืš ืžืฆื’ืช ืฉืืชื” ืจื•ืฆื” ืœื”ืขื ื™ืง ืœืงื”ืœ ืฉืœ ืžื™ืœื™ื•ื ื™ื ื•ืœื–ื›ื•ืช ื‘ืชื”ื™ืœื” ืขื•ืœืžื™ืช, ืื– ื”ืžืืžืจ ื”ื–ื” ื”ื•ื ื‘ืฉื‘ื™ืœืš. ื›ืืŸ ืชืžืฆืื• ื”ื•ืจืื•ืช ืฉืœื‘ ืื—ืจ ืฉืœื‘ ื›ื™ืฆื“ ืœื™ืฆื•ืจ ืกืจื˜ื•ืŸ ืžื”ืžืฆื’ืช ืฉืœื›ื.

ืื ื• ื“ื•ื—ื™ื ืืช ื”ื ืชื™ื‘ ืฉืœ ื”ืงืœื˜ืช "ื”ืขืจื•ืช ืื•ื“ื™ื•" ื‘-PowerPoint ื•ื™ื™ืฆื•ื ื”ืžืฆื’ืช ืœื•ื•ื™ื“ืื• ื›ื˜ืจื™ื•ื•ื™ืืœื™ ื•ืœื ืžืกืคืงื™ื ืขืฉื™ืจื™ืช ืžื”ื™ื›ื•ืœื•ืช ื”ื“ืจื•ืฉื•ืช ืœืกืจื˜ื•ืŸ ืžื’ื ื™ื‘ ื‘ืืžืช.

ืจืืฉื™ืช, ื‘ื•ืื• ื ื—ืœื™ื˜ ืื™ืœื• ืžืกื’ืจื•ืช ืื ื—ื ื• ืฆืจื™ื›ื™ื:

  1. ื”ืฉืงื•ืคื™ื•ืช ื‘ืคื•ืขืœ ืขื ืงืจื™ื™ื ื•ืช
  2. ื”ื—ืœืคืช ืฉืงื•ืคื™ื•ืช
  3. ืฆื™ื˜ื•ื˜ื™ื ืžืกืจื˜ื™ื ืคื•ืคื•ืœืจื™ื™ื
  4. ืžืกืคืจ ืคืจื™ื™ืžื™ื ืขื ื”ืคื ื™ื ืฉืœ ื”ืžืจืฆื” ื•ื”ื—ืชื•ืœ ื”ืื”ื•ื‘ ืขืœื™ื• (ืœื ื—ื•ื‘ื”)

ื™ืฆื™ืจืช ืžื‘ื ื” ืกืคืจื™ื•ืช

.
โ”œโ”€โ”€ clipart
โ”œโ”€โ”€ clips
โ”œโ”€โ”€ rec
โ”œโ”€โ”€ slide
โ””โ”€โ”€ sound

ืžื˜ืจืช ื”ืžื“ืจื™ื›ื™ื ืœืคื™ ืกื“ืจ ื”ืจืฉื™ืžื”: ืกืจื˜ื™ื ืžื”ื ื ืฉืœืฃ ืฆื™ื˜ื•ื˜ื™ื (ืงืœื™ืคืืจื˜), ืงื˜ืขื™ื ืžื”ืกืจื˜ื•ืŸ ื”ืขืชื™ื“ื™ ืฉืœื ื• (ืงืœื™ืคื™ื), ืกืจื˜ื•ื ื™ื ืžื”ืžืฆืœืžื” (rec), ืฉืงื•ืคื™ื•ืช ื‘ืฆื•ืจืช ืชืžื•ื ื•ืช (ืฉืงื•ืคื™ืช), ืกืื•ื ื“ (ื ืฉืžืข).

ื‘ื™ืฆื•ืข ืžืฆื’ืช ื‘ืชืžื•ื ื•ืช

ืขื‘ื•ืจ ืžืฉืชืžืฉ ื‘ืœื™ื ื•ืงืก ืืžื™ืชื™ ืขื ืขื™ื ื™ื™ื ืื“ื•ืžื•ืช, ื‘ื™ืฆื•ืข ืžืฆื’ืช ื‘ืฆื•ืจืช ืชืžื•ื ื•ืช ืื™ื ื• ืžื”ื•ื•ื” ื‘ืขื™ื•ืช. ื”ืจืฉื• ืœื™ ืจืง ืœื”ื–ื›ื™ืจ ืœื›ื ืฉื ื™ืชืŸ ืœื ืชื— ืžืกืžืš ื‘ืคื•ืจืžื˜ pdf ืœืชืžื•ื ื•ืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื”

pdftocairo -png -r 128 ../lecture.pdf

ืื ืื™ืŸ ืคืงื•ื“ื” ื›ื–ื•, ื”ืชืงืŸ ืืช ื”ื—ื‘ื™ืœื” ื‘ืขืฆืžืš poppler-tools (ื”ื•ืจืื•ืช ืขื‘ื•ืจ ืื•ื‘ื•ื ื˜ื•; ืื ื™ืฉ ืœืš Arch, ืื– ืืชื” ื™ื•ื“ืข ื”ื™ื˜ื‘ ืžื” ืœืขืฉื•ืช ื‘ืœืขื“ื™ื™).

ื›ืืŸ ื•ืขื•ื“, ืื ื™ ืžืืžื™ืŸ ืฉื”ืกืจื˜ื•ืŸ ืžื•ื›ืŸ ื‘ืคื•ืจืžื˜ HD Ready, ื›ืœื•ืžืจ 1280x720. ืžืฆื’ืช ื‘ื’ื•ื“ืœ ืื•ืคืงื™ ืฉืœ 10 ืื™ื ืฅ' ื ื•ืชื ืช ื‘ื“ื™ื•ืง ืืช ื”ื’ื•ื“ืœ ื”ื–ื” ื›ืฉื”ื™ื ืœื ื ื˜ืขื ืช (ืจืื” ืืคืฉืจื•ืช -r 128).

ื”ื›ื ืช ื”ื˜ืงืกื˜

ืื ืืชื” ืจื•ืฆื” ืœื™ืฆื•ืจ ื—ื•ืžืจ ื ื”ื“ืจ ื‘ืืžืช, ื”ื ืื•ื ืฉืœืš ืฆืจื™ืš ืœื”ื™ื›ืชื‘ ืงื•ื“ื. ื—ืฉื‘ืชื™ ื’ื ืฉืื ื™ ื™ื›ื•ืœ ืœื“ื‘ืจ ืืช ื”ื˜ืงืกื˜ ื‘ืœื™ ื”ื›ื ื”, ื‘ืžื™ื•ื—ื“ ืฉื™ืฉ ืœื™ ื ื™ืกื™ื•ืŸ ื˜ื•ื‘ ื‘ื”ืจืฆืื•ืช. ืื‘ืœ ื–ื” ื“ื‘ืจ ืื—ื“ ืœื”ื•ืคื™ืข ื‘ืœื™ื™ื‘, ื•ื“ื‘ืจ ืื—ืจ ืœื”ืงืœื™ื˜ ื•ื™ื“ืื•. ืืœ ืชืชืขืฆืœื• - ื–ืžืŸ ื”ื”ืงืœื“ื” ื™ืฉืชืœื ืคื™ ื›ืžื”.

ื”ืจืฆืื•ืช ื•ื™ื“ืื•: ื“ืจืš ื™ื•ื ื™ืงืก

ื”ื ื” ืคื•ืจืžื˜ ื”ื”ืงืœื˜ื” ืฉืœื™. ื”ืžืกืคืจ ื‘ื›ื•ืชืจืช ืฉื•ื•ื” ืœืžืกืคืจ ื”ืฉืงื•ืคื™ืช, ื”ื”ืคืจืขื•ืช ืžืกื•ืžื ื•ืช ื‘ืื“ื•ื. ื›ืœ ืขื•ืจืš ืžืชืื™ื ืœื”ื›ื ื”, ืื‘ืœ ืขื“ื™ืฃ ืœืงื—ืช ืžืขื‘ื“ ืชืžืœื™ืœื™ื ืžืŸ ื”ืžื ื™ื™ืŸ - ืœืžืฉืœ, ื‘ืœื‘ื“.

ืงื•ืœ ืžืขืœ ื”ืฉืงื•ืคื™ื•ืช

ืžื” ืื ื™ ืื’ื™ื“ - ื”ืคืขืœ ืืช ื”ืžื™ืงืจื•ืคื•ืŸ ื•ืชื›ืชื•ื‘ :)

ื”ื ื™ืกื™ื•ืŸ ืžืœืžื“ ืฉืื™ื›ื•ืช ื”ื”ืงืœื˜ื” ืืคื™ืœื• ืžื”ืžื™ืงืจื•ืคื•ืŸ ื”ื—ื™ืฆื•ื ื™ ื”ื–ื•ืœ ื‘ื™ื•ืชืจ ื˜ื•ื‘ื” ืœืื™ืŸ ืขืจื•ืš ืžืืฉืจ ืžื”ืžื™ืงืจื•ืคื•ืŸ ื”ืžื•ื‘ื ื” ืฉืœ ืžื—ืฉื‘ ื ื™ื™ื“. ืื ืืชื” ืจื•ืฆื” ืฆื™ื•ื“ ืื™ื›ื•ืชื™, ืื ื™ ืžืžืœื™ืฅ ืขืœื™ื• ื”ืžืืžืจ ื”ื–ื”.

ืœื”ืงืœื˜ื” ื”ืฉืชืžืฉืชื™ ืžืงืœื™ื˜ ืื•ื“ื™ื• - ืืคืœื™ืงืฆื™ื” ืคืฉื•ื˜ื” ืžืื•ื“ ืœื”ืงืœื˜ืช ืงื•ืœ. ืืชื” ื™ื›ื•ืœ ืœืงื—ืช ืืช ื–ื”, ืœืžืฉืœ, ื›ืืŸ:

sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorder

ื”ื“ื‘ืจ ื”ืขื™ืงืจื™ ื‘ืฉืœื‘ ื–ื” ื”ื•ื ืœืชืช ืฉื ืœืงื‘ืฆื™ื ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ื”ืฉื ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืžื•ืจื›ื‘ ืžืžืกืคืจ ื”ืฉืงื•ืคื™ืช ื•ืžืกืคืจ ื”ืฉื‘ืจ. ืฉื‘ืจื™ื ืžืžื•ืกืคืจื™ื ื‘ืžืกืคืจื™ื ืื™-ื–ื•ื’ื™ื™ื - 1, 3, 5 ื•ื›ื•'. ืœื›ืŸ, ืขื‘ื•ืจ ื”ืฉืงื•ืคื™ืช, ืฉื”ื˜ืงืกื˜ ืฉืœื” ืžื•ืฆื’ ื‘ืชืžื•ื ื”, ื™ื™ื•ื•ืฆืจื• ืฉื ื™ ืงื‘ืฆื™ื: 002-1.mp3 ะธ 002-3.mp3.

ืื ื”ืงืœื˜ืช ืืช ื›ืœ ื”ืกืจื˜ื•ื ื™ื ื‘ื‘ืช ืื—ืช ื‘ื—ื“ืจ ืฉืงื˜, ืืชื” ืœื ืฆืจื™ืš ืœืขืฉื•ืช ืื™ืชื ืฉื•ื ื“ื‘ืจ ื ื•ืกืฃ. ืื ื”ืงืœื˜ืช ื‘ื›ืžื” ืฉืœื‘ื™ื, ืขื“ื™ืฃ ืœื”ืฉื•ื•ืช ืืช ืขื•ืฆืžืช ื”ืงื•ืœ:

mp3gain -r *.mp3

ื›ืœื™ ืขื–ืจ mp3 ืจื•ื•ื— ืžืฉื•ื ืžื” ื–ื” ืœื ื ืžืฆื ื‘ืžืื’ืจื™ื ื”ืกื˜ื ื“ืจื˜ื™ื™ื, ืื‘ืœ ืืชื” ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืืช ื–ื” ื›ืืŸ:

sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain

ืื—ืจื™ ื›ืœ ื–ื”, ืืชื” ืฆืจื™ืš ืœื”ืงืœื™ื˜ ืงื•ื‘ืฅ ื ื•ืกืฃ ื‘ืฉืชื™ืงื”. ื™ืฉ ืฆื•ืจืš ืœื”ื•ืกื™ืฃ ืคืก ืงื•ืœ ืœืกืจื˜ื•ื ื™ื ืื™ืœืžื™ื: ืื ืœืกืจื˜ื•ืŸ ืื—ื“ ื™ืฉ ืคืก ืงื•ืœ ื•ืœืฉื ื™ ืื™ืŸ, ืื– ืงืฉื” ืœื”ื“ื‘ื™ืง ืืช ื”ืกืจื˜ื•ื ื™ื ื”ืืœื”. ืืคืฉืจ ืœื”ืงืœื™ื˜ ืฉืงื˜ ืžืžื™ืงืจื•ืคื•ืŸ, ืื‘ืœ ืขื“ื™ืฃ ืœื™ืฆื•ืจ ืงื•ื‘ืฅ ื‘ืขื•ืจืš ื—ื•ืฆืคื”. ืื•ืจืš ื”ืงื•ื‘ืฅ ืฆืจื™ืš ืœื”ื™ื•ืช ืฉื ื™ื™ื” ืœืคื—ื•ืช (ืืคืฉืจ ื™ื•ืชืจ), ื•ื™ืฉ ืœืชืช ืœื• ืฉื ืฉืชื™ืงื”.mp3

ื”ื›ื ืช ืกืจื˜ื•ื ื™ ื”ืคืจืขื”

ื›ืืŸ ื”ื›ืœ ืžื•ื’ื‘ืœ ืจืง ืขืœ ื™ื“ื™ ื”ื“ืžื™ื•ืŸ ืฉืœืš. ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืขื•ืจืš ื›ื“ื™ ืœืขืจื•ืš ืกืจื˜ื•ื ื™ื Avidemux. ืคืขื ื–ื” ื”ื™ื” ื‘ืžืื’ืจื™ื ื”ืกื˜ื ื“ืจื˜ื™ื™ื, ืื‘ืœ ืื– ืžืฉื•ื ืžื” ื–ื” ื ื—ืชืš. ื–ื” ืœื ื™ืขืฆื•ืจ ืื•ืชื ื•:

sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5

ื™ืฉ ื”ืจื‘ื” ื”ื•ืจืื•ืช ืœืขื‘ื•ื“ื” ืขื ื”ืขื•ืจืš ื”ื–ื” ื‘ืื™ื ื˜ืจื ื˜, ื•ื‘ืื•ืคืŸ ืขืงืจื•ื ื™ ื”ื›ืœ ืฉื ืื™ื ื˜ื•ืื™ื˜ื™ื‘ื™. ื—ืฉื•ื‘ ืœืขืžื•ื“ ื‘ืžืกืคืจ ืชื ืื™ื.

ืจืืฉื™ืช, ืจื–ื•ืœื•ืฆื™ื™ืช ื”ื•ื•ื™ื“ืื• ื—ื™ื™ื‘ืช ืœื”ืชืื™ื ืœืจื–ื•ืœื•ืฆื™ื™ืช ื”ื™ืขื“ ืฉืœ ื”ื•ื•ื™ื“ืื•. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืฉื ื™ ืžืกื ื ื™ื ื‘"ืกืจื˜ื•ืŸ ืคืœื˜": swsResize ื›ื“ื™ ืœืฉื ื•ืช ืืช ื”ืจื–ื•ืœื•ืฆื™ื” ื•"ื”ื•ืกืคืช ืฉื“ื•ืช" ื›ื“ื™ ืœื”ืคื•ืš ืกืจื˜ ืกื•ื‘ื™ื™ื˜ื™ "ื‘ืคื•ืจืžื˜ ืฆืจ" ืœืคื•ืจืžื˜ ืจื—ื‘. ื›ืœ ืฉืืจ ื”ืžืกื ื ื™ื ื”ื ืื•ืคืฆื™ื•ื ืœื™ื™ื. ืœื“ื•ื’ืžื”, ืื ืžื™ืฉื”ื• ืœื ืžื‘ื™ืŸ ืžื“ื•ืข ื”ื”ืฆื”ืจื” ืฉืœ ืžืจ ืฉืจื™ืงื•ื‘ ื ืžืฆืืช ื‘ืคืจื’ืžื ื˜ ื”ื ื“ื•ืŸ, ื‘ืืžืฆืขื•ืช ืžืกื ืŸ "ื”ื•ืกืฃ ืœื•ื’ื•", ืืชื” ื™ื›ื•ืœ ืœื›ืกื•ืช ืืช ื”ืœื•ื’ื• ืฉืœ PostgreSQL ืขืœ ื’ื‘ื™ "ืœื‘ ื”ื›ืœื‘".

ืฉื ื™ืช, ื›ืœ ื”ืคืจื’ืžื ื˜ื™ื ื—ื™ื™ื‘ื™ื ืœื”ืฉืชืžืฉ ื‘ืื•ืชื• ืงืฆื‘ ืคืจื™ื™ืžื™ื. ืื ื™ ืžืฉืชืžืฉ ื‘-25 ืคืจื™ื™ืžื™ื ืœืฉื ื™ื™ื” ื›ื™ ื”ืžืฆืœืžื” ืฉืœื™ ื•ื”ืกืจื˜ื™ื ื”ืกื•ื‘ื™ื™ื˜ื™ื™ื ื”ื™ืฉื ื™ื ื ื•ืชื ื™ื ืœื™ ื›ืœ ื›ืš ื”ืจื‘ื”. ืื ื”ืกืจื˜ ืฉืžืžื ื• ืืชื” ื—ื•ืชืš ืฆื•ืœื ื‘ืžื”ื™ืจื•ืช ืฉื•ื ื”, ื”ืฉืชืžืฉ ื‘ืžืกื ืŸ Resample Video.

ืฉืœื™ืฉื™ืช, ื›ืœ ื”ืคืจื’ืžื ื˜ื™ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื“ื—ื•ืกื™ื ืขื ืื•ืชื• codec ื•ืœืืจื•ื– ื‘ืื•ืชื ืžื›ื•ืœื•ืช. ืœื›ืŸ, ื‘ Avidemux ืขื‘ื•ืจ ื”ืคื•ืจืžื˜, ื‘ื—ืจ ื•ื™ื“ืื• โ€“ "MPEG4 AVC (x264)", ืื•ื“ื™ื• -"AAC (FAAC)", ืคื•ืจืžื˜ ืคืœื˜ - "Muxer MP4".

ืจื‘ื™ืขื™ืช, ื—ืฉื•ื‘ ืœืชืช ืฉื ื ื›ื•ืŸ ืœืกืจื˜ื•ื ื™ ื”ื—ืชืš. ืฉื ื”ืงื•ื‘ืฅ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืžื•ืจื›ื‘ ืžืžืกืคืจ ื”ืฉืงื•ืคื™ืช ื•ืžืกืคืจ ื”ืคืจื’ืžื ื˜. ืฉื‘ืจื™ื ืžืžื•ืกืคืจื™ื ื‘ืžืกืคืจื™ื ื–ื•ื’ื™ื™ื, ื”ื—ืœ ืž-2. ืœืคื™ื›ืš, ืขื‘ื•ืจ ื”ืžืกื’ืจืช ื”ื ื™ื“ื•ื ื”, ื™ืฉ ืœืงืจื•ื ืœืกืจื˜ื•ืŸ ืขื ื”ื”ืคืจืขื” 002-2.mp4

ืœืื—ืจ ืฉื”ืกืจื˜ื•ื ื™ื ืžื•ื›ื ื™ื, ืขืœื™ืš ืœื”ืขื‘ื™ืจ ืื•ืชื ืœืกืคืจื™ื™ื” ืขื ืฉื‘ืจื™ื. ื”ื’ื“ืจื•ืช avidemux ืฉื•ื ื” ืžื”ื”ื’ื“ืจื•ืช ffmpeg ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืขื ืคืจืžื˜ืจื™ื ืžืกืชื•ืจื™ื™ื tbr, tbn, tbc. ื”ื ืœื ืžืฉืคื™ืขื™ื ืขืœ ื”ื”ืฉืžืขื”, ืื‘ืœ ื”ื ืœื ืžืืคืฉืจื™ื ืœื”ื“ื‘ื™ืง ืืช ื”ืกืจื˜ื•ื ื™ื ื™ื—ื“. ืื– ื‘ื•ืื• ื ืงื•ื“ื“ ืžื—ื“ืฉ:

for f in ???-?.mp4;
do
  ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ../clips/$f
done

ืฆื™ืœื•ื ืฉื•ืžืจื™ ืžืกืš

ื’ื ื›ืืŸ ื”ื›ืœ ืคืฉื•ื˜: ืืชื” ืžืฆืœื ืขืœ ืจืงืข ืื™ื–ื• ืชื•ื›ื ื™ืช ื—ื›ืžื”, ืžื›ื ื™ืก ืืช ื”ืกืจื˜ื•ื ื™ื ืฉื ื•ืฆืจื• ืœืงื˜ืœื•ื’ rec, ื•ืžืฉื ืœื”ืขื‘ื™ืจ ืื•ืชื• ืœืกืคืจื™ื™ื” ืขื ืฉื‘ืจื™ื. ื›ืœืœื™ ื”ืฉืžื•ืช ื–ื”ื™ื ืœืืœื• ืฉืœ ืžืจื›ืื•ืช ืคืกื™ืงื•ืช, ืคืงื•ื“ืช ื”ืงื™ื“ื•ื“ ื”ื™ื ื›ื“ืœืงืžืŸ:

ffmpeg -y -i source_file -r 25 -vcodec libx264 -pix_fmt yuv420p -profile:v high -coder 1 -s 1280x720 -ar 44100 -ac 2 ../clips/xxx-x.mp4

ืื ืืชื” ืžืชื›ื ืŸ ืœื”ืชื—ื™ืœ ืืช ื”ืกืจื˜ื•ืŸ ืขื ื”ื ืื•ื ืฉืœืš, ืฉื ืœืคืจื’ืžื ื˜ ื–ื” 000-1.mp4

ื”ื›ื ืช ืžืกื’ืจื•ืช ืžืชืžื•ื ื•ืช ืกื˜ื˜ื™ื•ืช

ื–ื” ื”ื–ืžืŸ ืœืขืจื•ืš ืกืจื˜ื•ื ื™ื ืžืชืžื•ื ื•ืช ื•ืกืื•ื ื“ ืกื˜ื˜ื™ื™ื. ื–ื” ื ืขืฉื” ืขื ื”ืกืงืจื™ืคื˜ ื”ื‘ื:

#!/bin/bash

for sound in sound/*.mp3
do
  soundfile=${sound##*/}
  chunk=${soundfile%%.mp3}
  clip=${chunk}.mp4
  pic=slide/${chunk%%-?}.png

  duration=$(soxi -D ${sound} 2>/dev/null)
  echo ${sound} ${pic} ${clip} " - " ${duration}

  ffmpeg -hide_banner -y -loop 1 -i ${pic} -i ${sound} -r 25 -vcodec libx264 -tune stillimage -pix_fmt yuv420p -profile:v high -coder 1 -t ${duration} clips/${clip}
done

ืฉื™ื ืœื‘ ืฉืžืฉืš ืงื•ื‘ืฅ ื”ืฉืžืข ื ืงื‘ืข ืœืจืืฉื•ื ื” ืขืœ ื™ื“ื™ ื›ืœื™ ื”ืฉื™ืจื•ืช soxi, ื•ืœืื—ืจ ืžื›ืŸ ื ืขืจืš ื”ืกืจื˜ื•ืŸ ื‘ืื•ืจืš ื”ื ื“ืจืฉ. ื›ืœ ื”ื”ืžืœืฆื•ืช ืฉืžืฆืืชื™ ืคืฉื•ื˜ื•ืช ื™ื•ืชืจ: ื‘ืžืงื•ื ื“ื’ืœ -t ${duration} ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื“ื’ืœ -ื”ื›ื™ ืงืฆืจ... ื‘ืขืฆื ffmpeg ืงื•ื‘ืข ืืช ืื•ืจืš ื”-mp3 ื‘ืงื™ืจื•ื‘ ืžืื•ื“, ื•ื‘ืžื”ืœืš ื”ืขืจื™ื›ื”, ืื•ืจืš ืจืฆื•ืขืช ื”ืฉืžืข ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื•ื ื” ืžืื•ื“ (ื‘ืฉื ื™ื™ื” ืื—ืช ืื• ืฉืชื™ื™ื) ืžืื•ืจืš ืจืฆื•ืขืช ื”ื•ื•ื™ื“ืื•. ื–ื” ืœื ืžืฉื ื” ืื ื”ืกืจื˜ื•ืŸ ื›ื•ืœื• ืžื•ืจื›ื‘ ืžืคืจื™ื™ื ื‘ื•ื“ื“, ืื‘ืœ ื›ืฉืืชื” ืžื“ื‘ื™ืง ืกืจื˜ื•ืŸ ื›ื–ื” ืขื ื”ืคืจืขื•ืช ื‘ื’ื‘ื•ืœ, ืžืชืจื—ืฉื™ื ืืคืงื˜ื™ื ืฉืœ ื’ืžื’ื•ื ืœื ื ืขื™ืžื™ื ื‘ื™ื•ืชืจ.

ื“ืจืš ื ื•ืกืคืช ืœืงื‘ื•ืข ืืช ืžืฉืš ื”ื–ืžืŸ ืฉืœ ืงื•ื‘ืฅ mp3 ื”ื™ื ืœื”ืฉืชืžืฉ mp3 info. ื”ื™ื ื’ื ืขื•ืฉื” ื˜ืขื•ื™ื•ืช, ื•ืœืคืขืžื™ื ffmpeg ื ื•ืชืŸ ื™ื•ืชืจ ืž mp3 info, ืœืคืขืžื™ื ื–ื” ื”ืคื•ืš, ืœืคืขืžื™ื ืฉื ื™ื”ื ืžืฉืงืจื™ื - ืœื ืฉืžืชื™ ืœื‘ ืœืฉื•ื ื“ืคื•ืก. ื•ื”ื ื” soxi ืขื•ื‘ื“ ื ื›ื•ืŸ.

ื›ื“ื™ ืœื”ืชืงื™ืŸ ื›ืœื™ ืฉื™ืžื•ืฉื™ ื–ื”, ืขืฉื” ื–ืืช:

sudo apt-get install sox libsox-fmt-mp3

ื‘ื™ืฆื•ืข ืžืขื‘ืจื™ื ื‘ื™ืŸ ืฉืงื•ืคื™ื•ืช

ืžืขื‘ืจ ื”ื•ื ืกืจื˜ื•ืŸ ืงืฆืจ ืฉื‘ื• ืฉืงื•ืคื™ืช ืื—ืช ื”ื•ืคื›ืช ืœืื—ืจืช. ื›ื“ื™ ืœื™ืฆื•ืจ ืกืจื˜ื•ื ื™ื ื›ืืœื”, ืื ื• ืžืฆืœืžื™ื ืฉืงื•ืคื™ื•ืช ื‘ื–ื•ื’ื•ืช ื•ืžืฉืชืžืฉื™ื ImageMagick ืœื”ืคื•ืš ืื—ื“ ืœืฉื ื™:

#!/bin/bash

BUFFER=$(mktemp -d)

for pic in slide/*.png
do
  if [[ ${prevpic} != "" ]]
  then
    clip=${pic##*/}
    clip=${clip/.png/-0.mp4}
    #
    # ะณะตะฝะตั€ะธั€ัƒะตะผ ะบะฐั€ั‚ะธะฝะบะธ
    #
    ./fade.pl ${prevpic} ${BUFFER} 1280 720 5 direct 0
    ./fade.pl ${pic} ${BUFFER} 1280 720 5 reverse 12
    #
    # ะทะฐะบะพะฝั‡ะธะปะธ ะณะตะฝะตั€ะธั€ะพะฒะฐั‚ัŒ ะบะฐั€ั‚ะธะฝะบะธ
    #
    ffmpeg -y -hide_banner -i "${BUFFER}/%03d.png" -i sound/silence.mp3 -r 25 -y -acodec aac -vcodec libx264 -pix_fmt yuv420p -profile:v high -coder 1 -shortest clips/${clip}
    rm -f ${BUFFER}/*
  fi
  prevpic=${pic}
done

rmdir ${BUFFER}

ืžืฉื•ื ืžื” ืจืฆื™ืชื™ ืฉื”ืฉืงื•ืคื™ืช ืชื”ื™ื” ืžืคื•ื–ืจืช ื‘ื ืงื•ื“ื•ืช, ื•ืื– ื™ื•ืจื›ื‘ ื”ืฉืงืฃ ื”ื‘ื ืžื”ื ืงื•ื“ื•ืช, ื•ืœืฉื ื›ืš ื›ืชื‘ืชื™ ืชืกืจื™ื˜ ื‘ืฉื fade.pl ืœืื—ืจ ImageMagick, ืžืฉืชืžืฉ ืœื™ื ื•ืงืก ืืžื™ืชื™ ื™ืฆื•ืจ ื›ืœ ืืคืงื˜ ืžื™ื•ื—ื“, ืื‘ืœ ืื ืžื™ืฉื”ื• ืื•ื”ื‘ ืืช ื”ืจืขื™ื•ืŸ ืฉืœื™ ืขื ืคื™ื–ื•ืจ, ื”ื ื” ื”ืกืงืจื™ืคื˜:

#!/usr/bin/perl

use strict;
use warnings;
use locale;
use utf8;
use open qw(:std :utf8);
use Encode qw(decode);
use I18N::Langinfo qw(langinfo CODESET);

my $codeset = langinfo(CODESET);
@ARGV = map { decode $codeset, $_ } @ARGV;

my ($source, $target, $width, $height, $pixsize, $rev, $file_no) = @ARGV;

my @rects;
$rects[$_] = "0123456789AB" for 0..$width*$height/$pixsize/$pixsize/12 - 1;

for my $i (0..11) {
  substr($_,int(rand(12-$i)),1) = "" for (@rects);
  my $s = $source;
  $s =~ s#^.*/##;
  open(PICTURE,"| convert - -transparent white PNG:- | convert "$source" - -composite "$target/".substr("00".($file_no+$i),-3).".png"");
  printf PICTURE ("P3n%d %dn255n",$width,$height);
  for my $row (1..$height/$pixsize/3) {
    for my $j (0..2) {
      my $l = "";
      for my $col (1..$width/$pixsize/4) {
        for my $k (0..3) {
          $l .= (index($rects[($row-1)*$width/$pixsize/4+$col-1],sprintf("%1X",$j*4+$k))==-1 xor $rev eq "reverse") ? "0 0 0n" : "255 255 255n" for (1..$pixsize);
        }
      }
      print PICTURE ($l) for (1..$pixsize);
    }
  }
  close(PICTURE);
}

ืื ื—ื ื• ืžืขืœื™ื ืืช ื”ืกืจื˜ื•ืŸ ื”ืžื•ื’ืžืจ

ืขื›ืฉื™ื• ื™ืฉ ืœื ื• ืืช ื›ืœ ื”ืฉื‘ืจื™ื. ื›ื ืกื• ืœืงื˜ืœื•ื’ ืงืœื™ืคื™ื ื•ืœื”ืจื›ื™ื‘ ืืช ื”ืกืจื˜ ื”ืžื•ื’ืžืจ ื‘ืืžืฆืขื•ืช ืฉืชื™ ืคืงื•ื“ื•ืช:

ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4

ืฆืคื™ื™ื” ืžื”ื ื” ืœืชืœืžื™ื“ื™ื ื”ืืกื™ืจื™ื ืฉืœืš!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”