ffmpeg - прямая трансляция HLS программно

Я использую исходный код версии ffmpeg 3.4 на Android. Я пытаюсь использовать его для мультиплексирования потока аудио/видеоэлементов в качестве вывода 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 в качестве источника прямой трансляции?


person lucky1928    schedule 12.12.2017    source источник
comment
вы нашли какое-нибудь решение?   -  person Mohit Yadav    schedule 23.11.2020


Ответы (1)


взгляните на hls_segment_size=500000 уменьшите размер сегмента.

person user2392190    schedule 09.01.2018