2019년 10월 26일 토요일

PLEX에서 자막 글꼴 변경

컴퓨터의 PLEX와 TV의 chromecast를 잘 이용해 왔습니다.
한 가지 아쉬운 점은 PLEX에서 자막 글꼴을 설정할 수 없다는 거.

여러 방법을 시도해 보고

Kodi는 자막 글꼴을 설정할 수 있었지만, chromecast를 이용하려면 화면 전체를 전송해야 되서 무거웠고, Kodi와 Yatse 안드로이드 어플을 같이 사용하면 화면 전체 전송 없이, PLEX 처럼 사용할 수 있었지만 Yatse로는 몇몇 오디오가 재생 안 되는 문제가 또 있었습니다. Yatse 어플을 구매하기까지 했습니다 ㅠㅜ

PLEX의 고급 설정을 건드리면 자막 글꼴을 변경할 수 있나 찾아보았지만 해결책이 안 나타났습니다.

여차저차해서 아래 방법이 제일 쉬워 보여 글을 남깁니다.

방법은 간단합니다.

자막 폰트를 지정할 수 있는 자막 포맷이 있습니다.
https://matroska.org/technical/specs/subtitles/ssa.html
PLEX도 이를 지원하구요.

https://www.nikse.dk/
여기서 Subtitle Edit 프로그램을 받아 설치하시고

우선, smi 자막을 ass 형식으로 저장해 주세요.

이후, 아래 그림처럼 "ASS의 스타일"을 선택해 주세요.


그러면 아래 그림처럼 원하는 폰트를 선택할 수 있는 창이 뜹니다.


원하는 폰트로 설정하고 "확인" 누르면 끝~~

2019년 6월 1일 토요일

m3u8, TS 다운로드 방법

스트리밍 동영상 다운로드 방법을 소개합니다.

우선 m3u8과 TS를 알아봅시다.

동영상은 파일 크기가 커서, 파일 하나를 통채로 스트리밍하지는 않습니다.

대신 동영상을 여러 개의 작은 파일로 쪼갭니다.

이 쪼개진 파일을 TS 파일이라고 부르며, TS 파일들의 목록이 m3u8 파일입니다.


m3u8 파일 주소만 알려주면, m3u8 파일 안에 있는 TS 파일들을 다운받고,

이를 합쳐주는 프로그램이 있습니다. ffmpeg 프로그램입니다.

공짜이고, 아래 주소에서 다운로드할 수 있습니다.

https://ffmpeg.org/


아래는 ffmpeg 사용예입니다.

ffmpeg.exe -i "https://blahblahblah.m3u8" -bsf:a aac_adtstoasc -c copy hello.mp4

간단히 설명드리면 "https://blahblahblah.m3u8" 라는 m3u8 파일 안에 들어있는 TS 파일들을 다운받아 hello.mp4 파일을 만들라는 것입니다.


이제 필요한 것은 동영상의 m3u8 주소는 어떻게 아느냐는 것입니다.

크롬 브라우저를 이용하면 이 역시 쉽게 알 수 있습니다.


크롬을 실행하고, F12 키를 누르면 아래와 같은 창이 나타납니다. Network 탭을 누르십시오.


그리고 다운받고 싶은 동영상이 있는 곳을 방문합니다.

여러가지 글자들이 계속 바뀌는데, 위 그림처럼 filter 부분에 m3u8을 쳐서, m3u8 파일이 있는 주소를 알아내면 됩니다.




2019년 4월 4일 목요일

무한소와 근사다항식

아래 내용은 김홍종 교수님의 "미적분학 \(1^+\)"를 읽다가, 이해 안 되는 부분이 있어 강혜정 교수님의 "수학 및 연습 1" 동영상을 보고 정리한 것입니다.

실수의 원점 근방에서 정의된 함수 \(f(x)\)가 \(f(0)=0\) 이고 \(\lim_{x\to 0}\frac{f(x)}{x}=0\) 이면, 함수 \(f(x)\)가 원점 근방에서 \(0\)으로 수렴하는 정도는 \(x\)가 \(0\)으로 수렴하는 정도보다 훨씬 빠르다는 것을 알 수 있다.



[정의 1]
\(f(0)=0\)이고 \(\lim_{x\to 0}\frac{f(x)}{x}=0\)이면 \(|f(x)|\ll|x|\) 또는 \(f(x)=o(x)\)로 표시하고 "\(f(x)\)는 \(x\)보다 절대적으로 아주 작다"고 말한다.



[보기 1]
\(\cos(x)=1-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+\cdots\)

\(\Rightarrow 1-\cos(x)=x^2(\frac{1}{2!}-\frac{x^2}{4!}+\frac{x^4}{6!}-\cdots)\)

\(\lim_{x\to 0}\frac{1-\cos(x)}{x}=\lim_{x\to 0}\frac{x^2(\frac{1}{2!}-\frac{x^2}{4!}+\frac{x^4}{6!}-\cdots)}{x}=\lim_{x\to 0}x(\frac{1}{2!}-\frac{x^2}{4!}+\frac{x^4}{6!}-\cdots)=0\)

따라서 \(1-\cos(x)=o(x)\)

아래 왼쪽 그림은 \(y=1-\cos(x)\) 그래프이고, 이를 원점 근방에서 확대한 것이 오른쪽 그림이다. 오른쪽 그림에서 알 수 있듯이 \(y=1-\cos(x)\)는 원점 근방에서 \(0\)으로 수렴하는 정도가 \(y=x\)보다 훨씬 빠르다는 것을 알 수 있다.




[정의 2]
원점 근방에서 정의된 함수 \(f(x)\)에 대하여 \(p(x)=a+bx\)가
$$f(x)-p(x)=o(x)$$
를 만족시키면, \(p(x)\)를 '원점 근방에서 \(f(x)\)의 일차 근사다항식' 또는 '\(f(x)\)에 가장 가까운 일차식'이라고 부른다.



[보기 2]
\(\cos(x)\)의 일차 근사다항식은 \(y=1\)이다. ([보기 1] 참고)



[Note 1]
\(f(x)=o(x) \Leftrightarrow \lim_{x\to 0}\frac{f(x)}{x}=0\) 에서 \(\frac{f(x)}{x}\)의 극한값이 존재하니까 분모가 \(0\)으로 갈 때 분자도 \(0\)으로 가야지만 극한값이 존재한다. 그래서 \(f(0)=0\)이다.
\(\lim_{x\to 0}\frac{f(x)}{x}=0\)은 \(f(0)=0\)이기 때문에 다음과 같이 변형할 수 있다. \(\lim_{x\to 0}\frac{f(x)-f(0)}{x-0}=0\), 이는 \(f^\prime(0)\)를 말한다. 정리하면,
$$f(x)=o(x) \Leftrightarrow \lim_{x\to 0}\frac{f(x)}{x}=0 \Leftrightarrow f(0)=0, f^\prime(0)$$



[Note 2]
\(f(x)-(a+bx)=o(x) \Leftrightarrow \lim_{x\to 0}\frac{f(x)-(a+bx)}{x}=0\) 에서 분모가 \(x\)가 \(0\)으로 갈 때, \(0\)으로 가니까 분자도 \(x\)가 \(0\)으로 갈 때, \(0\)으로 가야된다. 그러면 \(f(0)-a\)가 0으로 가야 되니까 \(f(0)=a\)이고

\(a\)대신에 \(f(0)\)을 바꾸어 넣어주면 \(\lim_{x\to 0}\frac{f(x)-(a+bx)}{x}=0 \Leftrightarrow \lim_{x\to 0}\frac{f(x)-(f(0)+bx)}{x}=0 \Leftrightarrow \\ \lim_{x\to 0}(\frac{f(x)-f(0)}{x}-b)=0 \Leftrightarrow f^\prime(0)-b=0 \Leftrightarrow f^\prime(0)=b\)

정리하면,
$$f(x)-(a+bx)=o(x) \Leftrightarrow f(0)=a, f^\prime(0)=b$$



[Note 3]
원점에서 \(f(x)\)에 가장 가까운 일차식이 존재한다 \(\Leftrightarrow\) 원점에서 미분가능하다.



[정의 3]
자연수 \(n\)에 대하여, 함수 \(f(x)\)가 \(f(0)=0\)이고 \(\lim_{x\to 0}\frac{f(x)}{x^n}=0\)이면, \(|f(x)|\ll|x^n|\) 또는 \(f(x)=o(x^n)\) 또는 \(f(x) \in o(x^n)\) 등으로 표시하고, "\(f\)는 (원점 근방에서) \(o(x^n)\)이다" 또는 "\(f(x)\)는 \(x^n\)보다 절대적으로 아주 작다"라고 말한다.



[Note 4]
\(f(x), g(x)\)가 \(o(x^n)\)이면 \(f(x)+g(x)\)도 \(o(x^n)\)이다.
\(o(x^n)+o(x^n)=o(x^n)\)



[Note 5]
자연수 \(n \geq m\)에 대하여 함수 \(f(x)\)가 \(o(x^n)\)이면, \(f(x)\)는 \(o(x^m)\)이다.

왜냐하면 \(\lim_{x\to 0}\frac{f(x)}{x^m}=\lim_{x\to 0}\frac{f(x) \times x^n}{x^n \times x^m}=\lim_{x\to 0}\frac{f(x)}{x^n} \times \lim_{x\to 0}\frac{x^n}{x^m}\)에서
\(\lim_{x\to 0}\frac{f(x)}{x^n}\)은 함수 \(f(x)\)가 \(o(x^n)\)이니 0이며,
\(\lim_{x\to 0}\frac{x^n}{x^m}\)은 \(n = m\)이면 \(1\)이고, \(n \geq m\)이면 0이다. 즉, \(\lim_{x\to 0}\frac{f(x) \times x^n}{x^n \times x^m}=0\)이다.
따라서, \(\lim_{x\to 0}\frac{f(x)}{x^m}=0\)이니 \(f(x)\)는 \(o(x^m)\)이다.



[정리 1]
\(f\) : 원점 근방에서 정의된 \(n\)번 미분가능한 함수
\(f(x)=o(x^n) \Leftrightarrow f(0)=0, f^\prime(0)=0,\cdots,f^{(n)}(0)=0\)

[\(\Leftarrow\) 방향 증명]
\(f(0)=0, f^\prime(0)=0,\cdots,f^{(n)}(0)=0 \Rightarrow \lim_{x\to 0}\frac{f(x)}{x^n}=0\)인걸 보이면 된다.

\(\lim_{x\to 0}\frac{f(x)}{x^n}\)에서 분자, 분모가 모두 0이니, 로피탈의 정리를 이용하면\(\lim_{x\to 0}\frac{f(x)}{x^n}=\lim_{x\to 0}\frac{f^\prime(x)}{nx^{n-1}}=\cdots=\lim_{x\to 0}\frac{f^{(n)}(x)}{n!}=0\)

[\(\Rightarrow\) 방향 증명]
\(f(x)=o(x^n) \Rightarrow f(0)=0, f^\prime(0)=0,\cdots,f^{(n)}(0)=0\)인걸 보이면 된다.

\(n\)에 대한 귀납법으로 증명한다.

\(n=1\)에 대해 성립하는 것은 [Note 1]에서 보였다.

\(n-1\)에 대해 정리가 성립한다고 가정하면
즉, \(f(x)=o(x^{n-1}) \Rightarrow f(0)=0, f^\prime(0)=0,\cdots,f^{(n-1)}(0)=0\) 성립한다고 가정한다.

\(f(x)=o(x^n)\)이면 \(f(x)=o(x^{n-1})\)인 것을 [Note 5]를 통해 알 수 있다.
\(f(x)=o(x^{n-1}) \Rightarrow f(0)=0, f^\prime(0)=0,\cdots,f^{(n-1)}(0)=0\) 성립한다고 가정했으니깐 \(f(x)=o(x^n)\)이면 \(f(0)=0, f^\prime(0)=0,\cdots,f^{(n-1)}(0)=0\)이다.
이제 \(f(x)=o(x^n)\)이면 \(f^{(n)}(0)=0\)만 보이면 된다.

\(\lim_{x\to 0}\frac{f(x)}{x^n}=0\)에서 로피탈의 정리를 이용하면
\(\lim_{x\to 0}\frac{f(x)}{x^n}=\lim_{x\to 0}\frac{f^\prime(x)}{nx}=\cdots=\lim_{x\to 0}\frac{f^{(n-1)}(x)}{n!x}=0\)
\(f^{(n-1)}(0)=0\)인걸 이용해 식을 변형하면 \(\frac{1}{n!}\lim_{x\to 0}\frac{f^{(n-1)}(x)-f^{(n-1)}(0)}{x-0}=0\)
이것은 \(f^{(n-1)}(x)\)를 한 번 더 미분한 것이니까 \(\frac{1}{n!}\lim_{x\to 0}\frac{f^{(n-1)}(x)-f^{(n-1)}(0)}{x-0}=\frac{f^{(n)}(0)}{n!}=0\)
따라서 \(f^{(n)}(0)=0\)



[연습문제]
두 \(n\)차 다항함수 \(p_1(x)\)와 \(p_2(x)\)의 차가 \(o(x^n)\)이면, \(p_1(x)=p_2(x)\)이다.

[증명]
\(n\)차 다항함수 \(p(x)=p_1(x)-p_2(x)\)가 \(o(x^n)\)이면
[정리 1]에 의해 \(p(0)=p^\prime(0)=\cdots=p^{(n)}(0)=0\) 이다.
\(n\)차 다항함수 \(p(x)\)는 \(p(0)+p^\prime(0)x+\cdots+\frac{p^{(n)}}{n!}x^n\) 으로 나타낼 수 있는데, \(p(0)=p^\prime(0)=\cdots=p^{(n)}(0)=0\) 이기 때문에 \(p(x)=0\)이다. 즉,
$$p(x)=p(0)+p^\prime(0)x+\cdots+\frac{p^{(n)}}{n!}x^n=0$$ 그러므로 \(p_1(x)=p_2(x)\) 이다.



[정의 4]
원점 근방에서 정의된 함수 \(f(x)\)에 대하여 다항함수 \(p(x)=p_0+p_1x+\cdots+p_nx^n\)가 \(f(x)-p(x)=o(x^n)\)를 만족시키면, \(p(x)\)를 '원점 근방에서 \(f(x)\)의 \(n\)차 근차다항식' 또는 '테일러 다항식'이라고 부른다.



[정리 2]
근사다항식의 존재성과 유일성

\(f(x)\)가 원점 근방에서 \(n\)번 미분가능한 함수이면 \(f(x)\)의 \(n\)차 근사다항식은 오직 한가지이고 다음과 같다.
$$T_nf(x):=f(0)+f^\prime(0)x+\cdots+\frac{f^{(n)}(0)}{n!}x_n$$

[존재성의 증명]
\(g(x):=f(x)-T_nf(x)\)는
\begin{split}
g(0)&=f(0)-T_nf(0)=0\\
g^\prime(0)&=f^\prime(0)-T_nf^\prime(0)=0\\
\cdots&=\cdots\\
g^{(n)}(0)&=f^{(n)}(0)-T_nf^{(n)}(0)=0\\
\end{split}
이므로 [정리 1]에 의해 \(g(x)=o(x^n)\) 즉, \(f(x)-T_nf(x)=o(x^n)\) 임을 안다.
즉, \(T_nf(x)\)가 \(f(x)\)의 \(n\)차 근사다항식이다.

[유일성의 증명]
만약 \(n\)차 다항식 \(p(x)=p_0+p_1x+\cdots+p_nx^n\)이 \(f(x)\)의 \(n\)차 근사다항식이면, 근사다항식의 정의에 의해 \(p(x)-f(x)=o(x^n)\)이다.

여기서, \(p(x)-T_nf(x)\)를 생각해 보면 \(p(x)-T_nf(x)=p(x)-f(x)+f(x)-T_nf(x)\) 와 같고, \(p(x)-f(x)\)는 \(o(x^n)\)이고 \(f(x)-T_nf(x)\)도 [존재성의 증명]에 의해 \(o(x^n)\)이다.
즉, \(p(x)-T_nf(x)=p(x)-f(x)+f(x)-T_nf(x)=o(x^n)+o(x^n)\) 이다.
\(o(x^n)+o(x^n)\)도 [Note 4]에 의해 \(o(x^n)\)이다. 즉,
$$p(x)-T_nf(x)=p(x)-f(x)+f(x)-T_nf(x)=o(x^n)$$
\(p(x)-T_nf(x)=o(x^n)\)이므로 [연습문제]에 의해 \(p(x)=T_nf(x)\)이다.



[보기 3]
\(f(x)=e^{-x^2}\)의 3차 근사다항식을 구하여라.

[풀이 1]
\begin{split}
f^\prime(x)&=-2xe^{-x^2}\\
f''(x)&=-2e^{-x^2}+(2x)^2e^{-x^2}=(4x^2-2)e^{-x^2}\\
f'''(x)&=8xe^{-x^2}+(4x^2-2)(-2x)e^{-x^2}\\
\end{split}
\(f(0)=1, f'(0)=0, f''(0)=-2, f'''(0)=0\)
따라서 구하는 근사다항식은 \(1-x^2\)이다.

[풀이 2]
\(e^x\)의 멱급수는 \(1+x+\frac{x^2}{2!}+\cdots\)라는 것을 이용한다. \(x\)대신에 \((-x^2)\)을 대입하면, \(e^{-x^2}=1+(-x^2)+\frac{(-x^2)^2}{2!}+\cdots=1-x^2+x^4(\frac{1}{2}+\cdots)\)이다.
여기서, \(x^4(\frac{1}{2}+\cdots)\)는 \(o(x^3)\)이기 때문에 \(e^{-x^2}=1-x^2+x^4(\frac{1}{2}+\cdots)=1-x^2+o(x^3)\) 이다. \(1-x^2\)를 좌변으로 이항하면, \(e^{-x^2}-(1-x^2)=o(x^3)\) 이다. 따라서 \(1-x^2\)는 [정의 4]에 따라 \(e^{-x^2}\)의 3차 근사다항식이다.

아래 붉은색이 \(e^{-x^2}\), 푸른색이 \(1-x^2\)으로 원점 근방에서 근사한 것을 볼 수 있다.