web-dev-qa-db-ja.com

品質を損なうことなく字幕をAVIにハードコーディングする方法

プログラムを使用して、字幕をAVIファイルにハードコーディングしています。問題は、コーデックを使用してビデオを再圧縮することです。なぜこれが必要で、品質が著しく低下するのかわかりません。ビデオの品質を損なうことなく、ビデオを再圧縮せずに潜水艦を入れるプログラムはありますか?

2
tony_sid

いいえ。ハードサブはビデオコンテンツを変更するため、再圧縮する必要があります。

Mplayerを使用して字幕付きのビデオを再生し、すべてを生のyuvファイル(-vo yuv4mpeg)に出力できます。映画を再生する場合、この出力ファイルは非常に大きく、数百ギガバイトになるため、問題が発生しないことを確認してください。

ファイルが出力された後、ffmpeg、次にH264コーデックを使用して圧縮できます。

1
Javier Loureiro

フレーム自体にテキストをオーバーレイするとフレームデータが変更されるため、再圧縮が必要です。したがって、ワークフローはDecompress frame > Modify it to add text > recompress frame

字幕が追加されたファイルには、ロスレスコーデックを使用できます。 1つはhuffyuvで、h.264とDiracもロスレスプロファイルを持っているようです。 (これにより、元のファイルと同じ品質になり、ファイルサイズがはるかに大きくなります)

理論的には、字幕によって変更されたブロックのみを再エンコードするアプリケーションを作成することは可能かもしれませんが、これはコーデックコードに深く埋め込む必要がある可能性があります...これにより、品質が影響を受ける領域を制限できるはずです。 。私はそのようなものが存在することを知りません...(また、コーデックごとに特別に記述する必要がありますが、解凍されたフレームを変更すると、既存のエンコーダーおよびデコーダーライブラリを使用できるようになります。異なるフォーマット)

理想的には、編集が完了するまでロスレス圧縮ファイルを使用し、最終ファイルを優先圧縮でエクスポートする必要があります。ただし、これはあなたが制作したビデオに対してのみ機能します。

許容できる可能性のある別のオプションは、字幕を追加のデータストリームとして追加することです(これにより、字幕をオフにすることができます)。 MPEG-4時限テキストはそのような字幕形式の1つであり、Ogg Writは別の形式です(ただし、どちらもAVIコンテナをサポートしていないようです)(これらを使用すると、字幕は、ファイルの再生時にレンダリングされるオーディオとビデオ)

また、より優れたコーデック(入力形式に応じて、Dirac、H.264、またはH.265など)を使用して再圧縮し、ファイルサイズを大幅に増やすことなく品質の低下を制限しようとする場合もあります。

0