ffmpeg - 以编程方式进行HLS直播

时间:2017-12-12 04:04:33

标签: ffmpeg android-ffmpeg

我在android上使用ffmpeg 3.4版本的源代码。我尝试使用它来混合音频/视频元素流作为m3u8输出和以下选项:

    int num = av_opt_set_from_string(outputFormatContext->priv_data,
         "hls_list_size=6;start_number=1;hls_wrap=10;hls_time=10;  hls_segment_size=500000;",NULL,"=",";");
    if (num < 0) {
        LOGI("av_opt_set_from_string return error (0x%X) %d",num,num);
    }

它可以工作,但只输出一个文件(例如test1.ts),关闭实例后,它将生成一个m3u8文件,如下所示:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:52
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:51.600000,
#EXT-X-BYTERANGE:47199280@0
test1.ts
#EXT-X-ENDLIST

但如果我从终端运行以下命令:

ffmpeg -i test.mp4 -codec copy -hls_time 10 test.m3u8

它将正确生成ts段(10秒):

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.666667,
test1.ts
#EXTINF:10.666667,
test2.ts
#EXTINF:10.666667,
test3.ts
#EXTINF:10.666667,
test4.ts
#EXTINF:9.633333,
test5.ts
#EXT-X-ENDLIST

如何让我的程序生成ts segements作为直播源?

1 个答案:

答案 0 :(得分:0)

看看app.component.html 减少您的细分市场规模。