thắc mắc Code ffmpeg cho việc render video

  • Người tạo chủ đề Người tạo chủ đề KanNonBoZ
  • Ngày bắt đầu Ngày bắt đầu
Render nhiều lần cùng 1 video thì ko tốt lắm, với lại cũng mất thời gian thật. Cơ mà cái này thì ko vội được, thím phải liệt kê rõ từng cái mục đích, rồi hẵng giải quyết và gộp từng cái một, cuối cùng là test với vài file video ngắn cái đã. Đừng gộp nhiều cái cùng lúc nó sẽ cực kỳ rối
Mà mình gộp có theo quy chuẩn nào bác nhỉ, mỗi cái option cách nhau dấu "," ";" hay sao ạ
 
Mà mình gộp có theo quy chuẩn nào bác nhỉ, mỗi cái option cách nhau dấu "," ";" hay sao ạ
Có theo quy chuẩn hết ấy thím. Thím đọc đây là rõ nhất, nó có cả ví dụ ấy
https://trac.ffmpeg.org/wiki/FilteringGuide

Theo như mình hiểu là áp dụng nhiều filter vào cùng 1 chỗ (chain) thì cách nhau bằng dấu ","
Sau đó lấy output từ cái đống filter đó tiếp tục làm 1 mục đích khác (trong cùng 1 dòng lệnh) thì cách nhau bằng dấu ";"
Giữa các dấu ";" thì đặt biến gì cũng được để biểu thị output của cái chain đó ([a], [f], [blahblahblah]... hay gì đó). Output của chain cũ sẽ là input của chain mới.
Mình hiểu mang máng là thế
 
Có theo quy chuẩn hết ấy thím. Thím đọc đây là rõ nhất, nó có cả ví dụ ấy
https://trac.ffmpeg.org/wiki/FilteringGuide

Theo như mình hiểu là áp dụng nhiều filter vào cùng 1 chỗ (chain) thì cách nhau bằng dấu ","
Sau đó lấy output từ cái đống filter đó tiếp tục làm 1 mục đích khác (trong cùng 1 dòng lệnh) thì cách nhau bằng dấu ";"
Giữa các dấu ";" thì đặt biến gì cũng được để biểu thị output của cái chain đó ([a], [f], [blahblahblah]... hay gì đó). Output của chain cũ sẽ là input của chain mới.
Mình hiểu mang máng là thế
Okay e sẽ ngâm cứu thêm, em cảm ơn bác nhiều ạ :3 Mong những điều tốt đẹp sẽ đến với bác nhoa <3
 
thím nào cho mình hỏi về cái ffmpeg này dc ko? Ví dụ code gốc đang dùng libx264 (CPU) để transcode video gốc sang 1280:720, giờ mình muốn dùng GPU và cuda để transcode thì phải cấu hình nào cho chuẩn và tối ưu nhất nhỉ:

Code gốc:

Mã:
ffmpeg -i "/opt/input.mkv" -c:v libx264  -subq 7 -qcomp 0.6 -qmin 10 -qmax 50 -qdiff 4 -bf 16 -coder 1 -refs 6 -x264opts b-pyramid:weightb:mixed-refs:8x8dct:no-fast-pskip=0:stitchable -vprofile high -force_key_frames expr:'gte(t,n_forced*2)' -pix_fmt yuv420p -b:v 946k -s 1280x720 -r 23.976 -g 48 -aspect 1280:720 -c:a aac -filter_complex 'aresample=async=1:min_hard_comp=0.100000:first_pts=0' -strict -2 -b:a 128k -ar 44100 -ac 2 -map_chapters -1 -map_metadata -1  -f mp4 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -trellis 1 -refs 6 -me_range 16 -keyint_min 20 -sc_threshold 40 -i_qfactor 0.71 -bt 700k -maxrate 2500k -bufsize 5000k -rc_eq 'blurCplx^(1-qComp)'  -vsync 1 -crf 23 -threads 4  -y /opt/kaltura/tmp/convert/output_cpu.mp4 >> "/opt/kaltura/tmp/convert/convert_mkv_to_720_mp4_cpu.log" 2>&1
 
thím nào cho mình hỏi về cái ffmpeg này dc ko? Ví dụ code gốc đang dùng libx264 (CPU) để transcode video gốc sang 1280:720, giờ mình muốn dùng GPU và cuda để transcode thì phải cấu hình nào cho chuẩn và tối ưu nhất nhỉ:

Code gốc:

Mã:
ffmpeg -i "/opt/input.mkv" -c:v libx264  -subq 7 -qcomp 0.6 -qmin 10 -qmax 50 -qdiff 4 -bf 16 -coder 1 -refs 6 -x264opts b-pyramid:weightb:mixed-refs:8x8dct:no-fast-pskip=0:stitchable -vprofile high -force_key_frames expr:'gte(t,n_forced*2)' -pix_fmt yuv420p -b:v 946k -s 1280x720 -r 23.976 -g 48 -aspect 1280:720 -c:a aac -filter_complex 'aresample=async=1:min_hard_comp=0.100000:first_pts=0' -strict -2 -b:a 128k -ar 44100 -ac 2 -map_chapters -1 -map_metadata -1  -f mp4 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -trellis 1 -refs 6 -me_range 16 -keyint_min 20 -sc_threshold 40 -i_qfactor 0.71 -bt 700k -maxrate 2500k -bufsize 5000k -rc_eq 'blurCplx^(1-qComp)'  -vsync 1 -crf 23 -threads 4  -y /opt/kaltura/tmp/convert/output_cpu.mp4 >> "/opt/kaltura/tmp/convert/convert_mkv_to_720_mp4_cpu.log" 2>&1
dùng GPU nhanh hơn nhưng chất lượng không bằng CPU đâu thím
 
Ok, nếu là command ffmpeg thì nó có dạng thế này

Cái này cho góc trên bên trái
Mã:
ffmpeg -i "[Video lớn]" -vf "movie=[Video nhỏ]:loop=0,setpts=N/FRAME_RATE/TB,scale=480:-1[f];[in][f] overlay=0:0:shortest=1 [out]" [Option khác] [Video output]

Cái này cho góc dưới bên phải
Mã:
ffmpeg -i "[Video lớn]" -vf "movie=[Video nhỏ]:loop=0,setpts=N/FRAME_RATE/TB,scale=480:-1[f];[in][f] overlay=W-w:H-h:shortest=1 [out]" [Option khác] [Video output]

Chiều dài, chiều rộng video nhỏ thì thím tự chỉnh chỗ 480:-1 là được, mình chỉ ví dụ thôi. Còn toạ độ video thì thím nhìn chỗ overlay đó chắc cũng tự suy luận được thôi. Option khác thì để chỉnh bitrate hay gì đó thì tuỳ thím. Mấy cái còn lại thì giữ nguyên. Có gì thì mai mình giải thích rõ hơn cho, còn giờ buồn ngủ quá 😅
bác ơi cho hỏi làm sao tối ưu dc khả năng sử dụng CPU của ffmpeg thế, ví dụ CPU mình có 16cores, 32 theards mà chạy ffmpeg thấy nhiều lắm nhỉ có 16theards, giờ làm sao để cho nó dùng hết hiệu năng CPU nhỉ?

Code gốc của mình chạy:

ffmpeg -i "/opt/input.mkv" -c:v libx264 -subq 7 -qcomp 0.6 -qmin 10 -qmax 50 -qdiff 4 -bf 16 -coder 1 -refs 6 -x264opts b-pyramid:weightb:mixed-refs:8x8dct:no-fast-pskip=0:stitchable -vprofile high -force_key_frames expr:'gte(t,n_forced*2)' -pix_fmt yuv420p -b:v 946k -s 1280x720 -r 23.976 -g 48 -aspect 1280:720 -c:a aac -filter_complex 'aresample=async=1:min_hard_comp=0.100000:first_pts=0' -strict -2 -b:a 128k -ar 44100 -ac 2 -map_chapters -1 -map_metadata -1 -f mp4 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -trellis 1 -refs 6 -me_range 16 -keyint_min 20 -sc_threshold 40 -i_qfactor 0.71 -bt 700k -maxrate 2500k -bufsize 5000k -rc_eq 'blurCplx^(1-qComp)' -vsync 1 -crf 23 -threads 4 -y /opt/kaltura/tmp/convert/output_cpu.mp4 >> "/opt/kaltura/tmp/convert/convert_mkv_to_720_mp4_cpu.log" 2>&1
 
bác ơi cho hỏi làm sao tối ưu dc khả năng sử dụng CPU của ffmpeg thế, ví dụ CPU mình có 16cores, 32 theards mà chạy ffmpeg thấy nhiều lắm nhỉ có 16theards, giờ làm sao để cho nó dùng hết hiệu năng CPU nhỉ?

Code gốc của mình chạy:

ffmpeg -i "/opt/input.mkv" -c:v libx264 -subq 7 -qcomp 0.6 -qmin 10 -qmax 50 -qdiff 4 -bf 16 -coder 1 -refs 6 -x264opts b-pyramid:weightb:mixed-refs:8x8dct:no-fast-pskip=0:stitchable -vprofile high -force_key_frames expr:'gte(t,n_forced*2)' -pix_fmt yuv420p -b:v 946k -s 1280x720 -r 23.976 -g 48 -aspect 1280:720 -c:a aac -filter_complex 'aresample=async=1:min_hard_comp=0.100000:first_pts=0' -strict -2 -b:a 128k -ar 44100 -ac 2 -map_chapters -1 -map_metadata -1 -f mp4 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -trellis 1 -refs 6 -me_range 16 -keyint_min 20 -sc_threshold 40 -i_qfactor 0.71 -bt 700k -maxrate 2500k -bufsize 5000k -rc_eq 'blurCplx^(1-qComp)' -vsync 1 -crf 23 -threads 4 -y /opt/kaltura/tmp/convert/output_cpu.mp4 >> "/opt/kaltura/tmp/convert/convert_mkv_to_720_mp4_cpu.log" 2>&1
Thím thử thêm -threads 32 xem
 

Thống kê chủ đề

Ngày tạo
KanNonBoZ,
Người trả lời cuối
eipi10,
Trả lời
40
Lượt xem
6.262
Quay lại
Lên đầu trang