Blog

  • 분노의 포도

    사실 영화에서 포도 이야기는 나오지 않는다. 포도를 상징하는 다른 것이 있을 것 같다. 인터넷에서 볼 수 있는 소설의 줄거리를 따라가면서도 다른 부분이 있다. 하지만 영화 끝나기 전 주인공이 어머니와 이야기하는 부분은 잘 전달된 것 같다.

    영화에서 나온 캠프 중 가장 좋은 캠프는 정부에서 운영하는 캠프다. 내부 인원으로 구성된 자경단 같은 것도 있다. 공무원도 일하는지 영장이 없으면 외부에서 경찰이 무단으로 들어오지 못하게 막는 것 같다. 이곳은 샤워 시설도 있고, 토요일마다 자체 축제도 있다. 이런 시설을 혐오하는 경찰이 사람을 매수해서 영장 없이 들어갈 수 있는 폭동을 일으키려고 한다. 하지만 사전에 이를 예측한 자경단에 의해 폭동을 일으키려는 자들이 제압당하고 경찰이 들어가지 못한다. 경찰에 쫒기는 주인공을 제외한 가족들이 좋은 근무지를 향해 떠나가는
    이야기를 끝으로 영화가 마무리된다.

    • 영화 초중반은 미국의 유명한 66번를 따라서 움직인다. 주 경계를 넘어가는 과정에서 항상 검문을 받는다. 국도가 많이 나온다 .
    • 당시 오클라호마는 심한 가뭄으로 많은 사람들이 어려웠다고 한다.
    • 부자들과 결탁한 부패한 경찰들이 나온다 . 그래서 그런지 아니면 주인공이 가석방 중이라서 그런지 경찰에 대한 인식이 좋지 않다.
    • 차량 번호판이 식별력이 있는 것으로 나온다. 그럼에도 불구하고 번호판을 못 바꾸는 것을 보면 차량 번호와 연관된 등록증이 있을 것 같다.
    • 차량이 상당히 튼튼하다. 중간에 고장나 버려야 할 것 같은 상황인데도 기름만 넣어주면 움직인다. 요즘에는 보기 드문 튜브 타이어다. 그래서 자전거처럼 바람을 넣는다.
    • 이동하는 중에 식빵 가격을 매우 할인해 주고, 아이들이 사탕을 쳐다 보고 있으니 매우 할인된 가격으로 사탕도 주는 가게가 나온다. 식사하던 트럭 운전사들이 팁을 두둑히 주고 떠난 것 같다.
    • folk, fellas 같은 현재는 사전에서도 용례를 찾기 힘든 단어들이 많이 나온다.
    • 가족은 뭉치면 강하다.
    • 누구나 먹일 가족이 있다면 어떤 일이든 할 수 있다.

  • grub rescue

    TrueNAS Scale을 재설치하기 위해서 iso 이미지를 USB에 구웠는데 grub rescue 화면이 나왔다.

    grub rescue> ls (hd0,msdos1)/
    grub rescue> set prefix=(hd0,1)/boot/grub
    grub rescue> set root=(hd0,1)
    grub rescue> insmod normal
    grub rescue> normal

    이 과정을 거쳐서 해결했다.

  • 영화 감상용으로 변환하기

    내가 영화를 주로 보는 환경은 출퇴근 시간이다. 집중력이 높을 때가 아니다. 그렇게 집중해서 볼 수 있는 영화도 아니다. 그래서 20분 간격으로 끊어서 보기로 했다. 자막도 hard 하게 직접 영상에 입혀서 보기로 했다.

    자막은 SRT 포맷으로 변환해 준다. H.265를 굳이 사용해야 할 이유가 없어 H.264를 선택했다.

    #!/bin/bash
    cd INPUT
    INPUT_MOV=`ls *.m*`
    INPUT_SUB=`ls *.srt`
    CPU='libx264'
    #GPU='hevc_nvenc'
    GPU='h264_nvenc'
    echo MOVIE: ${INPUT_MOV}
    echo SUBTITLE: ${INPUT_SUB}
    echo ""
    OUTPUT_MOV=${INPUT_MOV/.mp4/}
    echo OUTPUT: ${OUTPUT_MOV}
    
    cd /root
    
    ffmpeg \
    -hwaccel_output_format cuda \
    -i INPUT/${INPUT_MOV} -c:v ${GPU} \
    -vf "subtitles=INPUT/${INPUT_SUB}:charenc=UTF-8:force_style='FontName=Roboto,FontSize=20',scale=-1:720" \
    -c:a aac -b:a 128k -ac 2 -y -f matroska \
    -f segment \
    -reset_timestamps 1 \
    -segment_time 1200 \
    OUTPUT/${OUTPUT_MOV}_%1d.mp4
  • 컴파일해서 실행하기

    도커에서 GPU를 이용하여 동영상 변환을 하려고 할 경우이다.

    내 환경에 맞게 도커 컨테이너를 만든다.

    sudo docker run -it --name encoder --restart always --gpus all --add-host rcc.work:192.168.126.37 debian

    기본 설치를 한다.

    echo 'Acquire::http::Proxy "http://rcc.work:3142";' > /etc/apt/apt.conf
    rm -rf /etc/localtime
    ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 
    apt-get -y update && apt-get -y upgrade
    apt-get -y install dialog git build-essential

    컴파일 하기 전 필요한 다른 패키지를 설치한다. 더 줄일려고 했는데 일단 여기에서 멈추었다.

    apt-get -y install yasm pkg-config nasm libx264-dev libx265-dev libnuma-dev  libpostproc-dev libass-dev fontconfig libavcodec-dev libavformat-dev software-properties-common

    git에서 필요한 것들을 다운 받는다.

    #https://docs.nvidia.com/video-technologies/video-codec-sdk/12.0/ffmpeg-with-nvidia-gpu/index.html
    cd ~
    git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
    cd nv-codec-headers && make install && cd ~
    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
    cd ffmpeg

    GPU를 이용하는 과정에서 파일이 없다는 오류가 생긴다. 필요한 파일이 포함된 폴더를 전체를 복사해 준다. 이렇게 해도 큰 문제는 없는 것 같다.

    sudo docker cp /usr/local/cuda/. encoder:/usr/local/cuda
    sudo docker cp /usr/lib/x86_64-linux-gnu/. encoder:/usr/lib/x86_64-linux-gnu
    sudo docker cp /etc/alternatives/. encoder:/etc/alternatives

    필요한 설치 환경에 다음을 추가하여 준다.

    echo 'CUDA_HOME=/usr/local/cuda' >> ~/.bashrc
    echo 'PATH=${CUDA_HOME}/bin:${PATH}' >> ~/.bashrc
    
    CUDA_HOME=/usr/local/cuda
    export PATH=${CUDA_HOME}/bin:${PATH}
    
    echo '/usr/local/lib' >> /etc/ld.so.conf
    echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64' >> ~/.bashrc

    컴파일 하고 설치한다.

    ./configure --enable-nonfree --enable-cuda --enable-cuvid --enable-nvenc --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared --enable-gpl --enable-libx264 --enable-libx265 --enable-libass --enable-fontconfig
    
    make -j 6
    
    make install