사용자 도구

사이트 도구


project:personalstreaming

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

project:personalstreaming [2013/02/10 06:58] – [실습해보기] 127.0.0.1project:personalstreaming [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1
줄 39: 줄 39:
     * 물론 요즘 디지털 카메라들은 어마어마한 화수 수를 자랑하지만, 어쨌든 연속된 신호 형태로 기록하는 건 아니니 띄엄띄엄입니다.     * 물론 요즘 디지털 카메라들은 어마어마한 화수 수를 자랑하지만, 어쨌든 연속된 신호 형태로 기록하는 건 아니니 띄엄띄엄입니다.
     * 아무리 좋은 디지털 카메라라도 촬영된 영상을 확대하고 확대하면 결국 우측 위 사진처럼 깍두기 현상 - 계단 현상이 일어나기 마련입니다.      * 아무리 좋은 디지털 카메라라도 촬영된 영상을 확대하고 확대하면 결국 우측 위 사진처럼 깍두기 현상 - 계단 현상이 일어나기 마련입니다. 
-    * 샘플링은 가역적인 작업입니다. 현실 세계를 샘플링해 사진으로 만들 수 있지만, 그 반대로 사진으로 현실 세계를 만들 수는 없습니다.+    * 샘플링은 가역적인 작업입니다. 현실 세계를 샘플링해 사진으로 만들 수 있지만, 그 반대로 사진으로 현실 세계를 만들 수는 없습니다.
     * 샘플링된 빛은 보통 사각 모눈과 같이 빛의 3원색인 적, 녹, 청 3색의 강도(intensity)로 표현됩니다. 즉 빛의 세기가 숫자로 표현되는 것입니다. \\ \\     * 샘플링된 빛은 보통 사각 모눈과 같이 빛의 3원색인 적, 녹, 청 3색의 강도(intensity)로 표현됩니다. 즉 빛의 세기가 숫자로 표현되는 것입니다. \\ \\
   - 보통 이렇게 샘플링된 데이터를 일컬어 '원본 데이터'라고 합니다. 보통 멀티미디어의 원본 데이터는 분량이 상당합니다.   - 보통 이렇게 샘플링된 데이터를 일컬어 '원본 데이터'라고 합니다. 보통 멀티미디어의 원본 데이터는 분량이 상당합니다.
줄 155: 줄 155:
  
 첫번째 예는 1 프레임만 추출. 두번째 예는 10프레임을 ''screenshot_01.png'', ''screenshot_02.png'', ... 로 추출한다. 첫번째 예는 1 프레임만 추출. 두번째 예는 10프레임을 ''screenshot_01.png'', ''screenshot_02.png'', ... 로 추출한다.
 +
 +== 영상 파일의 일부분만을 잘라냄 ==
 +  ffmpeg -ss <시작시간> -t <재생시간> -i <입력파일> -acodec copy -vcodec copy <출력파일>
 +
 +  * 시작시간: 00:00:00 과 같이 입력
 +  * 재생시간: 시작 시간부터 잘라낼 시간. 시작 시간과 마찬가지로 입력
 +
 +
  
 == 기타 == == 기타 ==
줄 567: 줄 575:
 파일들을 서버에 위치시키고, 테스트해 보았습니다. 처음에는 'L' 글씨가 나오다가 10초 후에 'H'로 변경되었습니다. 그리고 동영상이 끝날 때까지 'H' 글자가 변하지 않습니다. 살짝 문제가 있습니다. 요즘 워낙 인터넷 속도가 빠른 게 문제입니다. 모바일 장치의 대역폭을 임의로 조절해야 하는데, 장치의 대역폭을 물리적으로 변경하기는 조절하기는 쉽지 않습니다. \\ 이럴 때는 ahls.m3u8의 BANDWIDTH 값을 장치의 대역폭에 맞추여 상대적으로 조정하면 됩니다. 값을 적절히 조정하면, 10초 이후 영상에서 'M' 글자가 나오는 것을 확인할 수 있습니다. 아예 mi와 hi의 BANDWIDTH를 회선 속도가 미칠 수 없는 수치까지 올려버리면 영상은 계속 'L'만을 출력할 것입니다. 또한 10초 이후 'M'이나 'H'가 출력될 때, 영상의 슬라이더 바를 옮겨 0초부터 다시 재생을 해 보세요. 0초부터에서도 'M'이나 'H'가 나오는 것을 확인할 수 있습니다. 파일들을 서버에 위치시키고, 테스트해 보았습니다. 처음에는 'L' 글씨가 나오다가 10초 후에 'H'로 변경되었습니다. 그리고 동영상이 끝날 때까지 'H' 글자가 변하지 않습니다. 살짝 문제가 있습니다. 요즘 워낙 인터넷 속도가 빠른 게 문제입니다. 모바일 장치의 대역폭을 임의로 조절해야 하는데, 장치의 대역폭을 물리적으로 변경하기는 조절하기는 쉽지 않습니다. \\ 이럴 때는 ahls.m3u8의 BANDWIDTH 값을 장치의 대역폭에 맞추여 상대적으로 조정하면 됩니다. 값을 적절히 조정하면, 10초 이후 영상에서 'M' 글자가 나오는 것을 확인할 수 있습니다. 아예 mi와 hi의 BANDWIDTH를 회선 속도가 미칠 수 없는 수치까지 올려버리면 영상은 계속 'L'만을 출력할 것입니다. 또한 10초 이후 'M'이나 'H'가 출력될 때, 영상의 슬라이더 바를 옮겨 0초부터 다시 재생을 해 보세요. 0초부터에서도 'M'이나 'H'가 나오는 것을 확인할 수 있습니다.
  
-제가 직접 아이패드로 테스트한 결과를 비디오로 촬영하여 YouTube에 업로드 하였습니다. [[http://youtu.be/O5vMvbYCENI|여기]]와 [[http://youtu.be/CsYWjCKwpIc|여기]]서 확인하실 수 있습니다.+제가 직접 아이패드로 테스트한 결과를 비디오로 촬영하여 YouTube에 업로드 하였습니다. [[http://youtu.be/nICjZ-BWEC4|여기]]와 [[http://youtu.be/pYQWaSyzOvA|여기]]서 확인하실 수 있습니다.
  
 아래는 작업한 파일들을 zip 파일로 압축한 것입니다. \\ 아래는 작업한 파일들을 zip 파일로 압축한 것입니다. \\
줄 577: 줄 585:
 지금까지 HTTP Live Streaming에 대해 소개하고 VLC media player를 이용해 동영상 파일을 트랜스코딩하여 네트워크를 통해 전송하는 예를 들어 보았습니다. 이 기술은 사실 웹과 음성, 그리고 영상 데이터까지 처리해야 하므로 그 기반은 매우 다채롭고 복잡합니다. 문서는 개론적인 사항들에 대해서만 간결히 소개하는 정도로 그칩니다. 이 이후의 더욱 자세한 사항은 영상 처리 및 압축 기술에 대한 이해를 필요로 할 것입니다. 서버 운영에 대한 지식도 필요하겠죠. 쉽지 않습니다. ;-) 지금까지 HTTP Live Streaming에 대해 소개하고 VLC media player를 이용해 동영상 파일을 트랜스코딩하여 네트워크를 통해 전송하는 예를 들어 보았습니다. 이 기술은 사실 웹과 음성, 그리고 영상 데이터까지 처리해야 하므로 그 기반은 매우 다채롭고 복잡합니다. 문서는 개론적인 사항들에 대해서만 간결히 소개하는 정도로 그칩니다. 이 이후의 더욱 자세한 사항은 영상 처리 및 압축 기술에 대한 이해를 필요로 할 것입니다. 서버 운영에 대한 지식도 필요하겠죠. 쉽지 않습니다. ;-)
  
-한편 예제를 통해 스트리밍이 올바로 되는 것은 확인하였지만, 쓰기 편하고 예쁘게 다듬는 일은 별의 힘들고 고된 작업입니다. 혼자만으로는 거의 불가능하며, 더더욱 많은 시간과 노력을 필요로 합니다. 예를 들어 파이썬 기반으로 웹 앱을 만들 거라면 '[[https://www.djangoproject.com/|장고(Djago)]]'와 같은 프레임워크가 붙여야 할 겁니다. 차후 장고에 대한 튜토리얼 형식으로 문서의 내용을 심화시켜볼 생각은 갖고 있습니다. 그러나 완성도 높은 여타 프로젝트가 있으니 확실한 목표 없이 '바퀴를 다시 만들' 필요는 없지 않을까 생각합니다.+한편 예제를 통해 HLS를 직접 실험해 보았습니다. 기본적인 HLS는 VLC의 기반으로 간편하게 구현할 수 있었습니다. 이를 통해 HLS는 기존의 웹서버를 크게 변경시키지 않고도 멀티미디어의 스트리밍이 가능함을 확인했습니다. 한편 AHLS에서는 사용자의 네트워크 환경에 맞추어 스트리밍되는 파일의 품질이 동적으로 변경되는 것을 확인하였습니다. 
 + 
 +문서를 통해 스트리밍의 개념과 단순한 동작은 확인하였지만, 사용자가 보다 쓰기 좋도록 다듬는 일은 전혀 의 작업이며, 매우 힘들고 고된 작업입니다. 혼자만으로는 거의 불가능하며, 매우 많은 시간과 노력을 투자해야 합니다. 만약 파이썬 기반으로 웹 앱을 만들 거라면 '[[https://www.djangoproject.com/|장고(Djago)]]'와 같은 프레임워크가 붙여야 할 것이고, 원활한 스트리밍을 위해서라면 튼튼하고 성능이 뛰어난 인코더 장비가 따로 있어야 할 겁니다. 차후 장고에 대한 튜토리얼 형식으로 문서의 내용을 심화시켜볼 생각은 갖고 있습니다. 그러나 완성도 높은 여타 프로젝트가 있으니 확실한 목표 없이 '바퀴를 다시 만들' 필요는 없지 않을까 생각합니다.
  
 ===== 부록: 참조 링크 ===== ===== 부록: 참조 링크 =====
project/personalstreaming.1360479533.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki