๊ฒฉ๋ฆฌ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์ฐ๊ธฐ์ ์ข์ ์๊ฐ์
๋๋ค. ๊ทธ๋ฌ๋ ์์๋ค์ํผ ๋๊ตฐ๊ฐ๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋๊ตฐ๊ฐ๊ฐ ๊ฐ๋ฅด์ณ์ผ ํฉ๋๋ค. ์๋ฐฑ๋ง ๋ช
์ ์ฒญ์ค์๊ฒ ํ๋ ์ ํ
์ด์
์ ์ ๊ณตํ๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ๋ช
์ฑ์ ์ป๊ณ ์ถ๋ค๋ฉด ์ด ๊ธฐ์ฌ๊ฐ ์ ํฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ๋ ์ ํ
์ด์
์์ ๋น๋์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋จ๊ณ๋ณ ์ง์นจ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ PowerPoint์์ "์ค๋์ค ๋๊ธ"์ ๋ น์ํ๊ณ ํ๋ ์ ํ ์ด์ ์ ๋น๋์ค๋ก ๋ด๋ณด๋ด๋ ๊ณผ์ ์ ์ฌ์ํ ์ผ๋ก ๋ฌด์ํ๋ฉฐ ์ ๋ง ๋ฉ์ง ๋น๋์ค์ ํ์ํ ๊ธฐ๋ฅ์ XNUMX๋ถ์ XNUMX๋ ์ ๊ณตํ์ง ์์ต๋๋ค.
๋จผ์ ์ด๋ค ํ๋ ์์ด ํ์ํ์ง ๊ฒฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
- ์์ฑ ํด์ค์ด ํฌํจ๋ ์ค์ ์ฌ๋ผ์ด๋
- ์ฌ๋ผ์ด๋ ๋ณ๊ฒฝ
- ์ธ๊ธฐ ์ํ์ ์ธ์ฉ๋ฌธ
- ๊ฐ์ฌ์ ์ผ๊ตด๊ณผ ๊ทธ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ๊ณ ์์ด๊ฐ ์๋ ์ฌ๋ฌ ํ๋ ์(์ ํ ์ฌํญ)
๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
.
โโโ clipart
โโโ clips
โโโ rec
โโโ slide
โโโ sound
๋ชฉ๋ก ์์์ ๋ฐ๋ฅธ ๋๋ ํ ๋ฆฌ์ ๋ชฉ์ : ์ธ์ฉํ ์ํ(ํด๋ฆฝ ์ํธ), ํฅํ ๋น๋์ค ์กฐ๊ฐ(ํด๋ฆฝ), ์นด๋ฉ๋ผ์ ๋น๋์ค(rec), ์ฌ์ง ํํ์ ์ฌ๋ผ์ด๋(์ฌ๋ผ์ด๋), ์ฌ์ด๋ (์๋ฆฌ).
์ฌ์ง์ผ๋ก ํ๋ ์ ํ ์ด์ ๋ง๋ค๊ธฐ
์ค์ ์ ๋ชฉ ํ์์ด ์๋ Linux ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๊ทธ๋ฆผ ํ์์ผ๋ก ํ๋ ์ ํ ์ด์ ์ ๋ง๋๋ ๋ฐ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ PDF ํ์์ ๋ฌธ์๋ฅผ ์ด๋ฏธ์ง๋ก ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์๋ค๋ ์ ์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
pdftocairo -png -r 128 ../lecture.pdf
ํด๋น ๋ช ๋ น์ด ์์ผ๋ฉด ํจํค์ง๋ฅผ ์ง์ ์ค์นํ์ญ์์ค. poppler-utils (Ubuntu์ ๋ํ ์ง์นจ; Arch๊ฐ ์๋ค๋ฉด ๋ ์์ด ๋ฌด์์ ํด์ผํ ์ง ์์ฃผ ์ ์์ค ๊ฒ์ ๋๋ค.)
์ฌ๊ธฐ์ ๊ธฐ์ ๋๋ ๋น๋์ค๊ฐ HD Ready ํ์, ์ฆ 1280x720์ผ๋ก ์ค๋น๋์๋ค๊ณ ๋ฏฟ์ต๋๋ค. ๊ฐ๋ก ํฌ๊ธฐ๊ฐ 10์ธ์น์ธ ํ๋ฆฌ์ ํ ์ด์ ์ ์ธ๋ก๋ ์ ์ ํํ ์ด ํฌ๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค(-r 128 ๋งค๊ฐ๋ณ์ ์ฐธ์กฐ).
ํ ์คํธ ์ค๋นํ๊ธฐ
์ ๋ง ํ๋ฅญํ ์๋ฃ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ฐ์ค๋ฌธ์ ๋จผ์ ์์ฑํด์ผ ํฉ๋๋ค. ํนํ ๊ฐ์ ๊ฒฝํ์ด ๋ง์์ ์ค๋น ์์ด๋ ๋ณธ๋ฌธ์ ๋งํ ์ ์๊ฒ ๋ค๋ ์๊ฐ๋ ๋ค์์ต๋๋ค. ํ์ง๋ง ๋ผ์ด๋ธ๋ก ๊ณต์ฐํ๋ ๊ฒ๊ณผ ์์์ ๋ นํํ๋ ๊ฒ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค. ๊ฒ์ผ๋ฅด์ง ๋ง์ญ์์ค. ํ์ดํ์ ์์๋ ์๊ฐ์ ์ฌ๋ฌ ๋ฒ ๋ณด์์ ๋ฐ์ ๊ฒ์ ๋๋ค.
๋ด ๋
น์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ๋ชฉ์ ์ซ์๋ ์ฌ๋ผ์ด๋ ๋ฒํธ์ ๋์ผํ๋ฉฐ ์ค๋จ๋ ๋ถ๋ถ์ ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค. ๋ชจ๋ ํธ์ง๊ธฐ๋ ์ค๋น์ ์ ํฉํ์ง๋ง ๋ณธ๊ฒฉ์ ์ธ ์๋ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. OnlyOffice.
์ฌ๋ผ์ด๋์ ์์ฑ
๋ญ๋ผ๊ณ ๋งํ ์ ์๋์? ๋ง์ดํฌ๋ฅผ ์ผ๊ณ ๊ธ์ ์จ๋ณด์ธ์ :)
๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๊ฐ์ฅ ์ ๋ ดํ ์ธ๋ถ ๋ง์ดํฌ๋ฅผ ์ฌ์ฉํด๋ ๋
น์ ํ์ง์ด ๋
ธํธ๋ถ์ ๋ด์ฅ๋ ๋ง์ดํฌ๋ณด๋ค ๋น๊ตํ ์ ์์ ์ ๋๋ก ๋ฐ์ด๋ฉ๋๋ค. ์ข์ ์ฅ๋น๋ฅผ ์ํ์ ๋ค๋ฉด ์ถ์ฒ๋๋ ค์
๋ น์์ ์ํด ๋ด๊ฐ ์ฌ์ฉํ ์ค๋์ค ๋ ์ฝ๋ โ ์ฌ์ด๋ ๋ น์์ ์ํ ๋งค์ฐ ๊ฐ๋จํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
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
์ ํธ๋ฆฌํฐ mp3gain ์ด๋ค ์ด์ ๋ก ํ์ค ์ ์ฅ์์๋ ์์ง๋ง ์ฌ๊ธฐ์์ ์ป์ ์ ์์ต๋๋ค.
sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain
๊ฒฐ๊ตญ์๋ ๋ฌด์์ผ๋ก ๋ค๋ฅธ ํ์ผ์ ๋ น์ํด์ผ ํฉ๋๋ค. ๋ฌด์ ๋น๋์ค์๋ ์ฌ์ด๋ ํธ๋์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ํ ๋น๋์ค์๋ ์ฌ์ด๋ ํธ๋์ด ์๊ณ ๋ค๋ฅธ ๋น๋์ค์๋ ์ฌ์ด๋ ํธ๋์ด ์์ผ๋ฉด ์ด๋ฌํ ๋น๋์ค๋ฅผ ์๋ก ์ฐ๊ฒฐํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๋ฌด์์ ๋ง์ดํฌ์์ ๋ น์ํ ์ ์์ง๋ง ํธ์ง๊ธฐ์์ ํ์ผ์ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค ๋๋ด. ํ์ผ ๊ธธ์ด๋ ์ต์ XNUMX์ด(๋ ๊ธธ์ด๋ ๊ฐ๋ฅ)์ฌ์ผ ํ๋ฉฐ ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค. ์นจ๋ฌต.mp3
์ค๋จ ๋์์ ์ค๋น ์ค
์ฌ๊ธฐ์ ๋ชจ๋ ๊ฒ์ ๋น์ ์ ์์๋ ฅ์ ์ํด์๋ง ์ ํ๋ฉ๋๋ค. ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋์ค๋ฅผ ํธ์งํ ์ ์์ต๋๋ค Avidemux. ์๋ ์๋ ํ์ค ์ ์ฅ์์ ์์์ง๋ง ์ด๋ค ์ด์ ๋ก ์ญ์ ๋์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๋ฅผ ๋ง์ ์๋ ์์ต๋๋ค:
sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5
์ธํฐ๋ท์๋ ์ด ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ง์ ์ง์นจ์ด ์์ผ๋ฉฐ ์์น์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ์ง๊ด์ ์ ๋๋ค. ์ฌ๋ฌ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ฒซ์งธ, ๋น๋์ค ํด์๋๋ ๋์ ๋น๋์ค ํด์๋์ ์ผ์นํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด "์ถ๋ ฅ ๋น๋์ค"์์ ๋ ๊ฐ์ ํํฐ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. swsResize๋ฅผ ์ฌ์ฉํ์ฌ ํด์๋๋ฅผ ๋ณ๊ฒฝํ๊ณ "ํ๋ ์ถ๊ฐ"๋ฅผ ์ฌ์ฉํ์ฌ ์๋ จ์ "์ข์ ํ์" ์ํ๋ฅผ ์์ด๋ ํ์์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ํํฐ๋ ์ ํ ์ฌํญ์ ๋๋ค. ์๋ฅผ ๋ค์ด Sharikov ์จ์ ๋ฐ์ธ์ด ๋ ผ์ ์ค์ธ ๋ถ๋ถ์ ์ ์๋์ง ์ดํดํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ "๋ก๊ณ ์ถ๊ฐ" ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด "Dog Heart" ์์ PostgreSQL ๋ก๊ณ ๋ฅผ ์ค๋ฒ๋ ์ดํ ์ ์์ต๋๋ค.
๋์งธ, ๋ชจ๋ ์กฐ๊ฐ์ ๋์ผํ ํ๋ ์ ์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋๋ ์ด๋น 25ํ๋ ์์ ์ฌ์ฉํ๋๋ฐ, ๋ด ์นด๋ฉ๋ผ์ ์ ์๋ จ ์ํ๊ฐ ๊ทธ ์ ๋์ ํ๋ ์์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ผ๋ด๋ ค๋ ๋์์์ด ๋ค๋ฅธ ์๋๋ก ์ดฌ์๋ ๊ฒฝ์ฐ ๋น๋์ค ๋ฆฌ์ํ ํํฐ๋ฅผ ์ฌ์ฉํ์ธ์.
์ ์งธ, ๋ชจ๋ ์กฐ๊ฐ์ ๋์ผํ ์ฝ๋ฑ์ผ๋ก ์์ถ๋๊ณ ๋์ผํ ์ปจํ ์ด๋์ ํจํค์ง๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก Avidemux ํ์์ผ๋ก ๋น๋์ค๋ฅผ ์ ํํ์ญ์์ค - "MPEG4 AVC(x264)", ์ค๋์ค - "AAC (FAAC)", ์ถ๋ ฅ ํ์ - "MP4 ๋จน์ค".
๋ท์งธ, ์ปทํ ๋ ์์์ ์ด๋ฆ์ ์ ํํ๊ฒ ์ง์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ฌ๋ผ์ด๋ ๋ฒํธ์ ์กฐ๊ฐ ๋ฒํธ๋ก ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค. ์กฐ๊ฐ์ 2๋ถํฐ ์์ํ์ฌ ์ง์๋ก ๋ฒํธ๊ฐ ์ง์ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ ผ์ ์ค์ธ ํ๋ ์์ ๊ฒฝ์ฐ ์ค๋จ์ด ์๋ ๋น๋์ค๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค. 002-2.mp4
๋น๋์ค๊ฐ ์ค๋น๋๋ฉด ์กฐ๊ฐ์ด ์๋ ๋๋ ํฐ๋ฆฌ๋ก ์ ์กํด์ผ ํฉ๋๋ค. ์ค์ ์์ด ๋น๋ ์ค์ ๊ณผ ๋ค๋ฆ 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
์คํฌ๋ฆฐ์ธ์ด๋ฒ ์ดฌ์
์ฌ๊ธฐ์์๋ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค. ์๋ฆฌํ ๊ณํ์ ๋ฐฐ๊ฒฝ์ผ๋ก ์ดฌ์ํ๊ณ ๊ฒฐ๊ณผ ๋น๋์ค๋ฅผ ์นดํ๋ก๊ทธ์ ๋ฃ์ต๋๋ค. ๋ นํ, ๊ฑฐ๊ธฐ์์ ์กฐ๊ฐ์ด ์๋ ๋๋ ํฐ๋ฆฌ๋ก ์ ์ก๋ฉ๋๋ค. ๋ช ๋ช ๊ท์น์ ์ธํฐ๋ฝํธ ์ธ์ฉ๊ณผ ๋์ผํ๋ฉฐ, ๋ น์ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
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
์ค๋์ค ํ์ผ์ ์ง์ ์๊ฐ์ ๋จผ์ ์ ํธ๋ฆฌํฐ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ์์๋ฅผ ํด๋ฆญํ๋ฉด ํ์ํ ๊ธธ์ด์ ์์์ด ํธ์ง๋ฉ๋๋ค. ๋ด๊ฐ ์ฐพ์ ๋ชจ๋ ๊ถ์ฅ ์ฌํญ์ ํ๋๊ทธ ๋์ ๋ ๊ฐ๋จํฉ๋๋ค. -t ${๊ธฐ๊ฐ} ํ๋๊ทธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค -๊ฐ์ฅ ์งง์. ์ฌ์ค๋ก ffmpeg ๋ mp3์ ๊ธธ์ด๋ฅผ ๋๋ต์ ์ผ๋ก ๊ฒฐ์ ํ๋ฉฐ, ํธ์ง ์ค์ ์ค๋์ค ํธ๋์ ๊ธธ์ด๋ ๋น๋์ค ํธ๋์ ๊ธธ์ด์ ํฌ๊ฒ(XNUMX~XNUMX์ด ์ ๋) ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ ์ฒด ๋น๋์ค๊ฐ ๋จ์ผ ํ๋ ์์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง ์ด๋ฌํ ๋น๋์ค๋ฅผ ๊ฒฝ๊ณ์ ์ ์ค๋จ๋ ์ํ๋ก ๋ถ์ด๋ฉด ๋งค์ฐ ๋ถ์พํ ๋๊น ํ์์ด ๋ฐ์ํฉ๋๋ค.
mp3 ํ์ผ์ ์ง์ ์๊ฐ์ ๊ฒฐ์ ํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. mp3์ ๋ณด. ๊ทธ ์ฌ๋๋ ์ค์๋ฅผ ํ๊ณ ๊ฐ๋์ ffmpeg ์ด์์ ์ค๋ค mp3์ ๋ณด, ๋๋ก๋ ๊ทธ ๋ฐ๋์ผ ๋๋ ์๊ณ , ๋๋ก๋ ๋ ๋ค ๊ฑฐ์ง๋ง์ ํ ๋๋ ์์ต๋๋ค. ์ ๋ ์ด๋ค ํจํด๋ ๋ฐ๊ฒฌํ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํฉ๋๋ค.
์ด ์ ์ฉํ ์ ํธ๋ฆฌํฐ๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
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๋ฅผ, ์ค์ Linux ์ฌ์ฉ์๋ ํน์ ํจ๊ณผ๋ฅผ ๋ง๋ค ์ ์์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ๋ถ์ฐ์ ๋ํ ๋ด ์์ด๋์ด๋ฅผ ์ข์ํ๋ค๋ฉด ์คํฌ๋ฆฝํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#!/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
๊ฐ์ฌํ ํ์๋ค์ ์ฆ๊ฒ๊ฒ ์์ฒญํด์ฃผ์ธ์!
์ถ์ฒ : habr.com