Chr*_*ris 0 ffmpeg nginx ffserver http-live-streaming wowza
我正在使用 FFmpeg 接收 HLS/AppleHTTP 流。源流如下所示:
Input #0, hls,applehttp, from 'http://example.com/hls/index.m3u8':
Duration: 00:00:00.09, start: 42870.540944, bitrate: 91 kb/s
Program 0
Metadata:
variant_bitrate : 0
Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 12.50 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 114 kb/s
Stream #0:2: Unknown: none ([21][0][0][0] / 0x0015)
Run Code Online (Sandbox Code Playgroud)
我需要使用 FFmpeg 将这种流转发到流服务器。我的问题是,如何使用 FFmpeg 进行不编码且 CPU 使用率较高的操作(我认为 - 视频复制 - 音频复制)。其次,哪种流媒体服务器软件最适合接收流并将其作为 HLS 流发送给用户(CPU 使用率低)?
HLS代表HTTP 直播。您不需要特殊的服务器来将其发送给客户端,只需一个常规的 Web 服务器,例如 Nginx(您的标签之一)。
你可以做:
ffmpeg -i http://example.com/hls/index.m3u8 -c copy /path/to/web/dir/index.m3u8
该命令将创建播放列表并将片段复制到/path/to/web/dir位于 Web 服务器的文档根目录中。客户端只需要新的 URL。
如果输入播放列表是包含多个变体流的主播放列表,事情会变得更加复杂。在这种情况下,您需要将所有单独的流捕获到不同的目录,并在您这边编写一个新的主播放列表以重新组合不同的流。