m3u8 文件代码片段. 备用.
//写分片的最大持续时间,分片的序号
int write_m3u8_header(FILE *fp, const myoption_t opt)
{
char write_buf[1024];
snprintf(write_buf, 1024, "#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-TARGETDURATION:%05lu\n#EXT-X-MEDIA-SEQUENCE:%d\n",
(long)opt.segment_max_duration, opt.sequence);
if (fwrite(write_buf, strlen(write_buf), 1, fp) != 1) {
fprintf(stderr, "Could not write header to m3u8 index file!\n");
return -1;
}
fflush(fp);
return 0;
}
//写分片持续时间,名称及顺序号
int write_m3u8_segment(FILE *fp, const char *bname, unsigned int index, double duration)
{
char write_buf[1024];
snprintf(write_buf, 1024, "#EXTINF:%f,\n%s-%u.ts\n", duration, bname, index);
if (fwrite(write_buf, strlen(write_buf), 1, fp) != 1) {
fprintf(stderr, "Could not write segment to m3u8 index file!\n");
return -1;
}
fflush(fp);
return 0;
}
//写分片结束标记
int write_m3u8_tailer(FILE *fp)
{
char write_buf[1024];
snprintf(write_buf, 1024, "#EXT-X-ENDLIST\n");
if (fwrite(write_buf, strlen(write_buf), 1, fp) != 1) {
fprintf(stderr, "Could not write last file and endlist tag to m3u8 index file!\n");
return -1;
}
fflush(fp);
return 0;
}