使用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);
}

相关推荐
luoqice21 小时前
RTMP视频流的帧格式分析
网络·ffmpeg
老姚---老姚2 天前
编译支持HEVC/H.265 over RTMP / Enhanced RTMP 的 ffmpeg
ffmpeg·h.265·hevc·rtmp·enhanced
码流怪侠3 天前
FFmpeg 开发实战全解析:从入门到精通(附完整代码示例)
ffmpeg·音视频开发·视频编码
圆弧YH3 天前
FFmpeg
ffmpeg
luoqice3 天前
FLV文件格式详解
ffmpeg
happybasic4 天前
在CMD下使用FFmpeg将.wav文件转换成指定的格式~
ffmpeg
shao9185164 天前
第10章 Streaming(上):初级音频应用(1)——项目三:自建服务器的Mini-Omni实时语音聊天机器人
ffmpeg·whisper·asr·mini-omni·自建语音服务器
Leon_Chenl5 天前
【已开源】【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统
深度学习·opencv·yolo·ffmpeg·音视频·边缘计算·人脸识别+检测
antzou5 天前
视频图片/文字水印
ffmpeg·视频水印·批量水印
AC赳赳老秦6 天前
DBA 专属方案:用 OpenClaw 实现 SQL 语句优化、慢查询分析、数据库备份巡检全自动化
服务器·前端·数据库·ffmpeg·自动化·deepseek·openclaw