Chuyển đổi video từ 1080p sang 720p với giảm chất lượng nhỏ nhất bằng ffmpeg


45

Tôi xếp chồng với bộ phim chất lượng cao của mình: 1080p với 60 khung hình / giây. Rắc rối là chậm trễ trong khi chơi.

Tôi đã cố gắng chuyển đổi nó thành 720p với ffmpeg:

ffmpeg -i MyMovie.mkv -r 60 -s hd720 MyMovie_720p.mkv

Nhưng tôi bị giảm chất lượng đáng kể vì tốc độ bit giảm từ 32,3 Mb / giây xuống còn 2,8 Mb / giây. Làm cách nào tôi có thể chỉ định tốc độ bit phải cho luồng video và để lại tất cả các luồng khác được sao chép nguyên sơ?

Nhập tập tin mediainfo:

ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.2
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 2h 58mn
Bit rate                                 : 32.3 Mbps
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 59.940 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.260
Stream size                              : 40.2 GiB (92%)
Writing library                          : x264 core 116 r2019 9cc407d
Encoding settings                        : cabac=1 / ref=4 / deblock=1:-2:-1 / analyse=0x3:0x113 / me=umh / subme=10 / psy=1 / psy_rd=0.80:0.20 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-3 / threads=6 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=6 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=0 / crf=14.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=50000 / vbv_bufsize=62500 / crf_max=0.0 / nal_hrd=none / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:0.60
Language                                 : English
Default                                  : Yes
Forced                                   : No
Matrix coefficients 

                 : BT.709-5, BT.1361, IEC 61966-2-4 709, SMPTE RP177

Câu trả lời:


93

Dưới đây là một ví dụ sẽ cung cấp cho bạn video chất lượng cao nhất (Tôi không nói về kích thước tệp kết quả). Lưu ý rằng video này có thể không phát được trên tất cả các thiết bị hoặc trình phát:

ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 0 -preset veryslow -c:a copy MyMovie_720p.mkv

Để có được chất lượng "không mất mát", bạn có thể sử dụng:

ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow -c:a copy MyMovie_720p.mkv

Bây giờ hãy xem những gì chúng ta có ở đây:

Bộ lọc video tỷ lệ là để thay đổi kích thước video. Bạn chỉ cần đặt một kích thước - đó là chiều cao trong ví dụ này - và sử dụng -1cho kích thước khác. ffmpeg sẽ tự động tính toán lại giá trị chính xác trong khi duy trì tỷ lệ khung hình.

Kiểm soát chất lượng với -crftùy chọn:

Phạm vi của thang đo lượng tử hóa là 0-51: trong đó 0 là lossless, 23 là mặc định và 51 là tồi tệ nhất có thể. Giá trị thấp hơn là chất lượng cao hơn và phạm vi lành mạnh chủ quan là 18-28. Xem xét 18 là tổn thất trực quan hoặc gần như vậy: nó sẽ trông giống hoặc gần giống với đầu vào nhưng về mặt kỹ thuật thì không mất mát.

Phạm vi là theo cấp số nhân, do đó, tăng giá trị CRF +6 gần bằng một nửa tốc độ bit trong khi -6 gần gấp đôi tốc độ bit. Sử dụng chung là chọn giá trị CRF cao nhất mà vẫn cung cấp chất lượng chấp nhận được. Nếu đầu ra có vẻ tốt, sau đó thử giá trị cao hơn và nếu nó trông xấu thì chọn giá trị thấp hơn.

Bạn có thể tìm thêm thông tin trong hướng dẫn mã hóa x264 .

Bạn kiểm soát sự cân bằng giữa tốc độ mã hóa video và hiệu quả nén với các -presettùy chọn. Đó là cực nhanh, cực nhanh, rất nhanh, nhanh, nhanh, trung bình, chậm, chậm, rất chậm . Mặc định là trung bình . Các veryslow tùy chọn cung cấp hiệu quả nén tốt nhất (kết quả trong một kích thước tập tin nhỏ hơn cho chất lượng tương đương) nhưng nó là rất chậm - như tên gọi của mình.

Âm thanh sẽ được sao chép trực tiếp từ tệp đầu vào sang tệp đầu ra mà không có bất kỳ thay đổi nào.


2
LordNeckbeard - cảm ơn đã chỉnh sửa. Tôi không có đủ thời gian để nhập tất cả các chi tiết
Nikola Dimitrijevic

1
Ví dụ của bạn là thiết lập chiều cao thành 720 không phải chiều rộng.
chovy

Bạn có thể làm điều này ngược video.stackexchange.com/questions/20439/ trộm
William

2
Để sao chép phụ đề trong mkv mà không cần chuyển đổi, bạn có thể thêm -scodec copy.
Casper

2
Tôi nghĩ để có được 720p bạn phải đặt chiều rộng thành 1280 tức là không -vf scale=-1:720nhưng -vf scale=1280:-1.
cdlvcdlv

0

Trong trường hợp bạn muốn chia tỷ lệ theo kích thước khác, có một số hạn chế về kích thước tỷ lệ FFMPEG. Nó không chấp nhận mỗi chiều cao, đây là một danh sách nhỏ các đề xuất tốt nhất cho kích thước.

Bộ giải mã video hoạt động tốt hơn khi chiều rộng và chiều cao tính bằng pixel là bội số của 16. Trong khi bạn có thể sử dụng bất kỳ chiều rộng và chiều cao nào trong cài đặt mã hóa của mình, kích thước không tối ưu có thể dẫn đến chất lượng hình ảnh kém và tốc độ khung hình giảm. Để có chất lượng hình ảnh và phát lại tốt nhất, bạn nên sử dụng kích thước chiều rộng và chiều cao cho video của mình là bội số của 16; lựa chọn tốt nhất tiếp theo của bạn là bội số của 8 và sau đó là bội số của 4.

Recommended width and height for videos with 16:9 aspect ratios:

Best Choice:     2nd Best:        3rd Best:
Multiples of 16  Multiples of 8   Multiples of 4
1920 x 1080      1792 x 1008      1856 x 1044
1280 x 720       1152 x 648       1216 x 684
1024 x 576        896 x 504       1088 x 612
 768 x 432        640 x 360        960 x 540
 512 x 288        384 x 216        832 x 468
 256 x 144        128 x 72         704 x 396
                                   576 x 324
                                   448 x 252
                                   320 x 180
                                   192 x 108
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.