icdi 发表于 2022-3-27 21:12:47

官方示例的remuxing如何设置

初次使用 ffmpeg sdk 开发,如有莽撞,请各位见谅
因为毕设要求,需要 ffmpeg sdk 将 mp4 转封装切分为 m3u8。从官方示例里拿 remuxing.c 编译尝试了一下,转封装切分倒是成功了,但是 m3u8 的 #EXT-X-MEDIA-SEQUENCE 标签不是从 0 开始,而是从 36 开始,到 40 结束(但是从 0.ts 到 40.ts 都切分出来了);#EXT-X-TARGETDURATION 标签为 5
我想请教一下,如何让它可以从 0 开始呢?切片的时间如何设置呢?

以下是代码
remuxing.c (github.com)

编译
gcc -o remuxing remuxing.c -lavformat -lavcodec -lavutil

执行及打印的输入文件和输出文件信息
./remuxing input.mp4 output.m3u8

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
    major_brand   : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.71.100
    description   : Packed by Bilibili XCoder v2.0.2
Duration: 00:03:22.80, start: 0.000000, bitrate: 3053 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 , 2919 kb/s, 23.98 fps, 23.98 tbr, 16k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       :
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       :
Output #0, hls, to 'output.m3u8':
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 , q=2-31, 2919 kb/s
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s


icdi 发表于 2022-3-27 21:16:39

这是切分后的 m3u8 文件
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:36
#EXTINF:5.005000,
output36.ts
#EXTINF:5.005000,
output37.ts
#EXTINF:5.005000,
output38.ts
#EXTINF:5.005000,
output39.ts
#EXTINF:2.543022,
output40.ts
#EXT-X-ENDLIST

孙悟空 发表于 2022-4-2 17:19:07

avformat_write_header(ofmt_ctx, NULL);

最后一个参数改成这样

ret = avformat_write_header(oc, &opt);



前面加上
AVDictionary *opt = NULL;
av_dict_set(&opt, "hls_list_size", "0", 0);
页: [1]
查看完整版本: 官方示例的remuxing如何设置