Tôi muốn trang web của mình cho phép người dùng tạo chính xác các clip của họ từ một video nguồn tôi cung cấp.
Tôi có một tệp video nguồn mà trước tiên tôi muốn chuyển đổi thành một cái gì đó phù hợp cho một trang web:
Input #0, matroska,webm, from 'source.mkv':
Duration: 00:28:18.57, start: 0.000000, bitrate: 10183 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 48 tbc (default)
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s (default)
Tôi sử dụng ffmpeg để chuyển đổi nó như vậy:
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
Xem lại video này có chất lượng đủ tốt và kích thước tệp đủ nhỏ cho nhu cầu của tôi và tải / phát trên trang web của tôi.
Tôi có một trang web cho phép người dùng chọn điểm bắt đầu và điểm cuối trên video này - và tạo clip. Đây là một ví dụ về lệnh ffmpeg mà tôi sử dụng cho điều đó:
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
Vấn đề là clip không phải lúc nào cũng đủ chính xác. Thông thường âm thanh đủ chính xác nhưng video dừng sớm nửa giây hoặc một cái gì đó.
Có cách nào để làm cho điều này chính xác và không đồng bộ để nói, 0,2 giây không?
EDIT: Thêm -force_key_frames 00:00:00.2
không giúp đỡ.
EDIT: Tôi đã thay đổi việc cắt để sử dụng -c:v libx264 -c:a aac -strict experimental
thay vì -codec:v copy -codec:a copy
với kết quả tốt (ish).
Tệp có thể phát bên ngoài mà không gặp sự cố - nhưng khi tôi tải nó vào phần tử video html5 của mình và phát nó - phần cuối của video (âm thanh vẫn ổn) bị đóng băng. Phần cuối cùng đóng băng dài chưa đến một giây.
Tôi có nên thử nó với một bộ mã hóa video khác không? Sự thay thế tốt nhất cho libx264 là gì? Ghi nhớ có lẽ tôi sẽ muốn nó ở trên một trang web công cộng.
Tuy nhiên, vấn đề không phải là nó phát chính xác mà không gặp sự cố với trình phát như MPC hoặc Windows Media Player cho thấy đó có phải là sự cố với Google Chrome hoặc thành phần video HTML không? Hay tôi đang sử dụng một mã hóa không được hỗ trợ hay cái gì đó?