ogg vorbisファイルのロスレス連結


12

いくつかのogg vorbisファイルがあり、それらはすべて、単一のファイルに連結するのとまったく同じプロパティでエンコードされています。

ogg vorbis形式は、次のような複数のファイルの単純な連結をサポートしていることを知っています。

$ cat file1.ogg file2.ogg > output.ogg

しかし、残念ながら、すべてのプレーヤーがそのように作成されたファイルを理解できるわけではありません。たとえば、私のモバイルオーディオプレーヤーは、新しいものを購入することを避けます。それを理解しない他のプログラムはgstreamerです。入力oggファイルがたまたますべて同じストリームIDを持っている場合、このメソッドは機能しません。

さらに、元のファイルを破棄し、連結バージョンのみを保持するため、catソリューションと同じように、連結をロスレスで行いたいと思います。

また、ファイルをflacのようなロスレス形式に連結することも避けたいのです。これにより、ファイルサイズが不必要に大きくなるからです。それで問題なければ、元のoggファイルを保持して、使用するスペースを減らすことができます。

ffmpegはconcat demuxerを使用してそれを実行できることがあるようです:

$ cat inputs.txt
file 'in1.ogg'
file 'in2.ogg'
$ ffmpeg -f concat -i inputs.txt -c copy out.ogg

入力ファイルの生のhexdumpを見ると、出力ファイルに正確に表されているvorbisパケットを見つけることができます。したがって、再エンコードは実際には行われないと思います。

しかし、これはすべての入力ファイルで機能するとは限りません。時々(何がこれをトリガーするかわからない)、ffmpegは警告を出します:

Non-monotonous DTS in output stream 0:0; previous: 5011328, current: 5011200; changing to 5011329. This may result in incorrect timestamps in the output file.

そして、2つのファイル間の非常にかすかな「ギャップ」が聞こえます。したがって、これは確かにグローバルなソリューションではありません。

私は1つを見つけることができなかったので、私はこのstackoverflow質問で自分のツールを書き込もうとしました。

複数のogg vorbisファイルを連結する方法はありますが、再エンコードせずに、出力ごとに1つのストリームのみを使用しますか?どのツールがその仕事をすることができますか?



@JoshRumbutはい、それはファイルは、いくつかの入力のために接合された可聴ギャップ含む苦しんでいる
josch

PiTiViを使用して、タイムラインにクリップを順番に配置してみてください。
harrymc

1
OP(および私も)は、必要なファイルを収集した後、ユーザーの操作を必要としないプログラムによるソリューションを求めています。
ヴィルメン

2
@RalphRönnquistSoxは入力を再エンコードします。
ジョシュ

回答:


2

ffmpeg -i "concat:ogg1.ogg|ogg2.ogg|ogg3.ogg" -c copy out.ogg私のシステム上に連結されたoggファイルを作成します。これは、(おそらく共有メタデータのために)個別のファイルを結合したものよりもわずかに小さくなります。私には同じように聞こえるので、連結はロスレスでなければなりません。ただし、これによりファイル間に小さなギャップが追加されることはありません。

ffmpeg -f concat -safe 0 -i ogg1.ogg -i ogg2.ogg -c copy out.ogg 動作するはずですが、3.3.2の時点でHomebrew(macOS)ffmpegでこのエラーが発生します。

[concat @ 0x7f91e8800400] Line 1: unknown keyword 'OggS'
ogg1.ogg: Invalid data found when processing input

ソース:https : //trac.ffmpeg.org/wiki/Concatenate


同じエラーが発生しています
-Housemd

0

あなたは見てとることをお勧めしますFFmpegのを。私にはよくわからないツールがたくさんありますが、ドキュメントから正確にこれを行うツールがあることを覚えています。そうでなければ、VLC Media Playerコマンドラインを使用できると思います。


1
答えを少し広げていただけますか?製品とそのドキュメントを指すだけでは、ソリューションを達成する方法を実際に説明することはできません。製品を使用して問題を解決する方法に関するいくつかの指示をここに含めることをお勧めします。ここでソフトウェアを推薦するのは良い指導:meta.superuser.com/questions/5329/...。ありがとう。
fixer1234 16

使用するだけでは機能しffmpeg -f concat -i inputs.txt -c copy out.oggません。これがffmpegでどのように解決できると思うか興味があります。
ジョシュ16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.