본문 바로가기

메이커 Maker

라즈베리파이 비디오 루퍼 설정에 관한 문서

반응형

비디오루퍼가 잘 돌고 있지만 버튼을 눌러 종료하는 기능을 넣기 위해 깃허브 저장소를 찾았다. 그러니까 이 파일은 이전 문서에 연결된 파일로 이 곳의 내용 소스는 이 파일을 참고하면 된다.

 

일단 21번 핀에 버튼을 연결한다. 풀 업이 기본이니 GND로 연결하여 버튼을 시험한다. 물리번호 21인지, BCM 번호인지, wPi 번호인지 확인해야 되겠는데...

 

파일 중에서 video_looper.py 파일에 import RPi.GPIO as GPIO 명령을 찾는다. setup에서 GPIO.setmode(GPIO.BOARD) 라는 설정을 보니 물리번호를 나타낸다. 여하튼 테스트는 물리번호 21번과 GPIO 번호 21번은 물리번호 40번이니 둘 다 시험한다. 

 

이 파일은 라즈베리 파이 SD 카드의 `/boot` 폴더에 저장되므로 메인 컴퓨터에서 편집하거나 시스템에 로그인한 후 직접 접근할 수 있습니다.  

 

버튼 한쪽은 39번 GND에 연결하고, 다른 쪽은 물리번호 21번에 연결해 버튼을 누르면 자동 종료하게 만들었다.

 

 

파일을 연김에 영상을 랜덤으로 플레이하는 것과 핀 맵을 아래처럼 수정한다.

 

# To play files in random order set this to true
is_random = false
#is_random = true

 

#gpio_pin_map = 
gpio_pin_map = "11" : 1, "13": 4, "16": "+2", "18": "-1", "15": "video.mp4", "19": "K_SPACE", "21": "K_p"
# Example:
# Pin 11 starts the 2nd video in the playlist, 
# pin 13 starts the 5th video, 
# pin 16 jumps 2 videos ahead,
# pin 18 jumps one video back,
# pin 15 plays a file with name "video.mp4" (if it exists),
# pin 19 sends the "spacebar" to the looper, pausing the current video
# pin 21 sends the "p" key and thus triggers the shutdown of the Raspberry Pi

 

 

 

 

# video_looper.ini

# video_looper의 주요 설정 파일입니다.

 

# video_looper는 연결된 USB 드라이브의 루트 디렉터리에 있는 모든 비디오 파일을 재생하여 바로 사용할 수 있습니다.

#

 

# 이 파일에서 video_looper의 동작 방식을 변경할 수 있습니다. 예를 들어,

# 비디오 플레이어 종류나 미디어 파일 검색 위치 등을 설정할 수 있습니다.

 

#로 시작하는 줄은 주석 처리되어 무시됩니다.

 

# 앞에 있는 # 문자를 제거하면 주석 처리가 해제됩니다.

 

# 변경된 설정을 적용하려면 ./reload.sh 명령어를 사용하여 video_looper를 다시 시작하십시오.

 

# video_looper 설정 블록은 다음과 같습니다.

 

[video_looper]

 

# 미디어 파일을 재생하는 데 사용할 비디오 플레이어를 설정합니다. omxplayer,

# hello_video 또는 image_player 중 하나를 선택할 수 있습니다. omxplayer는 avi, mov, mp4 등의 일반적인 형식을 오디오와 비디오를 모두 포함하여 재생할 수 있지만, 비디오 재생 간에 약 100ms의 지연 시간이 발생합니다. # 비디오가 하나만 있는 경우 omxplayer는 끊김 없이 반복 재생합니다.

 

# hello_video는 오디오를 지원하지 않고 H264 원시 스트림만 재생하는 간단한 플레이어입니다.

# 하지만 하나의 비디오가 여러 번 재생될 경우 끊김 없이 반복 재생합니다.

 

# image_player는 이미지만 표시하며, 이 파일의 "image_player" 섹션에 설정된 시간 동안 재생합니다.

 

# 기본값은 omxplayer입니다.

video_player = omxplayer

#video_player = hello_video

#video_player = image_player

 

# 파일 읽기 위치

# 미디어 파일을 찾을 위치입니다. usb_drive, directory 또는 usb_drive_copymode를 사용할 수 있습니다.

 

# usb_drive를 사용하면 Raspberry Pi에 삽입된 모든 USB 드라이브가 자동으로 마운트되고 미디어 파일(루트 디렉터리만 해당)을 검색합니다.

 

# 또는 directory 옵션을 사용하면 SD 카드의 지정된 디렉터리에서만 미디어 파일을 검색합니다.

 

# 아래 [directory] 섹션에서 사용할 디렉터리를 변경할 수 있습니다.

 

# 기본값은 usb_drive입니다.

 

file_reader = usb_drive

#file_reader = directory

#file_reader = usb_drive_copymode

 

# usb_drive_copymode에 대한 참고 사항:

# 이 모드를 활성화하면 미디어 파일이 USB 스틱에서 아래 [directory] 섹션에 지정된 경로로 복사됩니다.

 

# 복사 모드에 대한 추가 설정은 [copymode] 섹션을 참조하십시오.

 

# OSD(화면 표시)

# 현재 플레이어 상태에 대한 정보 메시지(예: 로드된 미디어 파일 수 또는 로드 대기 중)를 표시할지 여부를 제어합니다.

# 기본값은 true로, 이러한 메시지를 표시합니다. 하지만 false로 설정하면 완전히 비활성화할 수 있습니다.

#

osd = true

#osd = false

 

# 파일을 찾은 후 OSD 및 카운트다운을 표시할 시간(초)

countdown_time = 5

 

# 아래에서 각 비디오 재생 사이의 대기 시간(초)을 설정할 수 있습니다.

 

# 새 재생 목록을 시작한 후 처음 재생되는 비디오(예: USB 드라이브 연결 후)에는 대기 시간이 적용되지 않습니다.

# hello_video와 같은 자체 반복 플레이어를 사용하는 경우, wait_time은 한 비디오의 반복 재생 사이에는 적용되지 않고 다른 비디오 사이에만 적용됩니다.

# omxplayer를 사용하는 경우, wait_time은 비디오의 반복 재생 사이에도 적용됩니다.

wait_time = 0

 

# 이 옵션을 사용하면 비디오 재생 사이에 현재 날짜/시간이 표시됩니다.

# Raspberry Pi는 시간 유지가 정확하지 않으므로 NTP 시간 동기화를 설정하거나 RTC 모듈을 설치해야 합니다.

datetime_display= false

#datetime_display = true

 

# 날짜/시간 표시 형식을 제어합니다. (https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes 참조)

# 아래 datetime_display는 필요한 경우 두 줄로 표시할 수 있습니다. 위쪽 줄이 아래쪽 줄보다 훨씬 커서 시간을 더 잘 나타냅니다. 맨 아래 줄은 날짜 형식에 더 적합합니다. 예를 들어 '2023년 2월 13일 목요일'과 같이 표시합니다.

 

# 맨 아래 줄이 필요하지 않은 경우 `bottom_datetime_display_format`을 비워 두세요.

 

# 날짜 뒤에 접미사(예: `st`, `nd`, `rd` 등)가 필요한 경우 `*_datetime_display_format`에 `%d{SUFFIX}`를 추가하세요.

 

# 아래에는 다양한 시간 및 날짜 형식 예시가 나와 있습니다. (`*_datetime_display_format` 쌍 중 하나만 `#` 없이 사용해야 합니다.)

 

# 맨 위 줄에는 24시간:분:초, 요일, 일 뒤에 접미사(`st`, `nd`, `rd` 등)`, 월, 연도가 표시됩니다.

 

# 상단 날짜/시간 표시 형식 = %H:%M:%S

하단 날짜/시간 표시 형식 = %A %d{SUFFIX} %B %Y

 

# 상단 줄에는 24시간:분:초, 하단 줄에는 연도가 표시됩니다.

 

#상단 날짜/시간 표시 형식 = %H:%M:%S

#하단 날짜/시간 표시 형식 = %Y

 

# 상단 줄에는 24시간:분:초만 표시하고 하단 줄은 없습니다.

 

#상단 날짜/시간 표시 형식 = %H:%M:%S

#하단 날짜/시간 표시 형식 =

 

# 파일을 무작위 순서로 재생하려면 이 값을 true로 설정하세요.

is_random = false

#is_random = true

 

# 활성화하면 모든 파일이 재생될 때까지 재생되지 않은 파일만 선택됩니다.

is_random_unique = false

#is_random_unique = true

 

# 재시작 후 마지막 재생 목록 항목 재개

resume_playlist = false

#resume_playlist = true

 

# 각 파일 재생 후 재생 중지

one_shot_playback = false

#one_shot_playback = true

 

# 시작 시 비디오 재생

# 예를 들어 GPIO를 통해서만 비디오를 재생하려는 경우 이 기능을 비활성화하는 것이 유용합니다.

play_on_startup = true

#play_on_startup = false

 

# 배경 이미지를 사용자 지정 이미지로 설정

# 이 이미지는 동영상이나 이미지 사이에 표시됩니다.

# 이미지는 디스플레이 해상도에 맞게 크기가 조정되고 중앙에 배치됩니다. 예를 들어 다음과 같이 사용하세요.

# bgimage = /home/pi/loader.png

bgimage =

 

# 비디오 뒤에 표시되는 배경색을 변경합니다(omxplayer 및 image_player에서만 작동합니다).

# 빨강, 초록, 파랑 ​​색상 값에 대해 0에서 255 사이의 세 자리 숫자를 쉼표로 구분하여 입력하세요.

# 기본값은 0, 0, 0으로 검정색입니다.

 

bgcolor = 0, 0, 0

 

# 화면에 표시되는 메시지와 함께 표시되는 전경 텍스트의 색상을 변경합니다.

# bgcolor와 동일한 형식으로 세 자리 숫자 값을 입력하세요.

# 기본값은 255, 255, 255 또는 흰색입니다.

 

fgcolor = 255, 255, 255

 

# true인 경우 프로그램 상태를 표준 출력으로 출력합니다.

 

# # 디버깅 시 내부 작동 방식을 확인하는 데 유용합니다.

console_output = false

#console_output = true

 

[control]

# 이 섹션에서는 루퍼와 상호 작용하는 데 필요한 모든 설정을 정의합니다.

 

# 키보드를 통해 프로그램을 제어합니다.

# 전체 키보드 명령 목록은 readme 파일을 참조하세요.

 

keyboard_control = true

#keyboard_control = false

 

# 비디오 재생 중 키보드 제어를 비활성화할 수 있습니다. 반복 재생되는 비디오의 경우 키보드 제어가 작동하지 않습니다.

# one_shot_playback과 함께 사용하도록 설계되었습니다.

keyboard_control_disabled_while_playback = false

#keyboard_control_disabled_while_playback = true

 

# 이 설정은 Raspberry Pi의 어떤 GPIO 핀(보드 번호 기준!)을 사용하여 재생 목록의 어떤 파일로 이동할지 정의합니다(첫 번째 파일은 인덱스 0).

# 핀 번호에 대한 자세한 내용은 https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio를 참조하세요.

# 핀은 기본적으로 풀업되어 있으므로 스위치를 선택한 핀과 접지(예: 9번 핀)에 연결해야 합니다.

# 하지만 아래의 "gpio_pin_mode" 설정을 사용하여 이를 변경할 수 있습니다. 소프트웨어적으로 디바운싱이 수행됩니다.

# 허용되는 설정은 다음과 같습니다. "pinnumber" : videoindex 또는 "핀 번호" : "파일 이름" 또는 "핀 번호" : "-1" 또는 "핀 번호" : "+1"

# 종료 또는 일시 정지와 같은 "키보드 명령"을 보낼 수도 있습니다(사용 가능한 키보드 명령은 readme 파일을 참조하세요).

# 형식은 PyGame 키 목록(https://www.pygame.org/docs/ref/key.html)을 따릅니다. 아래 예시를 참조하세요. 이 기능을 사용하려면 "keyboard_control"을 활성화해야 합니다.

# GPIO를 활성화하려면 아래 예시처럼 gpio_pin_map을 설정하거나 모든 예시 매핑을 활성화하세요.

 

gpio_pin_map =

#gpio_pin_map = "11" : 1, "13": 4, "16": "+2", "18": "-1", "15": "video.mp4", "19": "K_SPACE", "21": "K_p"

# 예시:

# 11번 핀은 재생 목록의 두 번째 비디오를 재생합니다.

# 13번 핀은 다섯 번째 비디오를 재생합니다.

# 16번 핀은 두 비디오 앞으로 이동합니다.

# 18번 핀은 한 비디오 뒤로 이동합니다.

# 15번 핀은 "video.mp4"라는 이름의 파일을 재생합니다(파일이 있는 경우).

# 19번 핀은 루퍼에 스페이스바를 보내 현재 비디오를 일시 정지합니다.

# 21번 핀은 "p" 키를 보내 라즈베리 파이를 종료합니다.

 

# 루퍼 제어용 GPIO 핀의 풀업 또는 풀다운 여부를 제어합니다.

# True (기본값)은 풀업을 의미하며, 스위치는 핀을 접지에 연결해야 합니다.

# False는 풀다운을 의미하며, 스위치는 핀을 3.3V에 연결해야 합니다.

gpio_pin_mode = true

#gpio_pin_mode = false

 

# 비디오 재생 중 GPIO 제어를 비활성화할 수 있습니다. 반복 재생되는 비디오의 경우 GPIO 제어는 작동하지 않습니다.

# one_shot_playback과 함께 사용하도록 설계되었습니다.

gpio_control_disabled_while_playback = false

#gpio_control_disabled_while_playback = true

 

# USB 드라이브 파일 리더 구성은 다음과 같습니다.

 

[usb_drive]

 

# 새 USB 드라이브를 마운트할 경로입니다. 마운트된 각 드라이브마다 경로에 숫자가 추가됩니다.

# (예: /mnt/usbdrive0, /mnt/usbdrive1 등)

 

mount_path = /mnt/usbdrive

 

# USB 드라이브를 읽기 전용(true) 또는 쓰기 가능(false)으로 마운트할지 여부입니다. 안정성을 위해 USB 드라이브는 읽기 전용으로 마운트하는 것이 좋습니다.

 

readonly = true

 

# 디렉터리 파일 읽기 설정은 다음과 같습니다.

 

[directory]

# 디렉터리 파일 읽기를 사용할 때 동영상을 검색할 경로입니다.

 

# (위의 file_reader 섹션을 참조하여 활성화하세요.)

path = /home/pi/video

 

 

# 복사 모드 파일 읽기 설정은 다음과 같습니다.

 

[copymode]

# 이 설정은 복사 모드에서 USB 드라이브가 연결되었을 때 수행할 작업을 제어합니다.

# (활성화하려면 위의 file_reader 섹션을 참조하십시오.)

# 기본 설정인 "replace"는 비디오 디렉터리의 모든 파일을 삭제한 다음 USB 드라이브에서 파일을 복사합니다.

# 드라이브의 새 파일이 기존 파일을 덮어쓸지 또는 추가될지 결정할 수 있습니다. "Replace"를 선택하면 Raspberry Pi에 있는 기존 비디오 파일이 모두 삭제되고 새 파일만 남게 됩니다.

 

# 드라이브에 "replace" 또는 "add"라는 이름의 파일을 배치하여 이 설정을 재정의할 수 있습니다.

 

# 기본 모드는 "replace"입니다.

 

# 참고: 동일한 이름의 파일은 항상 덮어쓰기됩니다.

mode = replace

#mode = add

 

# 이 설정을 통해 "loader.png"라는 파일을 드라이브에서 복사하여 배경 이미지 등으로 사용할지 여부를 제어할 수 있습니다.

# 파일은 /home/pi/loader.png로 복사됩니다.

copyloader = false

#copyloader = true

 

# 이 설정은 USB 드라이브에 비디오 루퍼가 비디오를 인식할 수 있도록 파일(파일 이름은 암호)로 존재해야 하는 "암호"를 정의합니다(확장자는 상관없음).

# 기본값은 videopi입니다. 변경하는 것을 고려해 보세요.

# 비어 있는 경우 검사가 수행되지 않습니다.

# 호환성을 극대화하려면 ASCII 문자만 사용하세요.

# 암호 = videopi

 

[재생 목록]

# 이 설정을 사용하면 고정 재생 목록을 사용할 수 있습니다. 구문은 assets 폴더의 example.m3u 파일을 참조하세요.

 

# 재생 목록 파일의 경로입니다.

 

# 상대 경로(슬래시(/)로 시작하지 않는 경로)를 입력하면 선택한 file_reader 경로(디렉토리 또는 USB 드라이브)를 기준으로 하는 것으로 간주됩니다.

 

# 재생 목록을 사용하지 않고 file_reader 경로(디렉토리 또는 USB 드라이브)에 있는 모든 파일을 재생하려면 비워 두십시오.

 

path =

#path = playlist.m3u

 

# ALSA 구성은 다음과 같습니다.

 

# 이 설정은 sound = alsa 옵션으로 omxplayer를 사용할 때만 적용됩니다.

 

[alsa]

 

# 사운드 출력에 사용할 ALSA 하드웨어 장치입니다. 카드 번호와 하위 장치 번호를 쉼표로 구분하여 입력합니다(예: '1,0').

# 'aplay -l' 명령을 실행하여 사용 가능한 장치 목록을 확인할 수 있습니다. 비어 있는 경우 기본 출력 장치가 사용됩니다.

#

 

hw_device =

#hw_device = 1,0

 

# 하드웨어 장치의 볼륨은 비디오 파일과 함께 제공되는 텍스트 파일을 사용하여 설정할 수 있습니다.

# 파일이 없는 경우 하드웨어 볼륨은 변경되지 않습니다.

# 이 설정은 텍스트 파일의 이름을 지정합니다.

 

# 파일에는 amixer와 호환되는 볼륨 값이 포함된 한 줄이 있어야 합니다.

# 예: '50%' 또는 '-10db'

 

hw_vol_file =

#hw_vol_file = alsa_volume

 

# 볼륨 조절에 사용할 ALSA 컨트롤의 이름입니다. 일반적으로

# 'PCM'입니다. 사용 가능한 컨트롤 목록을 보려면 'amixer -c N scontrols'(여기서 N은 출력 장치의 카드 번호)를 실행하십시오.

#

 

hw_vol_control = PCM

 

# omxplayer 구성은 다음과 같습니다.

 

[omxplayer]

 

# 지원되는 파일 확장자 목록입니다. 쉼표로 구분해야 하며 확장자 시작 부분에 점(.)이 없어야 합니다.

#

extensions = avi, mov, mkv, mp4, m4v

 

# omxplayer의 사운드 출력은 HDMI, 로컬, 둘 다 또는 ALSA 중 하나입니다. `hdmi`로 설정하면 비디오 사운드가 HDMI 출력으로 재생되고, `local`로 설정하면

# 아날로그 오디오 출력으로 재생됩니다. `both`로 설정하면

# HDMI와 아날로그 출력 모두에서 사운드가 재생됩니다. `alsa`로 설정하면

# 위의 `[alsa]` 섹션에 지정된 장치를 사용하여 ALSA를 통해 사운드가 재생됩니다.

 

# `both` 값이 기본값입니다.

 

sound = both

#sound = hdmi

#sound = local

#sound = alsa

 

# 비디오 플레이어의 사운드 볼륨 출력을 지정합니다.

 

# 볼륨 값은 비디오 파일 근처의 파일에서 읽어옵니다.

# 파일이 없으면 기본값인 0dB가 사용됩니다.

 

# 이 기능을 사용하려면 비디오 파일과 같은 디렉터리에 파일을 만들고

# 아래에 정의된 값(기본값은 'sound_volume')으로 이름을 지정합니다.

# 그런 다음 파일 안에

# 볼륨 값을 텍스트로 입력하는 한 줄을 추가하여 omxplayer에 전달합니다(--vol 옵션 사용, 값은 밀리벨 단위).

 

# 참고: 이로 인해 양자화 오류가 발생할 수 있습니다. hw_vol_file을 사용하면

# 일반적으로 더 나은 음질을 얻을 수 있습니다.

 

sound_vol_file = sound_volume

 

# 고정 재생 목록에는 제목이 포함될 수 있으며, 이를 표시할 수 있습니다. 위의 재생 목록 섹션을 참조하세요.

 

# 고정 재생 목록이 제공되지 않으면 제목은 확장자를 제외한 파일 이름입니다.

 

show_titles = false

#show_titles = true

 

# 제목 재생 시간(초). -1은 무한 재생을 의미합니다.

 

title_duration = 10

 

# omxplayer에 전달할 추가 명령줄 인수입니다. 특별한 필요가 없는 한 변경하지 않는 것이 좋습니다.

# 오디오 및

# 비디오 FIFO 버퍼는 반복 재생 시 동영상 끝부분이 잘리는 것을 방지하기 위해 낮은 값으로 유지됩니다.

 

# 'omxplayer -h'를 실행하여 전체 매개변수 목록을 확인하거나 다음 링크를 참조하세요.

# https://github.com/popcornmix/omxplayer#synopsis에서 사용 가능한 모든 옵션을 확인할 수 있습니다.

# Raspberry Pi 4 및 5에서는 --display 7 또는 --display 2 옵션을 사용하여 HDMI 출력을 선택할 수 있습니다.

# --display 옵션을 지정하지 않으면 두 HDMI 포트 모두 동일한 출력을 사용합니다.

extra_args = --no-osd --audio_fifo 0.01 --video_fifo 0.01 --align center --font-size 55

 

 

# hello_video 플레이어 설정은 다음과 같습니다.

 

[hello_video]

 

# 지원되는 파일 확장자 목록입니다. 쉼표로 구분해야 하며,

# 확장자 시작 부분에 마침표(.)를 포함하지 않아야 합니다.

 

extensions = h264

 

# 이미지 플레이어 설정은 다음과 같습니다.

[image_player]

 

# 지원되는 파일 확장자 목록입니다. 쉼표로 구분해야 하며,

# 확장자 시작 부분에 마침표(.)를 포함하지 않아야 합니다.

 

extensions = jpg, jpeg, gif, png

 

# 이미지 표시 시간(초)

duration = 5

 

# 이미지를 디스플레이 해상도에 맞게 확대/축소할지 여부를 제어합니다. 기본값: true

scale = true

#scale = false

 

# 이미지를 가운데 정렬하여 표시할지 여부를 제어합니다. 기본값: true

center = true

#center = false

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩