2017-12-12 18 views
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セグメントを生成する方法を教えてください。

答えて

0

をご覧ください。hls_segment_size=500000 セグメントサイズを小さくしてください。

関連する問題