project:personalstreaming
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| project:personalstreaming [2013/02/10 06:41] – [M3U8 파일의 태그 내용 추가] 192.168.0.3 | project:personalstreaming [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 39: | 줄 39: | ||
| * 물론 요즘 디지털 카메라들은 어마어마한 화수 수를 자랑하지만, | * 물론 요즘 디지털 카메라들은 어마어마한 화수 수를 자랑하지만, | ||
| * 아무리 좋은 디지털 카메라라도 촬영된 영상을 확대하고 확대하면 결국 우측 위 사진처럼 깍두기 현상 - 계단 현상이 일어나기 마련입니다. | * 아무리 좋은 디지털 카메라라도 촬영된 영상을 확대하고 확대하면 결국 우측 위 사진처럼 깍두기 현상 - 계단 현상이 일어나기 마련입니다. | ||
| - | * 샘플링은 가역적인 작업입니다. 현실 세계를 샘플링해 사진으로 만들 수 있지만, 그 반대로 사진으로 현실 세계를 만들 수는 없습니다. | + | * 샘플링은 |
| * 샘플링된 빛은 보통 사각 모눈과 같이 빛의 3원색인 적, 녹, 청 3색의 강도(intensity)로 표현됩니다. 즉 빛의 세기가 숫자로 표현되는 것입니다. \\ \\ | * 샘플링된 빛은 보통 사각 모눈과 같이 빛의 3원색인 적, 녹, 청 3색의 강도(intensity)로 표현됩니다. 즉 빛의 세기가 숫자로 표현되는 것입니다. \\ \\ | ||
| - 보통 이렇게 샘플링된 데이터를 일컬어 ' | - 보통 이렇게 샘플링된 데이터를 일컬어 ' | ||
| 줄 155: | 줄 155: | ||
| 첫번째 예는 1 프레임만 추출. 두번째 예는 10프레임을 '' | 첫번째 예는 1 프레임만 추출. 두번째 예는 10프레임을 '' | ||
| + | |||
| + | == 영상 파일의 일부분만을 잘라냄 == | ||
| + | ffmpeg -ss < | ||
| + | |||
| + | * 시작시간: | ||
| + | * 재생시간: | ||
| + | |||
| + | |||
| == 기타 == | == 기타 == | ||
| 줄 501: | 줄 509: | ||
| ==== 실습해보기 ==== | ==== 실습해보기 ==== | ||
| - | VLC로 간편하게 라이브 스트리밍을 할 수는 없지만, 조금 불편해도 미리 | + | VLC가 아직 AHLS를 지원하지 |
| 우선 석 장의 아주 간단한 그림 파일을 만들었습니다. | 우선 석 장의 아주 간단한 그림 파일을 만들었습니다. | ||
| 줄 509: | 줄 517: | ||
| {{: | {{: | ||
| - | ' | + | ' |
| < | < | ||
| lame hi.wav hi.mp3 | lame hi.wav hi.mp3 | ||
| 줄 515: | 줄 523: | ||
| lame lo.wav lo.mp3 | lame lo.wav lo.mp3 | ||
| </ | </ | ||
| - | 그다음 ffmpeg을 이용해 영상과 소리를 합쳐 각 10초의 재생 시간을 가진 동영상으로 만들어냅니다. 실제 서비스에 사용될 동영상은 비트레이트 | + | 그다음 ffmpeg을 이용해 영상과 소리를 합쳐 각 10초의 재생 시간을 가진 동영상으로 만들어냅니다. 실제 서비스에 사용될 동영상은 비트레이트 |
| < | < | ||
| ffmpeg -loop 1 -i hi.jpg -i hi.wav -acodec aac -ac 2 -strict experimental -ab 40k -vcodec libx264 -preset slow -profile:v baseline -level 31 -b:v 600k -f mpegts -threads 0 -y -t 10 hi.ts | ffmpeg -loop 1 -i hi.jpg -i hi.wav -acodec aac -ac 2 -strict experimental -ab 40k -vcodec libx264 -preset slow -profile:v baseline -level 31 -b:v 600k -f mpegts -threads 0 -y -t 10 hi.ts | ||
| 줄 524: | 줄 531: | ||
| ffmpeg -loop 1 -i lo.jpg -i lo.wav -acodec aac -ac 2 -strict experimental -ab 40k -vcodec libx264 -preset slow -profile:v baseline -level 31 -b:v 110k -f mpegts -threads 0 -y -t 10 lo.ts | ffmpeg -loop 1 -i lo.jpg -i lo.wav -acodec aac -ac 2 -strict experimental -ab 40k -vcodec libx264 -preset slow -profile:v baseline -level 31 -b:v 110k -f mpegts -threads 0 -y -t 10 lo.ts | ||
| </ | </ | ||
| - | 각 파일을 모두 5개씩 사본을 만들어 H, M, L이 각각 1분간 재생되도록 만들었습니다. 그리고 파일의 이름은 알맞게 {hi, mi, lo}_{0-5}.ts로 변경했습니다. | + | 각 파일을 모두 5개씩 사본을 만들어 H, M, L이 각각 1분간 재생되도록 만들었습니다. 그리고 파일의 이름은 알맞게 {hi, mi, lo}_{0-5}.ts로 변경했습니다. |
| - | + | 이제 플레이 리스트를 만들어야 합니다. | |
| - | 이제 플레이 리스트를 만들어야 합니다. | + | |
| < | < | ||
| #EXTM3U | #EXTM3U | ||
| 줄 553: | 줄 559: | ||
| </ | </ | ||
| - | 'lo' 부분은 적절히 mi, hi로 변경하여 | + | 'hi' 부분은 적절히 mi, lo로 변경하여 |
| < | < | ||
| #EXTM3U | #EXTM3U | ||
| 줄 567: | 줄 573: | ||
| </ | </ | ||
| - | 파일들을 서버에 위치시키고, | + | 파일들을 서버에 위치시키고, |
| - | 제가 직접 아이패드로 테스트한 결과를 비디오로 촬영하여 YouTube에 업로드 하였습니다. [[http:// | + | 제가 직접 아이패드로 테스트한 결과를 비디오로 촬영하여 YouTube에 업로드 하였습니다. [[http:// |
| - | + | ||
| - | 아래는 작업한 파일들을 zip 파일로 압축한 것입니다. | + | |
| + | 아래는 작업한 파일들을 zip 파일로 압축한 것입니다. \\ | ||
| {{: | {{: | ||
| 줄 580: | 줄 585: | ||
| 지금까지 HTTP Live Streaming에 대해 소개하고 VLC media player를 이용해 동영상 파일을 트랜스코딩하여 네트워크를 통해 전송하는 예를 들어 보았습니다. 이 기술은 사실 웹과 음성, 그리고 영상 데이터까지 처리해야 하므로 그 기반은 매우 다채롭고 복잡합니다. 문서는 개론적인 사항들에 대해서만 간결히 소개하는 정도로 그칩니다. 이 이후의 더욱 자세한 사항은 영상 처리 및 압축 기술에 대한 이해를 필요로 할 것입니다. 서버 운영에 대한 지식도 필요하겠죠. 쉽지 않습니다. ;-) | 지금까지 HTTP Live Streaming에 대해 소개하고 VLC media player를 이용해 동영상 파일을 트랜스코딩하여 네트워크를 통해 전송하는 예를 들어 보았습니다. 이 기술은 사실 웹과 음성, 그리고 영상 데이터까지 처리해야 하므로 그 기반은 매우 다채롭고 복잡합니다. 문서는 개론적인 사항들에 대해서만 간결히 소개하는 정도로 그칩니다. 이 이후의 더욱 자세한 사항은 영상 처리 및 압축 기술에 대한 이해를 필요로 할 것입니다. 서버 운영에 대한 지식도 필요하겠죠. 쉽지 않습니다. ;-) | ||
| - | 한편 예제를 통해 스트리밍이 | + | 한편 예제를 통해 |
| + | |||
| + | 문서를 통해 스트리밍의 개념과 단순한 동작은 확인하였지만, | ||
| ===== 부록: 참조 링크 ===== | ===== 부록: 참조 링크 ===== | ||
project/personalstreaming.1360478468.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)
