Saya punya beberapa file ogg vorbis, semua dikodekan dengan properti yang sama persis yang ingin saya gabungkan menjadi satu file.
Saya tahu bahwa format ogg vorbis mendukung penggabungan beberapa file seperti:
$ cat file1.ogg file2.ogg > output.ogg
Tetapi sayangnya tidak semua pemain dapat memahami file yang dibuat seperti itu, misalnya pemutar audio ponsel saya dan saya akan menghindari untuk membeli yang baru. Program lain yang tidak memahaminya adalah gstreamer. Metode itu juga tidak berfungsi jika file ogg input kebetulan semua memiliki id aliran yang sama.
Selain itu, karena saya ingin membuang file asli dan hanya menyimpan versi yang disatukan, saya ingin penggabungan dilakukan tanpa kehilangan, seperti cat
solusinya.
Saya juga ingin menghindari menyatukan file ke dalam format lossless seperti flac karena ini tidak perlu meledakkan ukuran file. Jika itu akan baik-baik saja, maka saya bisa menyimpan file ogg asli dan akan menggunakan lebih sedikit ruang.
Tampaknya ffmpeg kadang-kadang dapat melakukannya dengan menggunakan concat demuxer :
$ cat inputs.txt
file 'in1.ogg'
file 'in2.ogg'
$ ffmpeg -f concat -i inputs.txt -c copy out.ogg
Jika saya melihat hexdump mentah dari file input saya, maka saya dapat menemukan paket vorbis persis diwakili dalam file output. Jadi saya kira benar-benar tidak ada pengkodean ulang yang terjadi.
Tapi ini sepertinya tidak berfungsi pada semua file input. Terkadang (tidak yakin apa yang memicu ini), ffmpeg akan memberikan peringatan:
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.
Dan kemudian saya akan mendengar "celah" yang sangat samar antara dua file. Jadi ini tentu bukan solusi global.
Karena saya tidak dapat menemukannya, saya mencoba menulis alat saya sendiri di pertanyaan stackoverflow ini .
Apakah ada cara untuk menggabungkan beberapa file ogg vorbis tetapi tanpa melakukan encoding ulang dan hanya dengan satu aliran per output? Alat mana yang bisa melakukan pekerjaan itu?