Saya ingin menggabungkan 2 video menggunakan ffmpeg. Saya menggunakan:
ffmpeg -i output1.mp4 -scodec copy -vbsf h264_mp4toannexb i0.ts
Tapi file mp4 yang saya dapatkan terlihat jauh lebih buruk daripada file sumbernya.
Berikut ini informasi tentang kedua file tersebut
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output1.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isom
creation_time : 2013-06-13 15:40:36
Duration: 00:00:15.72, start: 0.000000, bitrate: 2053 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 1931 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 128 kb/s
Input #0, mpegts, from 'i0.ts':
Duration: 00:00:15.64, start: 1.400000, bitrate: 1382 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: Libav
Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0.1[0x101](und): Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
Bagaimana saya bisa menyelesaikan masalah ini?
output1.mp4
,, dan satu outputi0.ts
,. Pengkodean ke wadah keluaran akan menggunakanmpeg2video
encoder secara default (setidaknya dengan build Anda), dan terakhir kali saya memeriksa bitrate default atau pengaturan kualitas untuk encoder ini adalah-b:v 200k
yang terlalu rendah untuk kebanyakan kasus.output1.mp4
, dll.) Memiliki format, laju bingkai, dan ukuran bingkai yang sama?Jawaban:
Pertimbangkan untuk menggunakan
concat
demuxer . Dengan cara ini Anda dapat menghindari membuat file-file sementara yang hilang dan melompati langkah tambahan pengkodean ulang.Catatan: Semua input harus memiliki tipe aliran yang sama (format yang sama, basis waktu yang sama, dll.).
Buat file teks dan sertakan jalur dan nama masing-masing file untuk menyatukan (atau "bergabung"). Contoh file,
input.txt
:Sekarang Anda dapat menggunakan
concat
demuxer:Jika Anda tidak memiliki fitur ini, maka ffmpeg Anda terlalu tua, atau Anda menggunakan ffmpeg "palsu" dari garpu libav.
Bangun statis yang mudah digunakan tersedia untuk Linux, OS X, dan Windows via halaman unduh FFmpeg , atau Anda dapat mengikuti panduan langkah demi langkah untuk mengkompilasi ffmpeg .
Lihat juga:
sumber
1-liner tercepat adalah:
sumber
ffmpeg -safe 0 -f concat -i <(find . -type f -name '*' -printf "file '$PWD/%p'\n" | sort) -c copy output.mkv
(mkv menerima lebih banyak codec daripada mp4, tetapi Anda juga bisa mencobanya dengan mp4). Ini-safe 0
untuk versi ffmpeg terbaru yang mengeluhkan nama file yang tidak aman , dan-type f
hanya untuk daftar file. Saya menambahkan| sort
untuk mengurutkan file berdasarkan abjad; karenafind
membacanya agar disimpan di sistem file. Juga berfungsi untuk file dengan spasi putih.