HLS 스트리밍 전송 생성 및 녹화(파이썬 및 ffmpeg)
HLS 정보
개요
특징
파일
동영상
HLS
input.mp4
playlist.m3u8001.ts002.ts003.ts004.ts005.ts
HLS 만들기
비디오 MP4 파일에서 HLS를 만듭니다. input.mp4 파일과 hls 폴더를 준비하고 다음 main.py를 실행하십시오.
main.py
# -*- coding: utf-8 -*-
import sys, os
import subprocess
import codecs
def create_hls():
# 高画質m3u8の作成 (input.mp4 -> hls/h.m3u8)
c = 'ffmpeg'
c += ' -i input.mp4'
c += ' -codec copy -vbsf h264_mp4toannexb -map 0'
c += ' -f segment -segment_format mpegts -segment_time 5'
c += ' -segment_list hls/h.m3u8'
c += ' hls/h_%5d.ts'
code = subprocess.call(c.split())
print('process=' + str(code))
# 低画質mp4の作成 (input.mp4 -> input_low.mp4)
c = 'ffmpeg'
c += ' -i input.mp4'
c += ' -f mp4 -vcodec h264 -vb 500k -s 640x360 -pix_fmt yuv420p'
c += ' -ac 2 -ar 48000 -ab 128k -acodec aac -strict experimental'
c += ' -movflags faststart'
c += ' input_low.mp4'
code = subprocess.call(c.split())
print('process=' + str(code))
# 低画質m3u8の作成 (input_low.mp4 -> hls/l.m3u8)
c = 'ffmpeg'
c += ' -i input_low.mp4'
c += ' -codec copy -vbsf h264_mp4toannexb -map 0'
c += ' -f segment -segment_format mpegts -segment_time 5'
c += ' -segment_list hls/l.m3u8'
c += ' hls/l_%5d.ts'
code = subprocess.call(c.split())
print('process=' + str(code))
# 低画質高画質を含めたm3u8の作成 (->hls/playlist.m3u8)
t = '#EXTM3U'
t += '\n##EXT-X-VERSION:3'
t += '\n#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000'
t += '\nl.m3u8'
t += '\n#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4000000'
t += '\nh.m3u8'
f = codecs.open('hls/playlist.m3u8', 'w', 'utf-8')
f.write(t)
f.close()
if __name__ == "__main__":
create_hls()
실행하면 hls 폴더에 m3u8과 ts가 만들어집니다.
Http 서버에 넣기
HLS는 Mac의 Safari와 Windows의 Edge를 지원합니다. 위에서 만든 hls 폴더를 Http 서버에 놓고 다음을 브라우저에서 액세스하십시오.
http://localhost:8080/hls/playlist.m3u8
Http 서버가 없다면 파이썬에서도 만들 수 있습니다.
cd yourdirectory
(python 2)
python -m SimpleHTTPServer 8080
(python 3)
python -m http.server 8080
HLS 녹화
HLS ffmepg를 사용하여 녹화합니다. iOS 무료 소프트웨어 "it's my Live"를 사용한 예를 소개합니다 (iOS 전용)
cd yourdirectory
(python 2)
python -m SimpleHTTPServer 8080
(python 3)
python -m http.server 8080
HLS ffmepg를 사용하여 녹화합니다. iOS 무료 소프트웨어 "it's my Live"를 사용한 예를 소개합니다 (iOS 전용)
다음 rec.py를 주소를 변경하여 실행합니다.
rec.py
# -*- coding: utf-8 -*-
import sys, os
import subprocess
def recode_hls():
c = 'ffmpeg'
c += ' -i http://10.255.114.14:8080/my/playlist.m3u8' ←要変更
c += ' -movflags faststart -c copy rec.mp4'
code = subprocess.call(c.split())
print('process=' + str(code))
if __name__ == "__main__":
recode_hls()
주의점
녹화 rec.mp4는 가능했지만 QickTime에서 재생할 수없는 경우
다음을 시도하십시오 (aac 사용)
brew uninstall ffmpeg
brew install ffmpeg --with-fdk-aac --with-libvo-aacenc
brew install ffmpeg
앱 설정의 비트 레이트, 프레임 레이트, 사이즈를 변경해도 녹화 가능했습니다. 1분 이상 길게 녹화해 보거나 재시작해 보는 등 시도해 보세요.
요약
RTMP 및 차세대 SRT에는 라이브 서버가 필요합니다. 지연에 대해 걱정하지 않으면 HLS가 쉽습니다. 드라이브 레코더나 회의의 녹화는 대기업이 할 것입니다. 나 같은 중소기업은 틈새 상법으로 들어가고 싶은 곳. 뭔가 좋은 아이디어가 없을까라고 모색하고 있는 곳입니다.
Reference
이 문제에 관하여(HLS 스트리밍 전송 생성 및 녹화(파이썬 및 ffmpeg)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koji4104/items/3bcb7610164b03338303
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(HLS 스트리밍 전송 생성 및 녹화(파이썬 및 ffmpeg)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koji4104/items/3bcb7610164b03338303텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)