반응형

VLC version: VLC media player 1.1.9

테스트한 OS: Ubuntu 11.04 (32bit), Ubuntu 12.04 (64bit)


스트리밍으로 받은 비디오의 품질을 측정하기 위해서, 받은 비디오 스트림을 그대로 YUV 형식의 파일로 저장할 필요가 생겼다. 검색해 보니 VLC media player에서 transcode를 이용해서 YUV 형식(raw 형식)의 파일을 내보낼 수 있다. 실험할 때는 굳이 비디오를 눈으로 볼 필요가 없으므로 command line mode에서 작업을 하였다.


$ cvlc [스트리밍 콘텐츠 주소] --noaudio --sout '#transcode{vcodec:I420}:std{access=file,mux=raw,dst='[저장할 yuv파일 경로와 이름]'}'


참고로 vcodec에 적힌 I420은 YUV format의 한 종류이다. I420, I422, I444 등 여러가지 종류가 있는데, 일단 가장 흔히 언급되는 I420에 대해서만 테스트를 하였다. 각 포맷에 대한 설명은 https://wiki.videolan.org/YUV/ 에서 확인할 수 있다.


예를 들어, 192.168.2.3 에서 HTTP streaming (port 8080)으로 test라는 콘텐츠를 열어 놓았고, 이를 output.yuv 파일에 저장할 경우:

$ cvlc http://192.168.2.3:8080/test --noaudio --sout '#transcode{vcodec:I420}:std{access=file,mux=raw,dst='output.yuv'}'


마찬가지로, 로컬에 있는 원본 비디오 파일에 대한 원본 YUV 생성도 같은 방법으로 가능하다. 

예를 들어, 원본 비디오 파일이 /home/usera/original.mp4 위치에 있을 경우:

$ cvlc /home/usera/original.mp4 --noaudio --sout '#transcode{vcodec:I420}:std{access=file,mux=raw,dst='output_original.yuv'}'



문제는, 스트리밍 서버에서 무한반복을 해 놓으면, 받는 쪽에서 중단하지 않으면 위의 명령은 무한정 수행되고, 엄청난 용량의 YUV 파일이 생성될 수도 있다. 스트리밍 콘텐츠의 처음부터 끝까지 재생이 완료되면 중단하고 싶은데, 이것은 어떻게 해야 하는지 모르겠다. ㅜㅜ 

현재로써는 적당한 선에서 Ctrl + C를 눌러서 중단하는 방법이 최선인 듯 하다...



반응형
블로그 이미지

Bryan_

,