1
私はアンドロイドでffmpeg 3.4バージョンのソースコードを使用しています。私はM3U8出力として、以下のオプションでオーディオ/ビデオ要素ストリームをマクサーするためにそれを使用しよう:ffmpeg - プログラムでHLSライブストリーミング
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:[email protected]
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セグメントを生成する方法を教えてください。