HLS 视频分割并发症。如何使用 ffmpeg 创建传输流

iLe*_*ing 2 h.264 ffmpeg aac video-conversion

我有 h264 视频,目前我们正在使用 Apple 的 HTTP 视频流工具和 mediafilesegmenter 来分割这些文件。我需要做的是切换到基于这个非常流行的开源分段器的替代分段器

问题是这个分割器不只是拍摄任何视频,而是只拍摄 MPEG-TS 视频。所以我必须先将我的 h264 视频转换为 TS。

我可以用 ffmpeg 做到这一点。我正在使用这个:

ffmpeg -i encoded.mp4 -vcodec h264 -i encoded.mp4 -sameq -acodec aac -strict experimental -f mpegts output.ts  
Run Code Online (Sandbox Code Playgroud)

但这会产生相当大的输出。原因是 Apple 的分段器保持相同的编解码器 - AVC 和相同的音频编解码器 - AAC,而 ffmpeg 将视频格式更改为 MPEG Video。

问题是:我能否以某种方式保留相同的 AVC 视频编解码器并仍将视频转换为传输流?

所以我的目标是保持与 Apple 的 medifilesegmenter 相同的视频质量和相同的视频编解码器。

UPD:好的...似乎 ffmpeg 可以将视频分成几段:

ffmpeg -i encoded.mp4 -c copy -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts segment%d.ts
Run Code Online (Sandbox Code Playgroud)

这仍然有一个问题:它不会创建 http 直播流索引文件。(-segment_list 创建一个包含段列表的文件,但它看起来不像 HLS 索引)。所以,你仍然需要创建索引文件

use*_*862 5

尝试:

ffmpeg -i in.mp4 -acodec copy -vcodec copy out.ts
Run Code Online (Sandbox Code Playgroud)

Ffmpeg 也有一个分段器。见http://ffmpeg.org/ffmpeg.html#segment_002c-stream_005fsegment_002c-ssegment