web-dev-qa-db-ja.com

ffmpegでtsファイルをmp4に結合する方法は?

インターネットの速度が遅すぎて高解像度を見ることができないので、私はたくさんのストリームをダウンロードします。ストリームをダウンロードすると、TSファイルを指す.m3u8ファイルが見つかります。次に、次のコマンドを使用します。

ffmpeg -i stream.m3u8 vid.mp4

これは機能します。しかし、それはすでに正しいフォーマットであるにもかかわらず、基本的にすべてを再コード化するため、非常に長い時間がかかります。再コーディングを回避するために、次のコマンドを使用できます。

ffmpeg -i stream.m3u8 -vcodec copy -acodec copy vid.mp4

これは、中断することなく最初から最後までプレイするときに問題なく機能します。しかし、前後にスキップすると、vlcでイメージを作成できません。数秒間正しく表示されません。これは非常に迷惑です。

私の質問:完全な再コーディングなしで、どの時点でも優れたvlcレンダリングを使用してビデオを作成するにはどうすればよいですか?

1
Nicky Smits

あなたはffmpegにファイルを単一のストリームに結合する代わりにmp4にエンコードするように求めています。 concatenatetemp.tsに変換してから、.mp4を使用して-codec copyに変換する必要があります。

また、2番目のステップ-bsf:a aac_adtstoascadtsaacに変換する必要があると思います。

3
hdezela

再エンコードしないと、ビデオのキーフレームなどを変更できず、説明した動作が発生する可能性があります。しかし、あなたは次のようなものを試すことができます

ffmpeg -i stream.m3u8 -codec:v" "libx264" "-preset" "ultrafast" vid.mp4

スピードで得たものは品質で失われるので、「速い」方が良いかもしれないことを覚えておいてください...

0
ntg