詳細検索

암호화된 HTTP 라이브 스트리밍

아바타
글쓴이 furuyamah
4분 읽기
태그

암호화된 HTTP 라이브 스트리밍
日本語에서 번역 • 원문 보기

이 방법은 저희 웹사이트에서 아이폰용 동영상을 배포하는 데 사용됩니다.

  • 주석

HTTP 라이브 스트리밍(암호화)
자세한 내용이지만, 암호화되어 있으면 잘 플레이할 수 없기 때문에 이렇게 정리하고 있습니다.

[아이폰, 아이패드, 아이팟 – 윈도우에서 무료 도구를 제공하는 HTTP 라이브 스트리밍(HLS)](http://www.tandasoft.com/2011/02/01/iphone-ipad-ipod-http-live-streaming-hls-with-free-tools-on-windows/ "iPhone, iPad, iPod – HTTP Live Streaming (HLS)
인코딩 옵션이 도움이 됩니다.

  • 정책

원본 비디오

MPEG2TS

분할

암호화

재생

  • 플랫폼

우분투 12.04

ffmpeg는 apt-get과 함께 설치됩니다.

  1. mpeg2ts로 분할 [코드 라이트="true"] ffmpeg -i ./hoge.3gp -f 세그먼트 -세그먼트_time 10 -세그먼트_list hoge.m3u8 -세그먼트_format MPEGTS -vcodec libx264 -vbsf h264_mp4toannexb -flags -global_header -r 30 -s 640x480 -qmax 51 -b 300k -g 150 -qcomp 0.7 -qmin 10 -qdiff 4 -subq 6 -ME_range 16 -i_qfactor 0.714286 -acodec libmp3lame -ar 48000 -ab 64k -g 30 hoge%05d.ts [/code]
    주요 인물
     -g는 프레임 속도와 같은 값(정수)을 지정합니다. 이 과정에서 각 세그먼트 파일의 시작 부분에 IDR-Frame이 삽입됩니다.
     이렇게 하지 않으면 암호화하면 정상적으로 플레이할 수 없습니다. (암호화하지 않으면 이상하게도 문제없이 플레이할 수 있습니다.)

  2. 암호화 키 생성
    [코드 lang="shell" light="true"] #/bin/sh keyFile="key.txt" openSSL Rand 16 > $keyFile [/code]
    암호화
    crypt.sh
    [코드 lang="shell" light="true"] #/bin/sh hexKey=$(cat $4 | hexdump -e '16/1 "%02x"') hexIV='printf '%032x' $3' openssl aes-128-cbc -e -in $1 -out $2 -p -nosalt -iv ${hexIV} -K ${hexKey} [/code] crypt.sh [대상 파일] [출력 목적지] [일련번호] [키]

주요 인물
 iv 연속번호를 지정하지 않으면 아이폰 쪽 복호화가 작동하지 않고 정상적으로 재생되지 않습니다.

재생목록 만들기(m3u8)
[코드 라이트="true"] #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-KEY:METHOD=AES-128,URI="https://[키 위치]" #EXTINF:10, http://[ts 파일 위치] #EXTINF:10, http://[ts 파일 위치] . . #EXT-X-엔드리스트 [/코드]
20. 재탄생

Apache 구성
    아파치의 마임에 추가하세요.
[code light="true"] application/x-mpegURL m3u8 video/MP2T ts [/code]
    add to conf [code light="true"] AddType application/x-mpegURL .m3u8 AddType 비디오/MP2T .ts [/code] 재생 페이지
비디오 태그
[코드 lang="html" light="true"] [/code]

Related Articles