Saya punya banyak segmen yang dijelaskan oleh satu file index.m3u8:
index.m3u8
segment1_0_av.ts
segment2_0_av.ts
segment3_0_av.ts
segment4_0_av.ts
segment5_0_av.ts
Saya tahu mereka semua dikodekan dengan cara yang sama. ffprobe memberi saya yang berikut:
Input #0, mpegts, from 'segment1_0_av.ts':
Duration: 00:00:10.00, start: 0.100511, bitrate: 1251 kb/s
Program 1
Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 960x540 [SAR 1:1 DAR 16:9], 12.50 fps, 25 tbr, 90k tbn, 25 tbc
Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 105 kb/s
Stream #0:2[0x102]: Unknown: none ([21][0][0][0] / 0x0015)
Saya ingin menggabungkan mereka ke dalam wadah mp4 tunggal. Tetapi ketika saya mencoba perintah seperti:
ffmpeg -f concat -i filelist.txt -c copy output.mp4
di mana menghasilkan filelist.txt dari file index.m3u8, ia mengeluh tidak bisa membaca berbagai file. Tetapi mengonversi file ts sendiri tampaknya berfungsi dengan baik. Saya pikir saya tidak menggunakan ffmpeg dengan benar.
Bagaimana cara menggunakan ffmpeg untuk menggabungkan file ts yang dijelaskan oleh index.m3u8 ke dalam wadah mp4 tunggal menggunakan copy codec?
-bsf:a aac_adtstoasc
.ffmpeg copy ...
, inicopy ...
(di bawah Windows)Menggunakan salin atau kucing untuk menggabungkan file seperti jawaban teratas szatmary saat ini mungkin meninggalkan Anda dengan file yang jauh melampaui batas dan tidak dapat mencari bersama dengan masalah pemutaran.
Sebagai gantinya, untuk menggabungkan file-file ini dengan benar, gunakan ffmpeg seperti yang diperintahkan https://trac.ffmpeg.org/wiki/Concatenate . (Instal ffmpeg di sini jika Anda belum memilikinya https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg .)
Jika Anda terlalu malas untuk membaca tautan pertama saya, pada dasarnya Anda harus membuat file .txt yang mencantumkan semua file yang ingin Anda gabungkan seperti itu (yang mana tautan pertama saya memberikan petunjuk tentang cara melakukannya dengan mudah) di folder tempat Anda sedang melakukan penyatuan:
Berikut adalah salinan dari tautan pertama saya pada satu cara untuk membuat file teks jika Anda memiliki Windows pada commandline misalnya tetapi jelas Anda dapat membuat file secara manual atau apa pun yang Anda inginkan:
Periksa kembali apakah file .txt Anda terlihat bagus dan diformat dengan benar!
Setelah ini, pada baris perintah jalankan:
di mana 'mylist.txt' adalah file .txt yang baru saja Anda buat.
Periksa apakah file yang dihasilkan memutar video dengan benar. Dari sini, Anda dapat mentransmisikan ke mp4 seperti biasa jika Anda suka:
sumber
2017 jawaban
Ketika saya mengeksekusi
ffmpeg -i some.ts -c copy some.mp4
pada video tertentu, saya mendapatkan pesan kesalahan ini:Tidak mengherankan, mengeksekusi
ffmpeg -i some.ts -c copy -bsf:a aac_adtstoasc some.mp4
memperbaikinya.sumber
ffmpeg
dan sekarang akan melakukan ini secara otomatis.Menyatukan semua
Menggunakan jawaban Juan Aquino (dan mengoreksi perintah pertama agar kompatibel dengan Bash dan menggunakan pemesanan file secara alami), ditambah jawaban 7vujy0f0hy, skrip kerja sederhana untuk shell Bash Linux adalah:
sumber
Anda dapat melakukan penggabungan sederhana seperti (dengan bash):
Menggantikan
<number>
dengan angka tertinggi (jelas). Varian dengan ffmpeg tidak berfungsi dengan baik. File video output akan gagap aneh.Saya menggunakan for loop untuk memastikan urutan file yang benar. Mungkin Anda tidak membutuhkannya. Mungkin bahkan mungkin untuk menyalurkan output ke ffmpeg dan mengonversinya menjadi mp4 dengan cepat.
sumber
Cara yang benar untuk menggabungkan beberapa file video dari daftar putar m3u8 adalah
ffmpeg -i "index.m3u8" -codec copy output.mp4
-codec copy
untuk menghindari pengkodean*.mp4
baik-baik saja tetapi tampaknya agak lambat untuk mux ketika playlist diambil dari web*.mkv
atau*.ts
bekerja paling baik untuk sayasumber
Semua jawaban populer untuk pertanyaan ini yang menyesatkan pembaca untuk menggabungkan file TS sebelum menjalankan ffmpeg salah. Untuk memastikan audio dan video tidak tidak sinkron selama perakitan aliran mp4, fitur "-f concat" ffmpeg yang penting harus digunakan.
Dua baris kode persiapan hanya membuat file yang berisi daftar file TS dalam format baris ini:
sumber