AACオーディオとH.264ビデオを含む.ts形式のライブストリームがあります。 iOSデバイスでプレイしたいです。 FFmpegに基づくムービープレーヤー を使用してビデオをデコードおよび再生しようとしましたが、オーディオが遅れていました。
このトランスポートストリームをMPEG-4コンテナーに再ラップして、サーバー側で変換せずにiOSデバイスで再生できますか?
サーバーから.tsライブストリームのURLが返されます。サーバーから取得できないため、.m3u8プレイリストなしでiOSデバイスでこのストリームを再生することが目標です。
トランスコーディングせずに単に再多重化するには、次を使用できます:ffmpeg -i input.ts -acodec copy -vcodec copy out.mp4
ffmpeg -i input.ts -acodec copy -vcodec copy out.mp4
を使用しましたが、変換に失敗しました。
次に、-bsf:a aac_adtstoasc
フラグと変換を使用し、「非単調なDTS」エラーとともに、出力ファイルに不正なタイムスタンプを付けました。
out.mp4ファイルはうまく再生されますが、このファイルからオーディオを抽出すると、オーディオの長さがビデオの長さと異なります。
抽出したオーディオを使用して元のファイルのオーディオを置き換えると、結果のビデオファイルのオーディオが同期しなくなります(オーディオの遅れ)。
次に、out.mp4クリップをDaVinci Resolveビデオエディターにインポートしました。オーディオとビデオの両方のファイルの長さが同じであるため、オーディオのみをエクスポートし、ファイルサイズを元のビデオと同じにしました。
しかし、Audacityでファイルを再生してオーディオグラフを表示すると、多くの空白の領域(音なし)に気付きました。 Audacity、ffmpeg、VLC、VSDC Video Editorで作成されたオーディオファイルはすべて、元のビデオファイルとは異なるサイズのオーディオファイルを提供しましたが、すべてサウンドがありました。
可能な解決策として、projectXでdemux a/vを聞いたことがあります。 Demuxは正常に完了しましたが、1KBのmp1ファイルを作成しましたが、「PTS with a frame」という多くのエラーが発生しました。
eac3toは、TSビデオファイルからAACオーディオを抽出することに成功しました。両方のファイルは同じサイズでした。 ffmpegを使用してビデオファイル内のオーディオを置き換えると、完全なシンが発生し、遅れや空白の音がなくなります。
「非単調なDTS」に関するエラーやタイムスタンプの誤りはありません。
できた.