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

相关推荐
hjjdebug20 小时前
最简单的使用SDL2 播放原始音频数据程序
ffmpeg·音视频
Antonio9151 天前
【音视频】SDL播放PCM音频
ffmpeg·音视频·pcm
陈 洪 伟1 天前
一个由通义千问以及FFmpeg的AVFrame、buffer引起的bug:前面几帧影响后面帧数据
ffmpeg·视频解码
奔驰的小野码2 天前
本地实现Rtsp视频流推送
java·linux·后端·ffmpeg
程序员沉梦听雨3 天前
ffmpeg实现视频转码
ffmpeg·音视频
unix2linux3 天前
YOLO v5 Series - HTTP-FLV - FFmpeg & (HTML5 + FLV.js ) Integrating
yolo·http·ffmpeg
_XU3 天前
使用FFmpeg和MediaMTX实现本地推流
前端·ffmpeg·音视频开发
Java&Develop4 天前
ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代
ffmpeg·音视频
猫头虎4 天前
最新如何在服务器中解决FFmpeg下载、安装和配置问题教程(Linux|Windows|Mac|Ubuntu)
linux·服务器·windows·ffmpeg·音视频·pip·视频编解码
_多拉不懂A梦5 天前
基于ImGui+FFmpeg实现播放器
c++·ffmpeg·音视频