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