thắc mắc Làm thế nào để ffmpeg sử dụng 100% GPU?

ffmpeg -i input.mkv -c:v h264_nvenc -crf 18 -vf format=yuv420p -c:a copy output.mp4

Mình xài câu lệnh trên để convert H265 10bit.mkv sang H264.mp4 mà lâu quá, có câu lệnh nào tối ưu hơn không bác?
Hay chỉ cần từ H265 10bit.mkv sang H265 10bit.mp4 thôi cũng được

Nếu chỉ cần đổi container thì nó là remux thôi và nó nhanh chứ nhỉ. Bình thường mình ít khi thấy H265 10 bit trong MP4 container. Nếu player mà không hỗ trợ H265 10 bit thì đổi container chắc cũng không chạy được đâu ...
ffmpeg -i input.mkv -c copy output.mp4

Ấn phát xong luôn. Cỡ 0.5 giây gì đấy cái file này
General
Complete name : E:confused:Tools\ffmpeg\bin\hdr.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/mp41)
File size : 383 MiB
Duration : 49 s 928 ms
Overall bit rate mode : Variable
Overall bit rate : 64.4 Mb/s

Video
ID : 1
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main [email protected]@High
HDR format : SMPTE ST 2094 App 4, Version 1, HDR10+ Profile A compatible
Codec ID : hev1
Codec ID/Info : High Efficiency Video Coding
Duration : 49 s 799 ms
Bit rate : 55.5 Mb/s
Width : 3 840 pixels
Height : 2 160 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 24.037 FPS
Minimum frame rate : 23.810 FPS
Maximum frame rate : 16 000.000 FPS
Original frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0 (Type 2)
Bit depth : 10 bits
Bits/(Pixel*Frame) : 0.278
Stream size : 329 MiB (86%)
Language : English
Color range : Limited
Color primaries : BT.2020
Transfer characteristics : PQ
Matrix coefficients : BT.2020 non-constant
Mastering display color pri : BT.2020
Mastering display luminance : min: 0.0000 cd/m2, max: 1000 cd/m2
Maximum Content Light Level : 2279 cd/m2
Maximum Frame-Average Light : 256 cd/m2
mdhd_Duration : 49799
Codec configuration box : hvcC

Audio
ID : 2
Format : DTS XLL
Format/Info : Digital Theater Systems
Commercial name : DTS-HD Master Audio
Codec ID : mp4a-A9
Duration : 49 s 928 ms
Source duration : 49 s 919 ms
Bit rate mode : Variable
Bit rate : 9 039 kb/s
Channel(s) : 8 channels
Channel layout : C L R LFE Lb Rb Lss Rss
Sampling rate : 48.0 kHz
Frame rate : 93.750 FPS (512 SPF)
Bit depth : 24 bits
Compression mode : Lossless
Stream size : 53.8 MiB (14%)
Source stream size : 53.8 MiB (14%)
Title : DTS:X
Language : English
Default : Yes
Alternate group : 1
 
Last edited:
Nếu chỉ cần đổi container thì nó là remux thôi và nó nhanh chứ nhỉ. Bình thường mình ít khi thấy H265 10 bit trong MP4 container. Nếu player mà không hỗ trợ H265 10 bit thì đổi container chắc cũng không chạy được đâu ...


Ấn phát xong luôn. Cỡ 0.5 giây gì đấy cái file này
Ok để thử câu lệnh này xem
 
Nếu chỉ cần đổi container thì nó là remux thôi và nó nhanh chứ nhỉ. Bình thường mình ít khi thấy H265 10 bit trong MP4 container. Nếu player mà không hỗ trợ H265 10 bit thì đổi container chắc cũng không chạy được đâu ...


Ấn phát xong luôn. Cỡ 0.5 giây gì đấy cái file này
Get-ChildItem -Path C:confused:ffmpeg\ab | ForEach-Object { ffmpeg -i $.FullName -c:v h264_nvenc -crf 16 -c:a copy -y "C:confused:ffmpeg\ab\b2\$($.Name).mp4" }
tôi xài lệnh này để convert tất cả các file trong C:confused:ffmpeg\ab sang mp4 và bỏ vô folder C:confused:ffmpeg\ab\b2 thì thấy các file output bitrate bị giảm đi hơn 1 nửa có cách nào khắc phục không bác?

p/s: đã thêm -b:v 4000k hoặc -b 4000k -minrate 4000k -maxrate 4000k nhưng không thấy thay đổi gì!
 
Get-ChildItem -Path C:confused:ffmpeg\ab | ForEach-Object { ffmpeg -i $.FullName -c:v h264_nvenc -crf 16 -c:a copy -y "C:confused:ffmpeg\ab\b2\$($.Name).mp4" }
tôi xài lệnh này để convert tất cả các file trong C:confused:ffmpeg\ab sang mp4 và bỏ vô folder C:confused:ffmpeg\ab\b2 thì thấy các file output bitrate bị giảm đi hơn 1 nửa có cách nào khắc phục không bác?

p/s: đã thêm -b:v 4000k hoặc -b 4000k -minrate 4000k -maxrate 4000k nhưng không thấy thay đổi gì!

Bạn check docs của NVENC nhé
https://gist.github.com/nico-lab/e1ba48c33bf2c7e1d9ffdd9c1b8d0493

Ít nhất là -crf không có tác dụng rồi đấy. nvenc nó dùng 2 cái flag bên dưới

-cbr <boolean> E..V....... Use cbr encoding mode (default false)

-rc
constqp 0 E..V....... Constant QP mode
vbr 1 E..V....... Variable bitrate mode
cbr 2 E..V....... Constant bitrate mode

Còn thay đổi hẳn encoding thì nó ra khác bitrate ban đầu là đúng rồi.
Nói thêm 1 chút là sử dụng các kỹ thuật encoding khác nhau, các codec khác nhau thì bit rate giống nhau chất lượng khác nhau là bình thường. Có những kỹ thuật chất lượng rất tốt ở một số điều kiện nhưng lại kém ở điều kiện khác (các biến số như bit rate, tốc độ encode, mức độ khác nhau giữa các khung hình, dynamic range của từng khung hình... )
 
Bạn check docs của NVENC nhé
https://gist.github.com/nico-lab/e1ba48c33bf2c7e1d9ffdd9c1b8d0493

Ít nhất là -crf không có tác dụng rồi đấy. nvenc nó dùng 2 cái flag bên dưới

-cbr <boolean> E..V....... Use cbr encoding mode (default false)

-rc
constqp 0 E..V....... Constant QP mode
vbr 1 E..V....... Variable bitrate mode
cbr 2 E..V....... Constant bitrate mode

Còn thay đổi hẳn encoding thì nó ra khác bitrate ban đầu là đúng rồi.
Nói thêm 1 chút là sử dụng các kỹ thuật encoding khác nhau, các codec khác nhau thì bit rate giống nhau chất lượng khác nhau là bình thường. Có những kỹ thuật chất lượng rất tốt ở một số điều kiện nhưng lại kém ở điều kiện khác (các biến số như bit rate, tốc độ encode, mức độ khác nhau giữa các khung hình, dynamic range của từng khung hình... )
đọc mà không hiểu bác ơi, chỉ muốn tìm 1 câu lệnh xài được thôi :)
 
1692690701495.png


1692690837544.png


Trước tiên thử

Chỉ dùng -rc cbr và -b:v 4000K

Bỏ bớt mấy cái kia đi
 
Back
Top