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

相关推荐
简鹿办公6 小时前
FFmpeg vs 去水印软件:哪种方式更适合你?
ffmpeg·怎样去除视频水印·如何去视频logo视频水印
小狮子安度因17 小时前
ffplay数据结构分析
数据结构·ffmpeg
小狮子安度因1 天前
ffplay音频重采样
ffmpeg·音视频
小狮子安度因1 天前
AAC ADTS格式分析
网络·ffmpeg·aac
勘察加熊人2 天前
ffmpeg切割音频
ffmpeg·音视频
xiaohouzi1122333 天前
Python读取视频-硬解和软解
python·opencv·ffmpeg·视频编解码·gstreamer
kimble_xia@oracle4 天前
性能优化笔记
ffmpeg
wang_chao1184 天前
RK3399平台ffmpeg-VPU硬编码录制USB摄像头视频、H264或MJPEG编码
ffmpeg·音视频
鹅毛在路上了5 天前
C++, ffmpeg, libavcodec-RTSP拉流,opencv实时预览
c++·opencv·ffmpeg
Hi202402176 天前
Orin-Apollo园区版本:订阅多个摄像头画面拼接与硬编码RTMP推流
ffmpeg·apollo·orin·图像拼接·图传