it0B!Hatena0Pocket6LINESendLINESendFeedly8Copy-最近は字幕付きの放送も増えてきた。[字」と記載されている場合は字幕ファイルが放送波のなかに埋め込まれていて、これを抽出してmp4の中に入れ込むと、字幕の有無を選択するような形でmp4の内部に字幕ファイルを挿入することが出来る。今回は、その方法を簡単に説明することとしたい。以下で記載しているシェルスクリプトは、下記のような形でファイルを配置している。${BASENAME}また、以下に関しては考慮していない。エラーハンドリングログ出力TsSplitterで分割する際に、必要な情報を残すTsSplitterでワンセグやSD画質を消去しつつ、必要な情報を残すようにしてtsファイルを整形する。コマンドラインでの操作方法こんな感じ。"/media/rec/${BASENAME}.m2ts"これで、tempディレクトリのsplittedの内部に、TSSplitterが処理したファイルが格納される。メインの動画を取得するTsSplitteで分割したあとには、メインのファイル(本編)と余計なファイル(前後にあるCMなど)に分かれて出力される。これらのうち、本編動画を取得する。目視で確認が一番早い。容量が大きいファイルをメインのファイルとみなし、そのファイル名称を取得する。1`これで、${SPLIT}に、メインのファイルの名称が格納される。下記よりCaption2AssCをダウンロードする。"[メイン(本編)のファイル]"同じディレクトリ内に「メインのファイル名.m2ts.srt」が出力される。これが字幕ファイルだ。今回は/media/batch/caption内にCaption2AssCを配置した。Caption2AssCは日本語ファイルをうまく読み込めない時があるので、事前にメイン(本編)動画の名称を変更する。字幕は/media/temp内にbase.m2tssrtとして出力される。ffmpegでエンコード&字幕の埋め込みffmpegを用いてエンコードを行う。この際は字幕ファイルのことは考えず、単純にmp4ファイルを生成する点がポイント。ffmpegのパラメータはお好きに。実は私はエンコードの進捗状況を確認するためにこの点のみ外部のPHPファイルを読み込む設定にしているのだが、シェルスクリプトで操作するならこんな感じだろう。/media/temp/middle.mp4中間ファイルがいくつもできてしまってうっとうしいが、まずはmp4ファイルが/media/temp/middle.mp4という名称で生成された。字幕の挿入もffmpegで実施する。従って、動画のエンコードと字幕の埋め込みは分割して実施する。今回は、mapを使いまくることによってこれらを回避する。"/media/mp4/${BASENAME}.mp4"上記を実施することで、/media/mp4に字幕付きのmp4を生成することが出来た。動作VLCを例に出すと、「字幕」という欄で日本語字幕が選択出来るようになる。実際に表示すると、次のような形で字幕が映像に出力される。これは別途改めて紹介することとしたい。it0B!Hatena0Pocket6LINESendLINESendFeedly8Copy-執筆者紹介Thir購入したガジェットの紹介やサーバーの構築方法、スマートホーム化等、そのときハマっていたもののメモ書き・趣味の備忘録ではありますが、お役に立つ情報があれば幸いです。最近はYouTubeでもレビュー動画やVlogをあげています。サイト紹介・プロフィールはこちら。依頼・お問い合わせはこちらから。語学用に使用するCDの多くが、正直「遅い」。...人気記事WF-1000XM3に最適なイヤーピースはコンプライの「TSX-200」。「TG-200」も使えるけれど。store(Amazon)が便利だ。多くの...ffmpegで動画を結合する(最新版concatの使い方)ffmpegにはクセがあって、バージョンごとにコマンドが若干違ったりしている。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。この記事のトラックバックURL自己紹介ガジェット・サーバー構築・中国デジタル社会巡り・スマートホーム等、そのときハマっていたもののメモ書き・趣味の備忘録。詳しいサイト紹介・プロフィールはこちら。各種依頼やお問い合わせはこちらからお願いします。(2016年版)tsをmp4にするのに、昔は莫大なことを行っていたのだが、今は非常にシンプルにしている。[...]ffmpegで動画を結合する(最新版concatの使い方)ffmpegにはクセがあって、バージョンごとにコマンドが若干違ったりしている。