thảo luận Tổng hợp, thảo luận về ffmpeg

À, như mình nói ở trên, mỗi video có các keyframe riêng, nếu thím cắt ngẫu nhiên mà ko re-encode lại (tức là dùng lệnh -c copy) thì chưa chắc đã cắt được đâu. Ví dụ video trên của thím các keyframe nó như thế này
View attachment 488565
Như vậy thì cắt từ 3s đầu trở đi thì ok.

Còn nếu ví dụ video có các keyframe như này
View attachment 488567

Thì ko có cách nào thím cắt 10s đầu trở đi, hoặc cắt đoạn từ 25-30s mà giữ nguyên chất lượng, ko re-encode lại cả (tức là -c copy)
vậy giờ bỏ -c copy thì có thay đổi chất lượng video ko thím
 
Bỏ -c copy thì nó sẽ encode lại video, tức là chất lượng sẽ thay đổi theo thông số mặc định của ffmpeg, nên thím sẽ phải thiết lập lại thông số video output. Cơ mà video trên mình cắt bt mà nhỉ :sweat:

https://gofile.io/d/b0pMIG
cái thím cắt phải đến khoảng này hình mới bắt đầu chạy, giống như cái e cắt. E vừa bỏ -c copy thì lại giống như mấy trường hợp trước, e vừa up lên thím xem thử:sweat:
1617960271383.png
 
Hmm, clip gốc đến thời điểm 3.1s thì cái đoạn kia kết thúc, nên là e thử cut hẳn 4s:
cắt bằng avidemux thì nó vẫn xuất hiện cái khung hình kia
cắt bằng ffmpeg -c copy thì vẫn tình trạng tiếng chạy trước hình chạy sau
bỏ -c copy thì mới đc clip như mong muốn:sweat:
 
cái thím cắt phải đến khoảng này hình mới bắt đầu chạy, giống như cái e cắt. E vừa bỏ -c copy thì lại giống như mấy trường hợp trước, e vừa up lên thím xem thử:sweat:
View attachment 488613
À ok như thế này, nếu thím muốn cắt mà ko re-encode thì trước tiên thím cần phải có cái list các keyframe này

1617959365809-png.488565


Sau đó thì để cái flag -ss ở phía trước (để chính xác khoảng thời gian sau dấu chấm) -i và thêm -copyts (cho dễ hiểu cắt từ thời gian A đến B)
Code:
ffmpeg -ss 3.003 -i input.mp4 -c copy -copyts output.mp4
 
Last edited:
Hình này là tool nào vậy thím?
À cái này từ FFmpeg Batch thím:
https://www.videohelp.com/software/FFmpeg-Batch

Bấm vào keyframes nó hiện ra cái list cho mình
unknown.png

Nhược điểm là nó chỉ hiển thị theo giây thôi, nếu làm video dài thì chịu khó đổi từ giờ phút sang giây để ước lượng tương ứng :burn_joss_stick:

// Thím @supperdogg nếu cần xem keyframes thì dùng cái này cho dễ xem cũng được
 
À ok như thế này, nếu thím muốn cắt mà ko re-encode thì trước tiên thím cần phải có cái list các keyframe này

1617959365809-png.488565


Sau đó thì để cái flag -ss ở phía trước (để chính xác khoảng thời gian sau dấu chấm) -i và thêm -copyts (cho dễ hiểu cắt từ thời gian A đến B)
Code:
ffmpeg -ss 3.003 -i input.mp4 -c copy -copyts output.mp4
cái video gốc của e đến thời điểm này là kết thúc của cái khung hình kia
1617964208069.png

và tới thời điểm này thì bắt đầu vào nội dung chính
1617964252011.png


Vậy nên e đã cắt đến 4s và cho nó re-encode , ra đc clip như mong muốn. Nhưng cứ dùng -c copy thì nó lại bị tình trạng hình chỉ chạy sau hơn 1s (vẫn có tiếng). Giờ thím cho e cái lệnh ko cần re-encode mà hình nó chạy chuẩn ngay từ đầu với.
 
cái video gốc của e đến thời điểm này là kết thúc của cái khung hình kia
View attachment 488749
và tới thời điểm này thì bắt đầu vào nội dung chính
View attachment 488754

Vậy nên e đã cắt đến 4s và cho nó re-encode , ra đc clip như mong muốn. Nhưng cứ dùng -c copy thì nó lại bị tình trạng hình chỉ chạy sau hơn 1s (vẫn có tiếng). Giờ thím cho e cái lệnh ko cần re-encode mà hình nó chạy chuẩn ngay từ đầu với.
Thím đừng dùng các thời gian trong avidemux, dùng chính xác cái keyframes như trong ffmpeg thôi, cắt như vậy sẽ ko bị tình trạng kia nữa, để -ss phía trước:
Code:
ffmpeg -ss 3.003 -i input.mp4 -c copy -copyts output.mp4
 
Thím đừng dùng các thời gian trong avidemux, dùng chính xác cái keyframes như trong ffmpeg thôi, cắt như vậy sẽ ko bị tình trạng kia nữa, để -ss phía trước:
Code:
ffmpeg -ss 3.003 -i input.mp4 -c copy -copyts output.mp4
vẫn bị thím ợ, nó còn nhảy 1 phát tới s thứ 3 luôn
1617965194401.png


e mở bằng SMPlayer thì s thứ 3 là điểm bắt đầu của clip
1617965342976.png

thằng pornhub nó làm kiểu gì thế nhỉ:sad:
 
ko thím, cái đấy hình như là do media palyer nó đọc lúc 3s là thời điểm bắt đầi video.
Cơ mà ko cách nào bỏ đc cái hình kia đi nhỉ
Mình mới check lại, hình như ko phải nó đọc lúc 3s đầu mà là vài frame đầu của cái video mình cắt nó còn cái hình kia. Muốn cắt hình thì chỉ còn cách cắt theo kiểu frame như thím Totoro nói ở phía trên thôi thím, mà mình nghĩ hình như cái đó phải re-encode lại video thôi :sweat:
 
Mình mới check lại, hình như ko phải nó đọc lúc 3s đầu mà là vài frame đầu của cái video mình cắt nó còn cái hình kia. Muốn cắt hình thì chỉ còn cách cắt theo kiểu frame như thím Totoro nói ở phía trên thôi thím, mà mình nghĩ hình như cái đó phải re-encode lại video thôi :sweat:
:sad::sad::sad:
 
Back
Top