FFMPEG에서 라이브 CMAF (HLS + MPEG-DASH)를 만드는 방법
소개
안녕하세요 streampack 팀의 메디입니다.
htps : // c ぉ う ぱ ck. jp / 세 r ゔ ぃ 세 / 오 치온 / st 레아 mpa ck. HTML
Copyrights
큰 벅 버니
© copyright 2008, Blender Foundation | w w. 미세 g 부분 ck 분 y. 오 rg
What is CMAF · CMAF란?
CMAF means Common media application format
In order to simplify let's say that CMAF has support for both MPEG-DASH and HLS. You just need to create your video segments once. Both of the manifests (MPD & m3u8) will use the same video segments.
CMAF는 "Common media application format"을 의미합니다.
단순화를 위해 CMAF가 MPEG-DASH와 HLS를 모두 지원한다고 가정합니다. 일단 동영상 세그먼트를 만들어야 합니다. 두 매니페스트(MPD & m3u8)는 동일한 비디오 세그먼트를 사용합니다.
Objective·목적
Learning how to create a CMAF compliant Live ABR video stream.
라이브 CMAF ABR 비디오 스트림의 간단한 예를 배웁니다.
Tools · 도구
FFMPEG
FFMPEG will encode the video file.
FFMPEG는 비디오 파일을 인코딩합니다.
I am using a static build of FFMPEG v4.1.
FFMPEG "v4.1"의 정적 빌드를 사용하고 있습니다.
FFMPEG static builds · FFMPEG 정적 빌드
FFMPEG command · FFMPEG 사용법
./ffmpeg -re -stream_loop -1 -i ~/Documents/videos/BigBuckBunny.mp4 \
-map 0 -map 0 -map 0 -c:a aac -c:v libx264 \
-b:v:0 800k -s:v:0 1280x720 -profile:v:0 main \
-b:v:1 500k -s:v:1 640x340 -profile:v:1 main \
-b:v:2 300k -s:v:2 320x170 -profile:v:2 baseline \
-bf 1 \
-keyint_min 120 -g 120 -sc_threshold 0 -b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1 \
-window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" -hls_playlist 1 -seg_duration 4 -streaming 1 -remove_at_exit 1 -f dash manifest.mpd
Encode faster with a GPU · GPU로 고속 인코딩
If you are using a Mac, you can replace
-c:v libx264
by -c:v h264_videotoolbox -allow_sw 1
, it will use the GPU when available.Mac을 사용하는 경우
-c:v libx264
를 -c:v h264_videotoolbox -allow_sw 1
로 바꿀 수 있습니다. 사용 가능한 경우 GPU를 사용합니다.If you have a nvidia card, I wrote a more derailed article here .
Nvidia 그래픽 보드에 관심이 있다면 더 자세한 기사
Player · 플레이어
In the following examples, I am using Clappr player.
다음 예제에서는 Clappr 플레이어를 사용하고 있습니다.
Clappr is an open sources javascript media player.
Clappr은 오픈 소스 자바 스크립트 미디어 플레이어입니다.
If you are interested in Clappr, I wrote a more detailed article .
Clappr 에 관심이 있다면 더 자세한 기사 에 있습니다.
HLS player
<head>
<title>Clappr Player</title>
<meta charset="UTF-8">
<!-- Player -->
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/clappr@latest/dist/clappr.min.js"></script>
<!-- Quality selector -->
<script type="text/javascript" src="//cdn.jsdelivr.net/gh/clappr/clappr-level-selector-plugin@latest/dist/level-selector.min.js"></script>
</head>
<body>
<div id="player"></div>
<script>
Clappr.Log.setLevel(Clappr.Log.LEVEL_DEBUG);
var player = new Clappr.Player({
source: "master.m3u8",
parentId: "#player",
mute: true,
autoPlay: true,
plugins: {
core: [LevelSelector]
},
levelSelectorConfig: {
title: '動画品質',
},
});
</script>
</body>
DASH player
<head>
<title>Clappr Player</title>
<meta charset="UTF-8">
<!-- Player -->
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/clappr@latest/dist/clappr.min.js"></script>
<!-- DASH -->
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/[email protected]/dist/dash-shaka-playback.min.js"></script>
</head>
<body>
<div id="player"></div>
<script>
Clappr.Log.setLevel(Clappr.Log.LEVEL_DEBUG);
var player = new Clappr.Player({
source: "manifest.mpd",
parentId: "#player",
mute: true,
autoPlay: true,
plugins: {
playback:[DashShakaPlayback]
},
});
</script>
</body>
정보 소스 · 정보 소스
htps //w w. ㄴ fmぺg. 오 rg / fm ぺg - l. HTML
htp // cp pr. 이오/
Reference
이 문제에 관하여(FFMPEG에서 라이브 CMAF (HLS + MPEG-DASH)를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mehdi/items/d5c3bb173ebbac5b0b53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)