私は ffmpeg の libav* ライブラリを使用する C プログラムを作成しており、ドレンジャーのチュートリアルを使用して、オーディオとビデオの両方を正しくデコードできます。現在、字幕を抽出しようとしています。私は実際にそれらを時間通りにデコードしてビデオに表示したくありませんが、実際にはコンテナーから字幕テキストを抽出します。
たとえば、cli では、
ffmpeg -i video.mkv -map 0:4 -scodec copy out.ass
お尻のファイルを返してくれます。(何らかの理由で、srts はテキストのみを返します。)
AVSubtitle、avcodec_decode_subtitle2 などをいじってみましたが、字幕が 1 行ずつ返されます。srts のタイムコード、ass のヘッダー情報などが必要です。必要なのは、コンテナーに多重化された字幕テキスト ファイル全体だけです。