2011-06-08 47 views
5

Trong ứng dụng của tôi, tôi cần cung cấp cho người dùng một bản xem trước trên bản tải xuống tiến bộ (tệp video).VideoView và Progressive download

Để đạt được điều này, tôi đang sử dụng thành phần VideoView để hiển thị nội dung của video (.mp4, .3gpp) đang được tải xuống.

Vấn đề là tôi không thể truy cập phương tiện từ xa qua giao thức http:// hoặc rtsp://, vì vậy tôi buộc phải sử dụng VideoView.setVideoPath để phát bản sao video trong khi tải xuống.

Đáng tiếc là nó có vẻ như trên các thiết bị Android mà không thể sử dụng StageFright khuôn khổ (vì vậy OpenCore và một số thiết bị trong Tegra2-based kinh nghiệm của tôi), các VideoView không thể xử lý tải về tiến bộ một cách chính xác: nó có thể chơi chỉ có phần của đoạn video được công nhận trong quá trình khởi tạo thành phần. Vì vậy, để rõ ràng: nếu người dùng nhấn "phát" khi chỉ có 5% video đã được tải xuống, VideoView sẽ chỉ hiển thị 5% video, bất kể có thêm ha nội dung video được tải xuống trong thời gian chờ đợi hay không.

Theo kinh nghiệm của tôi, sự cố này không ảnh hưởng đến thiết bị sử dụng khuôn khổ StageFright (ví dụ: Nexus One 2.2, Nexus One 2.3.4).

Mọi người có thể chỉ cho tôi giải pháp khả thi không? Cảm ơn trước

+0

Xin chào, bạn có tìm ra cách để khắc phục lỗi này? Tôi đã có những lỗi giống nhau. Và ngay bây giờ, tôi đang bị mắc kẹt. –

+0

Cuối cùng Chúng tôi tìm ra lý do là giải pháp. [Ở đây] (http://stackoverflow.com/questions/19587880/sorry-this-video-is-not-valid-for-streaming-to-this-device-in-http-streaming-an) Cảm ơn, –

Trả lời

1

VideoView là một lớp sẵn sàng sử dụng trong Khung ứng dụng Android cho trường hợp sử dụng phát lại video. Nó sử dụng nội bộ lớp MediaPlayer để phát lại. MediaPlayer sử dụng khung phương tiện có sẵn nội bộ dựa trên các tiêu chí nhất định như định dạng tệp, nguồn gốc của nội dung, v.v.

Vì vậy, giới hạn là từ khung bên dưới chứ không phải VideoView. Nếu bạn vẫn đang nghi ngờ VideoView thì hãy viết hoạt động trình phát video của riêng bạn bằng trình phát phương tiện. Bạn sẽ thấy kết quả tương tự.

Cũng không phải tất cả các phiên bản Android (đọc dưới dạng stagefright) đều hỗ trợ tải xuống liên tục.

Có thể bạn có thể sử dụng lớp DownloadManager để tải xuống nội dung từ máy chủ http và cung cấp đường dẫn đến trình phát media/video để xem trước nhanh.

Shash316

+0

Có, vấn đề ảnh hưởng đến các khung phương tiện khác nhau trong 'MediaPlayer' (và vì vậy trong' VideoView'). Tải xuống video thông qua 'Trình tải xuống' không thể thực hiện thủ thuật (tôi đã sử dụng), vì vấn đề có liên quan đến cách bộ đệm video được xử lý bởi khung phương tiện cơ bản. Dù sao cũng cảm ơn bạn. –

2

Nếu bạn đang cố gắng để chơi .h264, Bạn cần phải di chuyển các nguyên tử MOV vào phía trước của tập tin. Chúng cho biết codec độ dài của bộ phim trong số những thứ khác.

thử qtfaststart

http://ffmpeg.zeranoe.com/builds/

+0

Xin chào, bạn có tìm cách sửa lỗi này không? Tôi đã có những lỗi giống nhau. Và ngay bây giờ, tôi đang bị mắc kẹt. Bạn có muốn cho tôi một số cách để hoàn thành tác vụ này, phát trực tuyến video với tải xuống liên tục không.p/s: Tôi có thể mã hóa video thành .h264, tải video lên trang web và tôi tin rằng mã của tôi cũng tốt. Thiết bị: Samsung Galaxy 7 "2.2.1 –