2017-08-18 28 views
9

Tôi đang cố triển khai trình soạn thảo DraftJS làm nổi bật các từ trong phiên âm trong khi âm thanh được ghi của nó đang phát (loại như karaoke).Tạo "Karaoke" Loại Chức năng trong Bản nhápJS

Tôi nhận được dữ liệu ở định dạng này:

[ 
    { 
    transcript: "This is the first block", 
    timestamps: [0, 1, 2.5, 3.2, 4.1, 5], 
    }, 
    { 
    transcript: "This is the second block. Let's sync the audio with the words", 
    timestamps: [6, 7, 8.2, 9, 10, 11.3, 12, 13, 14, 15, 16, 17.2], 
    }, 
    ... 
] 

sau đó tôi lập bản đồ này đã nhận được dữ liệu để ContentBlocks và khởi tạo của ContentState với họ biên tập bằng cách sử dụng ContentState.createFromBlockArray(blocks)

Nó có vẻ như các "DraftJS" cách lưu trữ siêu dữ liệu dấu thời gian sẽ là tạo một Entity cho mỗi từ có dấu thời gian tương ứng và sau đó quét qua currentContent khi phát âm thanh và đánh dấu các thực thể cho đến thời gian đã trôi qua hiện tại. Nhưng tôi không chắc liệu đây có phải là cách thích hợp để làm điều này không, vì nó không có vẻ có hiệu quả đối với các phiên âm lớn.

Lưu ý: bảng điểm cần chỉnh sửa được trong khi vẫn duy trì chức năng karaoke này

Bất kỳ trợ giúp hoặc thảo luận nào được đánh giá cao!

+0

Có lý do nào bạn cần lưu trữ dấu thời gian bên trong các thực thể draftjs hay một biến ngoài bên ngoài draftj không? Bằng cách đó, bạn sẽ chỉ cần sử dụng các thực thể để đánh dấu văn bản nào được đánh dấu so với văn bản nào không. – pixelman32

+0

Có lý do cụ thể nào khiến bạn sử dụng Draftj không? Bạn đã xem xét [tùy chọn khác] (https://codepen.io/trongthanh/pen/jLsmt) ngoài Draftjs chưa? Có vẻ như đó có thể là một lựa chọn tốt hơn. Draftjs là một trình soạn thảo văn bản phong phú có nghĩa là lưu trữ trạng thái trình soạn thảo trên một tài liệu văn bản nhất định, vì vậy tôi đang đấu tranh để xem tại sao đây là công cụ lựa chọn, bạn có thể xây dựng được không? –

+0

Để trả lời cả hai câu hỏi của bạn, chức năng "karaoke" là loại tính năng "phụ". Chức năng chính là có thể chỉnh sửa/đánh dấu/thao tác nội dung dưới dạng văn bản đa dạng thức. –

Trả lời

0

Tôi đã thực hiện chính xác những gì tôi đã mô tả trong câu hỏi: dấu thời gian lưu trữ trong các thực thể DraftJS. Sau một vài tuần nữa với DraftJS có vẻ như đây là cách chính xác để làm điều này.

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