web-dev-qa-db-ja.com

ffmpegを使用したMp4からHLS

IOSアプリでffmpegを使用して、ローカルの.mp4ビデオをHLSに変換しようとしています。ポッドを使用してffmpegラッパーを統合し、すべてのセグメント化された.tsファイルとm3u8ファイルを生成しましたが、以下に示すように、.tsファイルセグメントの一部が.m3u8プレイリストファイルにリストされていません。常に最後の5つのビデオセグメントがリストされます。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:13
#EXTINF:2,
out13.ts
#EXTINF:1,
out14.ts
#EXTINF:2,
out15.ts
#EXTINF:2,
out16.ts
#EXTINF:1,
out17.ts
#EXT-X-ENDLIST

次のコードを使用してHLSを生成しました。

    FFmpegWrapper *wrapper = [[FFmpegWrapper alloc] init];
    [wrapper convertInputPath:inputFilePath outputPath:outputFilePath options:nil progressBlock:^(NSUInteger bytesRead, uint64_t totalBytesRead, uint64_t totalBytesExpectedToRead) {

    } completionBlock:^(BOOL success, NSError *error) {
        success?NSLog(@"Success...."):NSLog(@"Error : %@",error.localizedDescription);
    }];

これを行う他の方法はありますか?

16
Vishnu Kumar. S

最後に、FFOutputFile.m次のコードを使用します。

av_opt_set_int(formatContext->priv_data, "hls_list_size", list_size, 0);
4
Vishnu Kumar. S

HLSへの変換中のデフォルトのリストサイズは5です。したがって、最後の5つの.tsファイルを取得しています。 -hls_list_size 0を設定して、生成されたすべての.tsファイルを含める必要があります。

ffmpeg -i input.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8その他 ここ

22
budthapa