2012-05-01 38 views

Trả lời

20

tôi đoán rằng nó sẽ là

(track.getPlaybackHeadPosition()/track.getSampleRate()) * 1000.0 

Nói cách khác, số lượng khung hình chơi chia cho số khung hình mỗi giây. Sau đó, bạn nhân kết quả với 1000 để nhận được mili giây.

Một khung bao gồm một mẫu cho mỗi kênh và do đó phải tương đương với tỷ lệ mẫu.

Ví dụ, nếu getPlaybackHeadPosition() lợi nhuận 8654getSampleRate() lợi nhuận 8000 thì thời gian kể từ khi bắt đầu theo dõi sẽ (8654/8000) * 1000 hoặc 1081.75ms. (Giả sử nổi điểm số học)

+0

Có, bạn đã đúng. –

+0

Hãy thoải mái chấp nhận câu trả lời rồi :) – Nick

+0

ví dụ, nếu âm thanh có 8000 mẫu/giây, (track.getPlaybackHeadPosition()/8) cung cấp cho bạn vị trí đầu phát lại hiện tại trong vài giây. –

0

Câu trả lời bởi @Nike là đúng.

Nhưng có một vấn đề.

Nếu chúng ta gọi là giá trị MediaExtractor.seekTo phương pháp, AudioTrack.getPlaybackHeadPosition() lợi nhuận tích lũy.

MediaExtractor.getSampleTime()/1000 là các ms phù hợp với vị trí hiện tại.

Bạn có thể xem thử!

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