FMUSER 무선 전송 비디오 및 오디오가 더 쉬워졌습니다!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> 아프리칸스어
sq.fmuser.org -> 알바니아어
ar.fmuser.org -> 아랍어
hy.fmuser.org -> 아르메니아어
az.fmuser.org -> 아제르바이잔 어
eu.fmuser.org -> 바스크
be.fmuser.org -> 벨로루시 어
bg.fmuser.org -> 불가리아어
ca.fmuser.org -> 카탈로니아 어
zh-CN.fmuser.org -> 중국어 (간체)
zh-TW.fmuser.org -> 중국어 (번체)
hr.fmuser.org -> 크로아티아어
cs.fmuser.org -> 체코
da.fmuser.org -> 덴마크어
nl.fmuser.org -> 네덜란드어
et.fmuser.org -> 에스토니아어
tl.fmuser.org -> 필리피노
fi.fmuser.org -> 핀란드어
fr.fmuser.org -> 프랑스어
gl.fmuser.org -> 갈리시아어
ka.fmuser.org -> 조지아 어
de.fmuser.org -> 독일어
el.fmuser.org -> 그리스
ht.fmuser.org -> 아이티 크리올
iw.fmuser.org -> 히브리어
hi.fmuser.org -> 힌디어
hu.fmuser.org 헝가리어
is.fmuser.org -> 아이슬란드 어
id.fmuser.org -> 인도네시아어
ga.fmuser.org -> 아일랜드어
it.fmuser.org -> 이탈리아어
ja.fmuser.org -> 일본어
ko.fmuser.org -> 한국어
lv.fmuser.org -> 라트비아어
lt.fmuser.org 리투아니아어
mk.fmuser.org -> 마케도니아 어
ms.fmuser.org -> 말레이어
mt.fmuser.org -> 몰타어
no.fmuser.org -> 노르웨이어
fa.fmuser.org -> 페르시아어
pl.fmuser.org -> 폴란드어
pt.fmuser.org -> 포르투갈어
ro.fmuser.org -> 루마니아어
ru.fmuser.org -> 러시아어
sr.fmuser.org -> 세르비아어
sk.fmuser.org -> 슬로바키아어
sl.fmuser.org -> 슬로베니아어
es.fmuser.org -> 스페인어
sw.fmuser.org -> 스와힐리
sv.fmuser.org -> 스웨덴어
th.fmuser.org -> 태국
tr.fmuser.org -> 터키어
uk.fmuser.org -> 우크라이나어
ur.fmuser.org -> 우르두어
vi.fmuser.org -> 베트남어
cy.fmuser.org -> 웨일스 어
yi.fmuser.org -> 이디시어
배경
MP4는 일반적인 비디오 형식이며 종종 서버 비디오를 재생할 때 요청 된 MP4 비디오 소스가됩니다. 그러나 사실 이것은 좋지 않습니다. MP4 헤더 파일 [ftyp + moov]은 용량이 커서 초기 재생시 전체 헤더 파일을 다운로드하여 분석 한 다음 재생 가능한 특정 길이의 비디오 클립을 다운로드하여 재생해야합니다. 또한 동영상의 크기가 커질수록 헤더 파일은 계속 커지고 초기 재생 시간이 길어집니다. 이러한 상황을 감안하면 영상의 초기 분석 속도를 높일 수있는 방법이 필요하다. HLS는이 문제를 해결하기 위해 Apple에서 제안한 솔루션입니다.
HLS
HLS는 HTTP Live Streaming의 약자입니다. Apple에서 제안한 HTTP 기반 스트리밍 미디어 네트워크 전송 프로토콜입니다. 라이브 및 온 디맨드를 동시에 지원할 수있을뿐만 아니라 다중 해상도, 오디오 및 비디오 듀얼 트랙, 자막 및 기타 기능을 지원할 수 있습니다. 그 원리는 전체 비디오를 여러 개의 작은 비디오로 나누는 것이며, 이러한 세그먼트를 연결하여 완전한 재생이 이루어집니다.
HLS는 모바일 단말기에서 널리 사용됩니다. HLS 프로토콜을 지원하는 현재 클라이언트는 다음과 같습니다.
iOS 3.0 이상, AVPlayer는 기본적으로 HLS를 지원합니다.
Android 3.0 이상
Adobe Flash Player 11.0 이상
일반적인 원칙은 다음과 같습니다.
1. 오디오 및 비디오 수집
2. 서버에서 오디오 및 비디오 인코딩
3. 인코딩 후 MPEG-2 전송 스트림의 형태로 Stream Segmenter에 넘깁니다.
4. 슬라이서는 인덱스 파일과 TS 재생 목록을 만들고 인덱스 파일은 오디오 및 비디오의 위치를 나타내는 데 사용되며 ts는 실제 멀티미디어 클립입니다.
5. 이전 단계의 리소스를 HTTP 서버에 배치합니다.
6. 클라이언트는 재생을 위해 인덱스 파일을 요청하고, 인덱스 파일을 통해 재생 내용을 찾을 수 있습니다.
M3U8
HLS를 실현하기위한 핵심 단계는 위의 네 번째 단계, 즉 인덱스 파일 및 TS 재생 목록의 구성입니다. 여기서는 M3U8 형식이 사용됩니다. M3U8은 M3U의 유니 코드 버전이고 8은 UTF-8 인코딩이 사용됨을 의미하며 M3U와 M3U8은 모두 멀티미디어 목록의 파일 형식입니다.
M3U8 형식 설명
때로는 테스트를 위해 또는 일부 특수한 경우 M3U8 파일의 내용을 수동으로 수정해야 할 수 있으므로 형식에 대해 어느 정도 이해해야합니다. 이 형식의 정의는 RFC 8216 문서에 기록되어 있습니다. 다음은 몇 가지 참고 사항입니다.
M3U8 파일은 UTF-8로 인코딩되어야하며 BOM (Byte Order Mark) 바이트 순서를 사용할 수 없으며 utf-8 제어 문자 (U + 0000 ~ U_001F 및 U + 007F ~ u + 009F)를 포함 할 수 없습니다.
M3U8 파일 콘텐츠의 각 줄은 빈 줄, URI 또는 #으로 시작하는 문자열이며 빈 문자는 나타날 수 없습니다.
내장 태그는 #EXT로 시작하는 모든 문자열이며 대소 문자를 구분합니다.
URI는 상대 경로 또는 절대 경로 일 수있는 콘텐츠 경로입니다.
마스터 M3U8 목록 파일
기본 M3U8 색인 파일은 일반적으로 여러 색인 소스를 지정하는 데 사용됩니다. 먼저 주 m3u8 파일 hls_vod_mvp.m3u8의 내용을 분석해 보겠습니다. 머리는 다음과 같습니다.
헤더 형식
#EXTM3U
# EXT-X-VERSION : 7
# EXT-X-INDEPENDENT-SEGMENTS 코드 복사
# EXTM3U는 파일이 M3U 형식이며 모든 M3U 형식 파일은 첫 번째 줄에 내용을 넣어야 함을 나타냅니다.
# EXT-X-VERSIOn은 현재 7 인 재생 목록의 호환 버전을 나타냅니다.
# EXT-X-INDEPENDENT-SEGMENTS이 태그는 미디어 세그먼트의 모든 미디어 샘플이 다른 미디어 세그먼트 정보에 의존하지 않고 독립적으로 디코딩 될 수 있음을 나타냅니다.
자막 형식
아래 내용은 일부 캡션이며, 캡션 내용은 필요하지 않습니다.
# EXT-X-MEDIA : TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA : TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA : TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "일본어", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpn / prog_index.m3u8 "
# EXT-X-MEDIA : TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "일본어", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA : TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA : TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "중국어", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "코드 복사
# EXT-X-MEDIA는 동일한 콘텐츠의 다국어 미디어 목록 리소스를 지정하는 데 사용됩니다.
TYPE은 리소스 유형이며 선택적 콘텐츠는 AUDIO, VIDEO, SUBTITLES, CLOSED-CAPTIONS입니다.
위의 내용은 자막 유형 인 TYPE = SUBTITLES를 설정합니다.
GROUP-ID는 다국어 번역이 속한 그룹이며 필수 매개 변수입니다.
NAME은 읽을 수있는 번역 스트림의 설명 정보이며이 값은 AVMediaSelectionOption의 displayName에 해당합니다.
DEFAULT, AUTOSELECT, FORCED는 필요한 정보가 누락 된 경우 번역 스트림이 기본적으로 선택되는지 여부에 해당하는 세 가지 BOOL 값입니다. 사용자가 설정을 표시하지 않으면 재생 스트림이 재생됩니다. FORCED는 자막 유형에만 유효하며 번역 스트림의 현재 자동 선택을 표시하는 데 사용됩니다. .
LANGUAGE는 [ISO 639 언어 코드]에 따라 설정된 언어 유형을 지정하는 데 사용됩니다 (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm "ISO 639 언어 코드") 표준. 시스템 기본 플레이어가 자막을 선택하면 표시되는 자막 목록의 이름이이 값에 따라 설정됩니다.
URI는 리소스의 위치 정보이며 여기에서 자막이있는 M3U8 파일에 해당합니다. subtitles / eng / prog_index.m3u8은 상대 경로이고,
위의 정보를 통해 위 내용의 의미를 다음과 같이 분석 할 수 있습니다. 현재 영상은 영어, 일본어, 중국어의 세 가지 자막을 지원합니다. 그러나 각 언어에는 두 개의 EXT-X-MEDIA 메시지가 있습니다. 그들 사이의 차이점은 그룹화입니다. 하나는 subs로 그룹화되고 다른 하나는 subsC로 그룹화됩니다. 왜 두 그룹이 있습니까? 이것에 대해서는 나중에 이야기하겠습니다.
비디오 포맷
비디오 콘텐츠의 인덱스를 다시 확인하십시오.
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF :이 속성은 백업 소스, 즉 비디오 재생 경로 및 일부 비디오 정보를 지정합니다. 다음은 해당 콘텐츠의 구성입니다. BANDWIDTH는 최고 비트 전송률이고 827299는 827299bit / s로 최고 최고 시간입니다. 초당 101KB의 트래픽을 소비합니다.
AVERAGE-BANDWIDTH는 평균 비트 전송률, 747464입니다.
CODECS는 인코딩 정보, avc1.64001f, mp4a.40.2, avc는 h264 인코딩 형식을 나타내며, 다음 64001f는 64 진수로 표현되는 인코딩 매개 변수이고, 00, 1, 4f는 각각 세 가지 다른 매개 변수 값을 나타냅니다. mp40.2a는 오디오 코딩 형식이며 다음 XNUMX는 오디오 코딩 매개 변수를 나타냅니다.
RESOLUTION은 비디오 해상도입니다. 현재 비디오 소스 해상도는 640x360입니다.
FRAME-RATE는 최대 프레임 속도, 29.970은 현재 재생의 최대 프레임 속도가 초당 29.970 프레임임을 나타냅니다.
AUDIO는 오디오 그룹이고 program_audio는 해당 오디오 그룹의 이름입니다.
SUBTITLES는 해당 자막 그룹을 나타내며 subs는 해당 자막 그룹의 이름입니다. 위의 자막 정보에는 GROUP-ID가 있으며이 값이 이에 해당합니다.
URI는 콘텐츠 경로이고 0640 / 0640.m3u8은 비디오 소스의 m3u8 파일 경로에 해당합니다. 이는 패킷 캡처 정보에서 볼 수 있습니다.
EXT-X-STREAM-INF 아래에는 재생 목록 파일에 포함 된 멀티미디어 리소스의 I 프레임 (키 프레임)을 나타내는 EXT-XI-FRAME-STREAM-INF가 있습니다. I 프레임은 사진 일 뿐이므로 오디오 콘텐츠가 포함되지 않고 나머지 매개 변수는 비디오 콘텐츠 형식과 일치합니다.
그 후 1920x1080, 1280x720, 960x540, 480x270의 다양한 해상도에 해당하는 비디오 소스가 있습니다. HLS는 네트워크 상황에 따라 자동으로 해상도를 전환하므로 일반적으로 여러 해상도를 선택할 수 있습니다. 캡처 된 데이터의 분석에 따르면 재생되는 첫 번째 세그먼트는 640 해상도, 그 후 두 번째에서 8 세그먼트는 480 해상도, 그리고 640 해상도로 전환됩니다.
오디오 포맷
아래를 내려다 보는 것은 해당 오디오의 인덱스입니다.
# EXT-X-MEDIA : TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audio1 / audio1.m3u8"Copy 암호
# EXT-X-MEDIA가 위에 나타 났지만 여러 언어 목록은 언급하지 않았습니다.
TYPE = AUDIO, 이번에는 유형이 오디오입니다.
GROUP-ID는 EXT-X-STREAM-INF의 AUDIO 콘텐츠에 해당하는 그룹 ID입니다.
URI = audio1 / audio1.m3u8은 오디오 경로에 해당합니다.
다른 인코딩 형식의 대체 소스
기본 M3U8 파일에서 위의 640 해상도와 동일하지 않은 640 해상도 비디오 소스도 볼 수 있습니다. 그 내용은 다음과 같습니다.
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA : TYPE = AUDIO, GROUP-ID = "program_audio_0", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audioc / prog_index.m3u8"Copy 암호
CODECS 인코딩 형식은 hvc1.2.4.H150.B0, mp4a.40.2이며 오디오 인코딩 형식은 변경되지 않았지만 비디오 인코딩 형식은 변경되었습니다. hvc1은 HEVC (H265) 인코딩 형식 중 하나입니다. Apple에서 출시 한 차세대 비디오 인코딩 형식입니다. 호환성 문제로 인해 많은 클라이언트가이 형식을 구문 분석 할 수 없으므로 그다지 인기가 없습니다. 이 형식의 비디오 소스가 나타납니다. 여기에서 백업해야합니다. 동일한 해상도의 두 콘텐츠를 비교해 보면 hvc1 형식의 비트율이 avc1 형식보다 높은 것을 알 수 있는데, 이는 같은 해상도에서 hvc1의 콘텐츠가 더 크고 avc1의 압축률이 더 높다는 것을 보여줍니다.
hvc1 형식 비디오 소스에 따라 자막 콘텐츠 그룹 및 오디오 콘텐츠 그룹도 변경되었으므로 위의 자막에 동일한 언어의 복사본이 두 개 있고 avc1 및 hvc1 형식의 비디오 소스에 해당합니다.
M3U8의 주요 목록입니다. 이 콘텐츠의 오디오 및 비디오는 개별적으로 처리되지만 결합 될 수도 있습니다.
미디어 정보가 포함 된 M3u8 파일
0640.m3u8 파일을 예로 들어 보겠습니다.
#EXTM3U
# EXT-X-VERSION : 4
# EXT-X-TARGETDURATION : 7
# EXT-X-MEDIA-SEQUENCE : 1
# EXT-X-PLAYLIST-TYPE : VOD
#EXTINF : 6.006,
0640_00001.ts
#EXTINF : 6.006,
0640_00002.ts
#EXTINF : 6.006,
0640_00003.ts
....
# EXT-X-ENDLIST 코드 복사
# EXTM3U 및 # EXT-X-VERSION은 각각 M3U 파일 헤더 및 호환 가능한 버전 번호입니다. 이 형식은 초기 버전이므로 버전 번호가 기본 파일보다 낮습니다.
EXT-X-TARGETDURATION은 각 재생 세그먼트의 최대 지속 시간을 나타내며 7은 7 초를 나타내며이 디렉토리의 세그먼트는 7 초를 초과 할 수 없습니다.
EXT-X-MEDIA-SEQUENCE는 재생 목록의 첫 번째 세그먼트의 시퀀스 번호를 나타내고 1은 재생 세그먼트가 1부터 시작 함을 나타냅니다.
#EXTINF는 세그먼트의 기간을 나타내며 6.006은 현재 세그먼트가 6.006s임을 의미합니다. 총 비디오 기간 정보는이 값을 누적하여 얻습니다.
0640_00001.ts는 클립의 상대 경로입니다. ts 파일은 비디오 또는 오디오를 나타내며 ts, mp4, aac 및 기타 형식 일 수 있습니다. 1에서 열도록 지정되어 있기 때문에
|
놀라움을 얻으려면 이메일을 입력하십시오.
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> 아프리칸스어
sq.fmuser.org -> 알바니아어
ar.fmuser.org -> 아랍어
hy.fmuser.org -> 아르메니아어
az.fmuser.org -> 아제르바이잔 어
eu.fmuser.org -> 바스크
be.fmuser.org -> 벨로루시 어
bg.fmuser.org -> 불가리아어
ca.fmuser.org -> 카탈로니아 어
zh-CN.fmuser.org -> 중국어 (간체)
zh-TW.fmuser.org -> 중국어 (번체)
hr.fmuser.org -> 크로아티아어
cs.fmuser.org -> 체코
da.fmuser.org -> 덴마크어
nl.fmuser.org -> 네덜란드어
et.fmuser.org -> 에스토니아어
tl.fmuser.org -> 필리피노
fi.fmuser.org -> 핀란드어
fr.fmuser.org -> 프랑스어
gl.fmuser.org -> 갈리시아어
ka.fmuser.org -> 조지아 어
de.fmuser.org -> 독일어
el.fmuser.org -> 그리스
ht.fmuser.org -> 아이티 크리올
iw.fmuser.org -> 히브리어
hi.fmuser.org -> 힌디어
hu.fmuser.org 헝가리어
is.fmuser.org -> 아이슬란드 어
id.fmuser.org -> 인도네시아어
ga.fmuser.org -> 아일랜드어
it.fmuser.org -> 이탈리아어
ja.fmuser.org -> 일본어
ko.fmuser.org -> 한국어
lv.fmuser.org -> 라트비아어
lt.fmuser.org 리투아니아어
mk.fmuser.org -> 마케도니아 어
ms.fmuser.org -> 말레이어
mt.fmuser.org -> 몰타어
no.fmuser.org -> 노르웨이어
fa.fmuser.org -> 페르시아어
pl.fmuser.org -> 폴란드어
pt.fmuser.org -> 포르투갈어
ro.fmuser.org -> 루마니아어
ru.fmuser.org -> 러시아어
sr.fmuser.org -> 세르비아어
sk.fmuser.org -> 슬로바키아어
sl.fmuser.org -> 슬로베니아어
es.fmuser.org -> 스페인어
sw.fmuser.org -> 스와힐리
sv.fmuser.org -> 스웨덴어
th.fmuser.org -> 태국
tr.fmuser.org -> 터키어
uk.fmuser.org -> 우크라이나어
ur.fmuser.org -> 우르두어
vi.fmuser.org -> 베트남어
cy.fmuser.org -> 웨일스 어
yi.fmuser.org -> 이디시어
FMUSER 무선 전송 비디오 및 오디오가 더 쉬워졌습니다!
Contact
주소:
No.305 Room HuiLan Building No.273 Huanpu Road 광저우 중국 510620
카테고리
MMCC 뉴스레터