ứng dụng Android của tôi phát trực tuyến video theo số VideoView
. Khi phát video từ một tệp, nó hoạt động tốt hoặc thậm chí phát trực tiếp (một m3u8
); Nó luôn phát trực tiếp từ cùng một nguồn và khi tôi sử dụng trình phát/trình duyệt bên ngoài, nó cũng tương tự như luồng (vì vậy tôi không nghĩ đây là vấn đề với nguồn, đây là biến thể của tệp như sau: https://publish.dvlabs.com/democracynow/360/dn2016-0810.mp4VideoView Tải xuống luồng không đủ bộ đệm
logs Android Màn hình này ngay trước khi vụ tai nạn:
10-13 12:02:56.204 32460-32748/com.workingagenda.democracydroid D/MediaHTTPConnection: filterOutInternalHeaders: key=User-Agent, val= stagefright/1.2 (Linux;Android 6.0.1)
10-13 12:02:56.205 32460-32472/com.workingagenda.democracydroid D/MediaHTTPConnection: proxy null port 0
10-13 12:02:57.904 32460-32460/com.workingagenda.democracydroid D/MediaPlayer: getMetadata
10-13 12:02:58.438 32460-377/com.workingagenda.democracydroid W/MediaPlayer: info/warning (3, 0)
và sau đó tôi nhận được những bản ghi khi nó bị treo:
10-13 12:05:33.812 32460-32472/com.workingagenda.democracydroid W/MediaHTTPConnection: readAt 26869519/241 => java.net.ProtocolException: unexpected end of stream
10-13 12:08:32.480 32460-3546/com.workingagenda.democracydroid E/MediaPlayer: error (1, -1004)
10-13 12:08:32.480 32460-32460/com.workingagenda.democracydroid E/MediaPlayer: Error (1,-1004)
10-13 12:08:32.481 32460-32460/com.workingagenda.democracydroid D/VideoView: Error: 1,-1004
[ 10-13 12:08:32.512 5066: 453 E/ ]
Destroy C2D instance
[ 10-13 12:08:32.512 5066: 453 E/ ]
Destroy C2D instance
10-13 12:08:32.635 32460-32472/com.workingagenda.democracydroid E/MediaPlayer: error (1, -1004)
10-13 12:08:32.668 32460-32460/com.workingagenda.democracydroid E/MediaPlayer: Error (1,-1004)
10-13 12:08:32.668 32460-32460/com.workingagenda.democracydroid D/VideoView: Error: 1,-1004
Để được chính xác hơn về câu hỏi của tôi:
012.351.- Tôi muốn biết lỗi này là gì,
E/MediaPlayer: Error (1,-1004)
là (vì tôi chưa tìm thấy bất kỳ thông tin nào trên web về nó). - Nếu nó là những gì tôi nghi ngờ, về cơ bản là kết thúc của lỗi tập tin/dòng, sau đó tôi hy vọng sẽ nhận được một số trợ giúp đệm hoặc tải video theo cách như vậy để tránh điều này?
Tôi đã xem câu hỏi này, Android Streaming with MediaPlayer: Error(1, -1004) and 3GPP video, nhưng câu trả lời không giúp được gì nhiều.
Tôi đã tìm thấy một hàm, MediaPlayer.prepareAsync()
, tại đây https://developer.android.com/reference/android/media/MediaPlayer.html#prepareAsync(), tính năng này được tự động gọi khi một video VideoView
mở, nhưng điều này dường như không hoạt động.
Sửa
Vì vậy, các giải pháp đưa tôi đến Google ExoPlayer, đó là khá dễ dàng để trao đổi tại cho VideoView của tôi, và nó hoạt động như một nét duyên dáng.
- Thêm ExoPlayer như phụ thuộc Đổi dạng hiển thị
- trong cách bố trí để
SimpleExoPlayerView
- Initialize
SimpleExoPlayer
trong Hoạt động - Initialize
MediaSource
và gắn vào máy nghe nhạc - Hãy nhớ
release()
khi không còn cần thiết.
Và với điều đó, phát trực tuyến hoạt động liền mạch.
Sử dụng https://github.com/google/ExoPlayer – Qamar
Có ... đó là giải pháp – Nevermore