使用FFmpeg转封装为hls(m3u8)流

  • 改造ffmpeg/doc/examples/remuxing.c,支持将输入流转封装为hls协议
  • 对应的github地址:GitHub - yagerfgcs/FFmpeg at examples/remuxing_support_hls
  • 修改点:增加设置hls头
c 复制代码
// example:https://www.ffmpeg.org/ffmpeg-all.html#hls-2
// ffmpeg -i rtmp://xx/livestream -c copy -hls_time 5 -hls_list_size 0 -start_number 1
// -hls_segment_filename /xxdir/test_%Y-%m-%d-%H-%M-%S_%%08t_%%04d.ts /xxdir/test.m3u8
static int write_hls_header(const char* out_filename, AVFormatContext* context) {
  AVDictionary *options = NULL;
  av_dict_set(&options, "hls_time", "5", 0);
  av_dict_set(&options, "hls_list_size", "0", 0);
  av_dict_set(&options, "start_number", "1", 0);
  av_dict_set(&options, "strftime", "1", 0);
  av_dict_set(&options, "hls_flags",
              "second_level_segment_duration+second_level_segment_index", 0);

  char hls_segment_filename[1024];
  memset(hls_segment_filename, 0, 1024);
  sprintf(hls_segment_filename, "%s/%s", av_dirname(out_filename), "%Y-%m-%d-%H-%M-%S_%%08t_%%04d.ts");
  av_dict_set(&options, "hls_segment_filename", hls_segment_filename, 0);
  return avformat_write_header(context, options != NULL ? &options : NULL);
}

相关推荐
hjjdebug19 分钟前
ffmpeg 关于音频的思考
ffmpeg·原始音频
pu_taoc21 分钟前
FFmpeg-实战1-解码音频
ffmpeg·音视频
锁我喉是吧21 小时前
Windows mediamtx +ffmpeg电脑推视频流
ffmpeg··rtsp·mediamtx
Industio_触觉智能21 小时前
RK3576轻松搭建RTMP视频推流,基于FFmpeg+Nginx协同
nginx·ffmpeg·实时音视频·rtmp·瑞芯微·视频推流·rk3576
你好音视频21 小时前
RTSP推流流程深度解析:从协议原理到FFmpeg实现
ffmpeg·音视频
问道飞鱼1 天前
【工具介绍】Ffmpeg工具介绍与简单使用
ffmpeg·视频工具
l***77522 天前
从MySQL5.7平滑升级到MySQL8.0的最佳实践分享
ffmpeg
ZouZou老师2 天前
FFmpeg性能优化经典案例
性能优化·ffmpeg
aqi002 天前
FFmpeg开发笔记(九十)采用FFmpeg套壳的音视频转码百宝箱FFBox
ffmpeg·音视频·直播·流媒体
齐齐大魔王2 天前
FFmpeg
ffmpeg