[ShellScript] 쉘 스크립트 국/영문 번역 파일을 이용하여 이미지 및 동영상 제작

 정보

  • 업무명    : 쉘 스크립트 국/영문 번역 파일을 이용하여 이미지 및 동영상 제작

  • 작성자    : 이상호

  • 작성일    : 2021-01-07

  • 설   명    :

  • 수정이력 :

 

 내용

[개요]

  • 안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.

  • 오늘 포스팅에서는 국/영문 번역 파일을 이용하여 이미지 및 동영상 제작을 소개합니다.

 

etc-image-0

 

[특징]

  • 리눅스에서 이미지 및 동영상 제작을 하기 위해서 쉘 스크립트 기술이 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

 

[기능]

  • 구분자 파일 읽기

  • 이미지 생성 및 합성

  • 동영상 제작

 

[활용 자료]

  • 자료명 : input.txt

  • 자료 종류 : 번호, 영문, 국문 번역

  • 확장자 : txt

 

etc-image-1

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 소스 코드 참조

 

[사용 OS]

  • Linux (CentOS v7.3)

  • VMware Workstation Pro v15.5

 

[사용 언어]

  • ShellScript (bash)

 

[사용 라이브러리]

  • ImageMagick v6.9.10-68

  • ffmpeg v2.8.15

 

 소스 코드

  • 소스 코드는 단계별로 수행하며 상세 설명은 다음과 같습니다.

  • 작업 환경의 경우 수행 쉘, 입력 자료, 출력 자료로 구성되어 있습니다.

  디렉터리명 파일명
작업 경로 prjDir=/SYSTEM/TEST/MakeTextToMovie  
수행 쉘 ${prjDir} RunShell-MakeTextToMovie.sh
입력 자료 ${prjDir}/INPUT input.txt
설정 정보 ${prjDir}/CONFIG batang.ttf
gulim.ttf
이미지 ${prjDir}/FIG ep01_%03d.png
동영상 ${prjDir}/MOVIE MakeTextToMovie.mp4

 

etc-image-2

 

[명세]

  • [1 단계] 수행 쉘 실행 및 파일 읽기

    • bash RunShell-MakeTextToMovie.sh 명령어를 통해 쉘 실행

    • ls 명령어를 통해 INPUT 경로의 파일명 조회

    • IFS 명령어를 통해 파일 내에 구분자 (|)를 통해 각 변수 (type, eng, kor)로 할당

#!/bin/bash

inFile=$(ls INPUT/input.txt)

while IFS='|' read -r type eng kor ; do

   echo $type $kor

   ...

done < $inFile

 

  • [2 단계] 이미지 생산 및 합성

    • convert 명령어를 통해 국문 (kor.png) 및 영문 (eng.png) 이미지 생산

    • composite 명령어를 통해 국/영문 이미지 합성

   convert -transparent white -size 1280x720 -quality 100 -gravity Center -interline-spacing 100 -font Helvetica -pointsize 100 -fill blue caption:"$eng" eng.png
   convert -background white -size 1280x720 -quality 100 -gravity SouthWest -font CONFIG/gulim.ttf -pointsize 50 -fill black caption:"$kor" kor.png
   
   composite -compose over eng.png kor.png FIG/${type}.png

 

  • 국/영문 이미지 생산

 

eng.png
eng.png
kor.png
kor.png

 

  • 합성 이미지 생산

ep01_001.png
ep01_001.png

 

  • [3 단계] 동영상 제작

    • ffmpeg를 통해 파일명 패턴 (FIG/ep01_*.png)으로 동영상 제작

ffmpeg -y -framerate 1 -f image2 -pattern_type glob -i "FIG/ep01_*.png" -vcodec libx264 -pix_fmt yuv420p -r 30 -vf "scale =trunc(iw/2)*2:trunc(ih/2)*2" "MOVIE/MakeTextToMovie.mp4"

 

 

MakeTextToMovie.mp4
2.51MB

 

[전체]

  • RunShell-MakeTextToMovie.sh

#!/bin/bash

inFile=$(ls INPUT/input.txt)

while IFS='|' read -r type eng kor ; do

   echo $type $kor

   convert -transparent white -size 1280x720 -quality 100 -gravity Center -interline-spacing 100 -font Helvetica -pointsize 100 -fill blue caption:"$eng" eng.png
   convert -background white -size 1280x720 -quality 100 -gravity SouthWest -font CONFIG/gulim.ttf -pointsize 50 -fill black caption:"$kor" kor.png
   
   composite -compose over eng.png kor.png FIG/${type}.png

   rm -f eng.png kor.png

done < $inFile

ffmpeg -y -framerate 1 -f image2 -pattern_type glob -i "FIG/ep01_*.png" -vcodec libx264 -pix_fmt yuv420p -r 30 -vf "scale =trunc(iw/2)*2:trunc(ih/2)*2" "MOVIE/MakeTextToMovie.mp4"

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com