Tôi có một ứng dụng bằng cách sử dụng MediaPlayer hoạt động tốt khi tôi phát trực tiếp các tệp MP3 tải xuống. Tôi đã cố gắng sử dụng cùng một ứng dụng đó để truyền tải các tệp AAC tải xuống tiến trình. Và nó chơi các tập tin tốt. Những gì không hoạt động là khi tôi cố gắng bỏ qua trong luồng bằng cách sử dụng MediaPlayer.seekTo() với AAC. Điều này một lần nữa hoạt động tốt trong mp3. Đối với luồng AAC, nó chỉ khởi động lại ở mức 0.Làm cách nào để AAC có thể tìm kiếm qua luồng http bằng Android MediaPlayer?
Cảm giác của tôi là mã hóa có liên quan. Tệp AAC đó chưa được định cấu hình chính xác để phát trực tuyến.
Đây là kết quả từ công cụ MediaInfo:
Size: 2.3 MB
Format: QuickTime/MPEG-4/Motion JPEG 2000 format
Stream count: 2
Duration: 00:05:02
Bit rate: 64 kb/s
Meta info:
album_artist: Red Hot Chili Peppers
album: The Getaway
minor_version: 512
encoder: Lavf57.41.100
title: Dark Necessities
major_brand: M4V
track: 2
disc: 1
compatible_brands: isomiso2avc1
artist: Red Hot Chili Peppers
copyright: 2016 Warner Bros. Records Inc.
genre: Alternative
Stream 0
Type: video
Codec: h264
Codec profile: High 10
FourCC: avc1
Duration: 00:00:00
Width: 350
Height: 350
Sample aspect ratio: 1:1
Display aspect ratio: 1:1
Pixel format: yuv420p10le
Frame rate: 90000 fps
Meta info:
handler_name: VideoHandler
language: und
Stream 1
Type: audio
Codec: aac
FourCC: mp4a
Duration: 00:05:02
Bit rate: 64 kb/s
Sample rate: 44100 Hz
Sample format: s16
Channel: 2
Meta info:
handler_name: SoundHandler
language: und
Bạn sẽ nhận thấy nó thực sự là một tập tin video với âm thanh AAC và không có video thực bao gồm. Nếu đó là trường hợp sau đó tôi thấy nó cần siêu dữ liệu hơn để biết được nơi để chơi khi tôi yêu cầu một phần của dòng có thể hoặc có thể không được tải. Ngoài ra video cần khung hình chính để biết nơi để chơi từ đó tôi tin rằng không có khung hình chính hoặc hộp 'gợi ý' được bao gồm trong luồng/tệp.
Tôi đã không có bất kỳ may mắn nào khi tìm thấy bất kỳ chi tiết thực sự nào về những gì còn thiếu hoặc nếu điều này là có thể hay không. Tôi đã thử nghiệm điều này trên các phiên bản khác và có vẻ như trước 5.0.2 nó hoạt động. Sau 5.0.2 nó không hoạt động. Tôi chưa tìm thấy bất kỳ chi tiết nào về những gì đã thay đổi trong phiên bản đó.
Vì vậy, đây có thể là sự cố mã hóa luồng không cho phép chúng tôi phát tệp này qua luồng tải xuống http (s) tiến bộ. Hoặc, nó có thể là một lỗi trong Android Media Player được tạo ra đôi khi khoảng 5.0.2 khung thời gian. Hoặc nó có thể là cả hai.
Tại sao tính năng này không hoạt động?
Có cách nào để truyền phát đầu ra dưới dạng AAC thô (với tiêu đề ADTS) thay vì âm thanh chứa bên trong M4A/MP4 không? MP3 đang hoạt động vì bạn nhận được các khung hình MP3 (mỗi một vài triệu âm thanh) nên bạn chỉ cần bỏ qua các khung hình để tìm kiếm. AAC cũng là khung (nếu bạn không đặt bên trong container). Tôi không quá quen thuộc với Android SDK nhưng tôi chắc chắn bạn có thể gửi byte của khung đến bộ giải mã SDK. Tôi sẽ điều tra một số tùy chọn. –
Tôi đã nhận được thông báo hỗn hợp về sự hỗ trợ của ADTS trong trình phát của Android nên tôi không chắc chắn nó có hoạt động hay không. Tôi mong muốn được nghe những gì bạn phát hiện ra. – chubbsondubs
Bạn có liên kết luồng mẫu để kiểm tra không? –