Saya perlu memotong hanya 1 atau 2 detik pertama dari serangkaian rekaman FLV dengan panjang yang bervariasi dan tidak ditentukan. Saya telah menemukan banyak sumber daya untuk mengekstraksi durasi tertentu dari video (mis. Klip 30 detik), tetapi tidak ada untuk melanjutkan ke akhir video.
Kedua upaya ini hanya menghasilkan versi video yang disalin, tanpa pemangkasan yang diinginkan:
ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv
ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv
Pikiran yang kedua adalah: mungkin jika saya menentukan panjang melampaui apa yang mungkin, itu hanya akan berakhir. Tidak ada dadu.
Saya tahu ini bukan masalah dengan codec atau menggunakan detik alih-alih kode waktu karena yang berikut ini berhasil:
ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv
Ada ide lain? Saya terbuka untuk menggunakan alat-alat baris perintah (berbasis Windows) lainnya, namun saya sangat menyukai ffmpeg karena saya sudah menggunakannya untuk pembuatan thumbnail dan saya akrab dengannya.
Jika itu membantu, semua video saya akan berada di bawah 2 menit.
MEMPERBARUI:
Saya telah beralih untuk menggunakan Mencoder ( http://www.mplayerhq.hu/ ) karena sepertinya ffmpeg tidak akan mencapai ini tanpa beberapa peretasan tambahan.
Sintaks Mencoder untuk menyelesaikan apa yang ingin saya lakukan adalah:
mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv
mencoder
contoh, di atas; atauffmpeg
contohnya, di bawah ini?Jawaban:
Mencoba:
Saya pikir parameter input seharusnya menjadi yang pertama.
sumber
-i
) saat menyalin, atau bahkan transcoding dengan versi FFmpeg yang lebih lama, menggunakan pencarian keyframe. Ini jauh lebih cepat, tetapi mengorbankan akurasi. Jika Anda menggunakannya sebagai parameter output, proses ini berpotensi jauh lebih lambat (input didekodekan frame demi frame bahkan untuk bagian yang dibuang), tetapi akurat. Meskipun pertanyaannya sudah lama, saya pikir ini harus menjadi jawaban yang diterima.Ternyata perintah ini akan memotong video dari 2 detik aktif, seperti yang diharapkan:
Masalahnya adalah dengan interval keyframe di input.flv. Itu diatur ke 5 detik, yang menghasilkan bingkai hitam bernilai 3 detik pada awal video (5 - 2 = 3). Saya telah mengubah interval keyframe saya menjadi 1 detik, meskipun 2 detik mungkin juga akan menghasilkan hasil yang diinginkan dalam kasus saya.
PEMBARUAN: Pemesanan urutan
-i
dan-ss
parameter per jawaban Dave, yang telah saya terima untuk kredit.sumber
-vcodec copy -acodec copy
untuk semua perintah pengeditan saya. Pengodean ulang mencegah bingkai hitam dari awal video saya atau tidak memotong di tempat yang tepat (perbedaan satu detik tanpa pengodean ulang diterjemahkan menjadi perbedaan hampir 5 detik dalam video). Jadi, saya akhirnya mengganti-vcodec copy
dengan-vcodec libx264 -crf 0
.-vcodec copy
karena irisan tidak mulai pada keyframe. Saya mendapatkan gambar diam atau gambar hitam selama N detik hingga keyframe berikutnya. Jika saya benar-benar menyandi ulang, alih-alih menyalin, ia berfungsi seperti yang diharapkan. Jadi meskipun input dan output saya sama-sama H264, saya masih perlu mengkode ulang (menggunakan-vcodec libx264
bukan-vcodec copy
).-i
harus datang sebelum-ss
.Gunakan -ss dan -untuk sebelum -i seperti ini:
sumber
Memperbarui jawaban ini, per 2019 perintahnya sekarang:
sumber