######## HLS 配信 ######## .. important:: このドキュメントに書かれている FFmpeg に関する事柄についてはサポート対象外ですのでご注意ください .. warning:: このドキュメントはとても古いため参考程度にしてください 概要 ==== Sora の RTP 転送 API と FFmpeg を利用することで、HTTP Live Streaming(以下 HLS)で配信できます。 おすすめ -------- WebRTC to HLS は大変なので、是非サービスをご検討ください。 `ライブ配信サービス ImageFlux Live Streaming|さくらインターネット `_ 検証したバージョン ================== .. warning:: このドキュメントで確認している FFmpeg のバージョンはかなり古いため参考程度にしてください :FFmpeg のバージョン: 3.3.3 配信例 ====== 下記の例では、RTP 転送 API の応答で送られてきた SDP を FFmpeg に読み込ませることで、 Sora から送られてきた RTP パケットを受信して H.264/MP3 の TS ファイルで出力しています。 配信時は、この時同時に作成/更新されているプレイリスト(m3u8 ファイル)を TS ファイルと一緒に Web サーバーで公開します。 変換例:: #!/bin/bash CHANNEL_ID=sora VIDEO_PORT=60001 # VIDEO_PORT + 1 は RTCP の待ち受けで使用されるため空けておく # また、AUDIO_PORT + 1 も RTCP の待ち受けで使用される AUDIO_PORT=$(( $VIDEO_PORT + 2 )) VIDEO_CODEC=libx264 AUDIO_CODEC=libmp3lame QUEUE_SIZE=4000 start_forwarding_rtp() { data=$( jq -n -c --arg channel_id $CHANNEL_ID --argjson video_port $VIDEO_PORT \ --argjson audio_port $AUDIO_PORT \ '{"channel_id":$channel_id, "ip_address":"127.0.0.1", "video_port":$video_port, "audio_port":$audio_port}' ) curl -Ssf -X POST \ -H "x-sora-target:Sora_20170814.StartForwardingRtp" \ -d $data \ 127.0.0.1:3000 } json=$( start_forwarding_rtp ) sdp=$( echo $json | jq -r .sdp ) echo "$sdp" | ffmpeg \ -loglevel fatal \ -protocol_whitelist file,rtp,udp,pipe \ -i pipe:0 \ -c:v $VIDEO_CODEC \ -c:a $AUDIO_CODEC \ -map 0 \ -flags -global_header \ -max_muxing_queue_size $QUEUE_SIZE \ -f hls \ -hls_segment_type mpegts \ -hls_flags append_list \ -hls_list_size 0 \ -hls_segment_filename index%d.ts \ index.m3u8 ブラウザにアクセスさせる HTML の video タグにはプレイリストを指定します。 例:: HLS