Ekstrak bagian dari video dengan perintah satu baris

81

Jika saya memiliki video, biasanya avi, tetapi bisa berupa apa saja, dan saya ingin membuat yang lain dalam format yang sama tetapi hanya sebagian, posisi i detik hingga f detik ke dalam video, apa perintah satu-baris yang harus dilakukan ini?

Strapakowsky
sumber

Jawaban:

114

Ini dapat dilakukan dengan menggunakan mencoderdan ffmpeg.

mencoder

Katakanlah Anda ingin memotong bagian mulai pukul 00:00:30 ke dalam file asli dengan panjang 5 detik dan itu tidak boleh di-re-encode (jika Anda ingin menyandikan ulang, Anda harus mengganti copydengan audio dan video codec, untuk daftar masalah codec audio yang tersedia mencoder -oac help, untuk daftar masalah codec video yang tersedia mencoder -ovc help), maka Anda mengeluarkan:

mencoder -ss 00:30:00 -endpos 00:00:05 -oac copy -ovc copy originalfile -o newfile

Anda harus mengganti orginalfiledan newfiledengan nama file yang sebenarnya, nanti adalah nama file yang dibuat untuk menahan bagian yang dipotong.

ffmpeg

Katakanlah Anda ingin memotong bagian mulai pukul 00:00:30 ke dalam file asli dengan panjang 5 detik dan itu tidak boleh disandikan ulang (jika Anda ingin menyandikan ulang, Anda harus mengganti copydengan codec audio dan video, untuk daftar masalah codec yang tersedia ffmpeg -formats -E), maka Anda mengeluarkan:

ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile

Anda harus mengganti orginalfiledan newfiledengan nama file yang sebenarnya, nanti adalah nama file yang dibuat untuk menahan bagian yang dipotong.


Untuk referensi, lihat http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html dan "7. Salin Hanya Sebagian Video" di http: // segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

NN
sumber
Saya mencobanya dan gagal. Dapatkah Anda menunjukkan kepada saya apa perintahnya bagi Anda dengan codec khas yang akan Anda gunakan untuk avi, flv dan mpg? Saya mendaftar codec tetapi tidak bisa memahaminya.
Strapakowsky
@strapakowsky Tergantung pada file input dan codec apa yang telah Anda instal. Mungkin Anda harus membuat pertanyaan baru untuk itu dan menambahkan informasi tentang file apa yang Anda punya dan perintah apa yang Anda coba.
NN
@strapakowsky Saya tidak bisa membuatnya bekerja dengan ffmpeg juga, tetapi semua panduan tentang memotong bagian dengan ffmpeg menunjukkan bahwa itu harus bekerja entah bagaimana, jadi saya menyimpannya dalam jawaban saya. Namun, saya juga menambahkan garis mencoder yang saya mulai bekerja.
NN
Baru saja menggunakan versi ini. Itu tidak bekerja untuk Anda karena -ss ... -t ...kebutuhan untuk menjadi sebelum itu -i infilepilihan. Lihat jawaban ini untuk liner nyata. Anda hampir mendapatkannya, bukan pesanannya ...
Hendy
1
@Hendy Diedit dengan benar
NN
25

Apakah Anda perlu memotong video dengan pengodean ulang atau tanpa mode pengodean ulang? Anda dapat mencoba mengikuti perintah di bawah ini.

Sinopsis: ffmpeg -i [input_file] -ss [start_seconds] -t [durasi_seconds] [output_file]

gunakan FFmpeg memotong video mp4 tanpa pengodean ulang

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

gunakan FFmpeg memotong video mp4 dengan pengodean ulang

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 cut_video.mp4

Jika Anda ingin memotong bagian dari awal, cukup jatuhkan -t 00:00:10dari perintah

Ben Wong
sumber
0

medipack adalah aplikasi baris perintah yang sangat sederhana sebagai penutup ffmpeg.

Anda dapat melakukan pemangkasan video menggunakan perintah ini:

medipack trim input.mp4 -s 01:04 -e 14:08 -o output.mp4
medipack trim input.mp4 -s 01:04 -t 13:04 -o output.mp4

Anda dapat melihat opsi sub-perintah trim sebagai:

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

Anda juga dapat menjelajahi opsi lain menggunakan medipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Display version number

Anda dapat mengunjungi https://github.com/srbcheema1/medipack dan checkout contoh di README.

srbcheema1
sumber
-1

Untuk lebih tepatnya, Anda dapat: MANUAL: Buka file dalam media player yang akan membingkai dengan frame (potplayer favorit saya tetapi MPC-HC berfungsi) dan memainkan file AVISynth dengan data seperti:

DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)

ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)

Kemudian potong dengan format waktu EXACT:

ffmpeg -i "Path\do you want him.flv" -ss 00:00:05.240 -to 00:00:08.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him1.flv"

dan

ffmpeg -i "Path\do you want him.flv" -ss 00:00:10.240 -to 00:00:14.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him2.flv"

Jika Anda ingin bergabung, buat file txt dengan file video dengan konten seperti:

file 'C:\Downloads\Video\Do you want him1.flv'

file 'C:\Downloads\Video\Do you want him2.flv'

Jalankan ffmpeg:

ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"

SECARA PROGRAM Saya menulis sebuah program tetapi tidak memiliki level 10 untuk menunjukkannya, maaf

Budman1
sumber