2016-03-20 22 views
11

Tôi đã tạo các đoạn có độ dài cố định cho video MP4 dài bằng Mp4Box. Mp4Box tạo một tệp thông tin meta mv_init.mp4 và các phân đoạn như mv_1.m4s, mv_2.m4s,… Tôi phát trực tuyến video bằng cách sử dụng Tiện ích mở rộng nguồn phương tiện HTML5 và luồng đang hoạt động bình thường.Tính hậu tố tập tin .m4s trong luồng video HTML5 khi người dùng tìm cách khác

Vấn đề là Tôi không thể sử dụng tính năng tìm kiếm thời gian của trình phát HTML5. Khi người dùng sử dụng thanh tìm kiếm để tìm kiếm một điểm thời gian khác, tôi cần tìm nạp tệp phân đoạn chính xác (mv_{number}.m4s) cho số currentTime đó.

Ví dụ:

  • thời gian video: 2 giờ
  • phân khúc kích thước: 10 giây
  • người dùng tìm cách thời gian: 25 phút

25 phút = 25 × 60 giây = 1500 giây. Vì mỗi đoạn là 10 giây, tôi cần số đoạn 1500/10 = 150. Tệp phân đoạn cần thiết là mv_150.m4s.

Tính toán dường như đúng, nhưng trình phát HTML5 sau đó tải xuống nhiều tệp khác sau mv_150.m4s trước khi tiếp tục với phát trực tuyến.

Cách tính chính xác số lượng tệp phân đoạn, để sau khi tìm kiếm, luồng chạy trơn tru, không tải xuống bất kỳ tệp bổ sung nào?

Để tạo các phân đoạn của video MP4, tôi sử dụng lệnh sau:

MP4Box -dash 10000 -out video.mpd -dash-profile live -segment-name mv_ -rap video.mp4 
+0

Bạn có phải là tác giả của người chơi không? Bạn có thể vui lòng bao gồm [mcve] không? I E. một ví dụ tối thiểu thể hiện vấn đề. Bạn sử dụng trình duyệt nào? – Palec

Trả lời

3

Tôi đã nghiên cứu về vấn đề này và tìm ra nguyên nhân thực sự. Các caluclation cho tải các phân đoạn là chính xác. Vấn đề là với khoảng thời gian khung hình chính trong tệp video. Khung hình chính là một khung trong video mà sau đó video có thể tải và chạy từ thời điểm đó. Vì vậy, trong trường hợp của tôi, tôi cần phải chèn khung hình chính vào đầu mỗi đoạn. Vì vậy, khi chúng tôi tìm kiếm thông qua video ở các vị trí thời gian khác nhau, phân đoạn tiếp theo được tải chứa một khung hình chính ở đầu nó.

Các khung hình chính trong tệp video có thể được thiết lập bằng cách sử dụng FFMPEG. Vì vậy, ví dụ nếu chúng tôi có một video có phân đoạn 5 giây thì chúng ta phải tạo khung hình chính ở khoảng thời gian 5 giây bằng cách sử dụng ffmpeg. Một điểm quan trọng khác trong khi thiết lập khung hình chính là xem xét tỷ lệ khung hình của video. Video phải có tỷ lệ khung hình cố định để chúng tôi có thể tính chính xác vị trí của khung hình chính.

Ví dụ:

Video File: gladiator.mp4 

Segment Size: 5 seconds 

Không, chúng tôi thiết lập Frame Rate và KHUNG INTERVAL KEY SỬ DỤNG FFMPEG

ffmpeg -i gladiator.mp4 -x264-params keyint = 120: min-keyint = 120: no-scenecut = 1 -r 24 đấu sĩ-đầu ra.mp4

keyint=120 i.e; 24 fps * 5 seconds = 120 

Và bây giờ chúng ta tạo ra các tập tin phân khúc sử dụng Mp4Box

MP4Box -dash 5000 -frag 5000 out gladiator.mpd -dash hồ sơ theo yêu cầu -segment tên mv_ gladiator-output.mp4

Vì vậy, nó sẽ tạo các phân đoạn như mv_1, mv_2, ..vv và có các khung hình chính ở đầu mỗi tệp phân đoạn.

Seekable Dash Streaming Example

Các vấn đề liên quan