Sử dụng ffmpeg để cắt video mkv


4

Tôi hoàn toàn bị mất với ffmpeg Tôi có một mkv có thời lượng 4:33 và tôi muốn cắt bỏ kết thúc từ 4:20

Tôi đã thử nhiều cách khác nhau:

1) Không cắt giảm

~ > ffmpeg -t 00:04:20 -acodec copy -vcodec copy -i output3.mkv output3-cut.mkv
FFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 12 2012 16:27:34, gcc: 4.4.3

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
  Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
    Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4109 fps=3864 q=-1.0 Lsize=   36017kB time=272.48 bitrate=1082.8kbits/s    
video:33503kB audio:2344kB global headers:0kB muxing overhead 0.477241%

2) Cắt xuống 4:25 nếu tôi chỉ định 4m15s 4m05s 4m và các giây khác sau 4m, với cùng kích thước tệp kết quả. Nó giảm xuống còn 3:25 bất kể giá trị giây nếu tôi chỉ định 3 m50 hoặc 30m một số giá trị s

~ > ffmpeg -t 4m20s -acodec copy -vcodec copy -i output3.mkv oFFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Jun 12 2012 16:27:34, gcc: 4.4.3

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
  Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
    Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4001 fps=3570 q=-1.0 Lsize=   35240kB time=266.71 bitrate=1082.4kbits/s    
video:32781kB audio:2292kB global headers:0kB muxing overhead 0.475784%
utput3-cut.mkv

3) Làm việc chăm chỉ và thời gian dài và cắt chính xác đến 4:20 nhưng tạo ra một tệp khổng lồ, thay đổi kích thước tệp từ 35Mb thành 113Mb !!!

ffmpeg -i output3.mkv -ss 00:00:00 -t 00:04:20 -sameq output3-cut.mkv

Cách đúng để cắt một tập tin mkv là gì?

ps

Tôi cũng đã thử mencoder nhưng nó làm hỏng đoạn âm thanh


Bằng cách này, sameqkhông không có nghĩa là "cùng chất lượng". Chỉ cần quên rằng tùy chọn này tồn tại và không bao giờ sử dụng lại, xin vui lòng :)
slhck

vâng, nó có vẻ giống như chất lượng tương tự)
zuba

Câu trả lời:


8

Về lý thuyết, điều này là đủ:

ffmpeg -i output3.mkv -t 00:04:20 -c:v copy -c:a copy output-cut.mkv

Đọc dưới dạng: Nhập video MKV, mã hóa 4:20 phút, sao chép dòng bit âm thanh và video và lưu chúng vào tệp đầu ra.

Nếu bạn gặp vấn đề với đồng bộ hóa, hãy thử mã hóa lại âm thanh và video:

ffmpeg -i output3.mkv -t 00:04:20 -c:v libx264 -c:a libfaac output-cut.mkv

Tất nhiên, bạn có thể chỉ định chất lượng video với -crf 23và chất lượng âm thanh với -b:a 192k, thay đổi các tham số đó. Đọc bài viết trên blog FFmpeg của chúng tôi để biết thêm.


Đây là những gì sai về các lệnh của bạn:

  • Bạn đang sử dụng phiên bản FFmpeg lỗi thời khủng khiếp. Vui lòng biên dịch nó từ nguồn hoặc tải xuống một nhị phân được biên dịch sẵn từ trang chủ. Điều này sẽ làm giảm khả năng chạy vào lỗi.

  • -acodec copy -vcodec copykhông thể đến trước khi các -itùy chọn. Bất cứ điều gì trước khi -inói với FFmpeg để giải mã video đầu vào. Không có "bộ giải mã sao chép" - điều đó không có ý nghĩa. Thứ tự của các tùy chọn là quan trọng ở đây. -c:a copy-c:v copyđến sau tùy chọn đầu vào và trước đầu ra.

  • -t 4m20slà cú pháp sai: Thời lượng có thể là một số tính bằng giây hoặc bằng hh:mm:ss[.xxx].

  • -tkhông thể đến trước khi -imột trong hai.

  • -ss 00:00:00 là không liên quan, nó sẽ chỉ nói với FFmpeg bắt đầu lại từ đầu, điều mà nó luôn luôn làm.


Tôi đã thử ffmpeg -i output3.mkv -t 00:04:20 -c:v copy -c:a copy output3-cut.mkvvà nhận được ffmpeg: unrecognized option '-c:v' Sau đó ffmpeg -i output3.mkv -t 00:04:20 -vcodec copy -acodec copy output3-cut.mkvkhông có may mắn. Nó tạo ra các tập tin có cùng kích thước và thời lượng. Sau đó, tôi đã thử ffmpeg -i output3.mkv -t 00:04:20 -vcodec libx264 -acodec libfaac output3-cut.mkv(không rõ nguyên nhân -c: v) và Unknown encoder 'libfaac' tôi đã sử dụng ffmpeg SVN-r0.5.9-4: 0.5.9-0ubfox0.10.04.1 từ deb repo. Tôi đoán tôi nên biên dịch nó tốt hơn từ các nguồn.
zuba

Cảm ơn bạn đã url! - Tôi sẽ đi sâu vào việc biên dịch ffmpeg ngay bây giờ
zuba

Các c:vcú pháp không được hỗ trợ trong phiên bản cũ. AAC nên có sẵn thông qua libfaachoặc libvo_aacenc.
slhck

Các bộ mã hóa AAC được hỗ trợ khác là: aac(bộ mã hóa ffmpeg AAC gốc) libfdk_aac, và libaacplus. Các lib*bộ mã hóa là các thư viện bên ngoài, vì vậy ffmpeg của bạn sẽ phải được cấu hình để hỗ trợ chúng.
llogan

@LordNeckbeard Tôi mới biết rằng Zeranoe xây dựng rõ ràng là không bó libfaac(nữa?)
slhck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.