FFmpeg で次のコマンドを使用して、.mov ビデオを hls にエンコードし、.srt ファイルを .vtt に変換する字幕用のプレイリストも作成しています。
// Creating hls playlist
ffmpeg -hide_banner -y -i /Users/dave/mermaid.mov -c:a aac -ar 48000 -c:v h264 -profile:v baseline -avoid_negative_ts 0 -start_number 0 -hls_time 10 -hls_playlist_type vod -hls_list_size 0 -f hls -vf scale=w=640:h=360:force_original_aspect_ratio=decrease -b:v 800k -maxrate 856k -bufsize 1200k -b:a 96k -hls_segment_filename /Users/dave/mermaid/360/360p_%03d.ts /Users/dave/dave/mermaid/360/360p.m3u8
-c:a aac -ar 48000 -c:v h264 -profile:v baseline -avoid_negative_ts 0 -start_number 0 -hls_time 10 -hls_playlist_type vod -hls_list_size 0 -f hls -vf scale=w=842:h=480:force_original_aspect_ratio=decrease -b:v 1400k -maxrate 1498k -bufsize 2100k -b:a 128k -hls_segment_filename /Users/dave/Desktop/mermaid/480/480p_%03d.ts /Users/dave/Desktop/mermaid/480/480p.m3u8
-c:a aac -ar 48000 -c:v h264 -profile:v baseline -avoid_negative_ts 0 -start_number 0 -hls_time 10 -hls_playlist_type vod -hls_list_size 0 -f hls -vf scale=w=1280:h=720:force_original_aspect_ratio=decrease -b:v 2800k -maxrate 2996k -bufsize 4200k -b:a 128k -hls_segment_filename /Users/dave/Desktop/mermaid/720/720p_%03d.ts /Users/dave/Desktop/mermaid/720/720p.m3u8
-c:a aac -ar 48000 -c:v h264 -profile:v baseline -avoid_negative_ts 0 -start_number 0 -hls_time 10 -hls_playlist_type vod -hls_list_size 0 -f hls -vf scale=w=1920:h=1080:force_original_aspect_ratio=decrease -b:v 5000k -maxrate 5350k -bufsize 7500k -b:a 192k -hls_segment_filename /Users/dave/Desktop/mermaid/1080/1080p_%03d.ts /Users/dave/Desktop/mermaid/1080/1080p.m3u8
// Creating subtitles
ffmpeg -i /Users/dave/mermaid.mov -i /Users/dave/little-mermaid.srt -c copy -c:s webvtt -start_number 0 -hls_time 10000000 -hls_flags single_file -hls_playlist_type vod -f hls -avoid_negative_ts 0 /Users/dave/mermaid/English/master.m3u8
AWS Media Convert でもこれを行っています。AWS 変換は問題なく動作し、字幕は完全に間に合いますが、FFMPEG バージョンは約 1 秒同期していないようです。
両方に使用されているまったく同じファイルを比較するための両方のファイルを次に示します。
AWS メディア変換: https://d25hd5yfabpc2n.cloudfront.net/c0017bfe-3617-47a5-9525-86d69c73cf57/master.m3u8
ローカル FFMPEG: https://d25hd5yfabpc2n.cloudfront.net/stackoverflow/master.m3u8
両方のプレイリストをダウンロードした場合に確認できる唯一のことは、AWS のプレイリストに FRAME-RATE が設定されていることです。
FFMEPG を再生している両方のビデオの例を次に示します。
https://output.jsbin.com/xopohupivu/
私が気付いたもう 1 つのことは、AWS webvtt バージョンではこれが webvtt ファイルの先頭にあることです。
WEBVTT #Elemental Media Engine(TM) 2.16.0.602399
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:191970
ここで何が起こっているのかわからないため、FFMPEG を使用してこれを実装する方法に関する情報が見つかりません。
ありがとう