Author: byun1114

  • Telegram으로 그림 파일 보내기

    Telegram Bot으로 그림 파일을 보내면 이미지를 손실 압축해서 전송된다. 그래서 화질이 나빠진다. 이미지 그 자체를 보내는 것으로 처리해야 한다.

    img = open(filename, 'rb')
    response = requests.post(
    	f'https://api.telegram.org/bot{TOKEN}/sendDocument',
    	data = {'chat_id' : CHAT_ID,
    		   'document' : 'attach://file'},
    	f'https://api.telegram.org/bot{TOKEN}/sendPhoto?chat_id={CHAT_ID}',
    	files={'file':img},
    	timeout=5)
  • File browser

    회사 내부에서 파일을 USB로만 이동하는게 상당히 번거롭다. 가장 번거로운 것은 내 컴퓨터에서 USB가 인식이 제대로 안된다는 것이다. 그래서 웹으로 파일을 공유하는 방법을 찾아 보았다.

    정말 여러 방법이 있을 것이다. 그 중에서 TrueNAS scale의 App에서 File Browser를 이용해 보기로 했다.

    처음에는 파일을 읽을 수만 있을 뿐 삭제나 생성이 되지 않았다. 결국 해결한 방법은 누구나 읽고 쓸 수 있는 dataset을 pool에 하나 생성해서 여기에 File Browser를 연결하는 것이다.

    Add Dataset을 클릭해서 사용할 것을 하나 만든다.

    App에서 여기에 Host path를 연결한다.

  • Nginx, WebDav, RaiDrive

    요즘 제공되는 nginx는 –with-http_dav_module 옵션이 기본으로 들어가 있어 RaiDrive로 그냥 연결이 되는 줄 알았다. 그런데 자꾸 접속이 되지 않았다. 그래서 nginx의 access_log를 보니 PROPFIND 항목이 보였다. 이것은 dav_ext_methods 에서 설정을 해주어야 한다. 그러기 위해서는 nginx 를 설치할 때 nginx-full로 해야 한다.

    apt install nginx-full

    server 블록의 location 은 다음과 같이 해주면 적어도 읽기는 항상 가능하다.

    location / {
    	autoindex on;
    	autoindex_localtime on;
    	dav_access user:rw group:rw all:r;
    	auth_basic "Restricted";
    	auth_basic_user_file /etc/nginx/sites-available/auth;
    	dav_methods PUT DELETE MKCOL COPY MOVE;
    	dav_ext_methods PROPFIND OPTIONS;
    }
  • FFMpeg in Docker

    tar -cf cuda1.tar /usr/local/cuda
    
    sudo docker rm -f encoder
    
    sudo docker run -itd --name encoder --restart always --gpus all --add-host rcc.work:192.168.126.37 ubuntu
    
    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 '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 apt-utils
    apt-get -y install dialog 
    git build-essential
    
    
    #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
    
    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 libfaac-dev
    
    echo '/usr/local/lib' >> /etc/ld.so.conf 
    echo 'cd /root/' >> ~/.bashrc
    echo 'CUDA_HOME=/usr/local/cuda' >> ~/.bashrc
    echo 'PATH=${CUDA_HOME}/bin:${PATH}' >> ~/.bashrc
    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 --enable-libfribidi --enable-libfontconfig --enable-libfdk-aac
    
    make -j 6 && make install
    
    
    
    mkdir /usr/local/cuda
    mkdir 
    
    #!/bin/bash
    INPUT_MOV='gun.mp4'
    INPUT_SUB='English.srt'
    INPUT_SUB='gun.srt'
    OUTPUT_MOV='gun2.mkv'
    CPU='libx264'
    GPU='hevc_nvenc'
    
    ffmpeg \
            -hwaccel_output_format cuda \
            -i ${INPUT_MOV} -c:v ${GPU} \
            -vf "subtitles=${INPUT_SUB}:force_style='FontName=Malgun Gothic,FontSize=24',scale=hd720" \
            -c:a aac -b:a 192k -ac 2 -y -f matroska \
            ${OUTPUT_MOV}
    
    sshpass -p 1 sftp -P 20536 byun1114@office.work << EOF
    cd TMP
    put ${OUTPUT_MOV}
    EOF