2010-03-30 35 views
6

Tôi gặp khó khăn lớn khi tải ứng dụng Android của mình để phát video từ thẻ SD. Không quan trọng kích thước, tốc độ bit, định dạng video hoặc bất kỳ cài đặt nào khác mà tôi có thể nghĩ đến, cả trình giả lập cũng như G1 của tôi sẽ không phát mọi thứ tôi cố mã hóa. Tôi cũng đã thử một số video từ web (các định dạng video khác nhau, bitrate, có và không có bản âm thanh, v.v.) và không có video nào trong số đó hoạt động.Android - Không thể phát bất kỳ video nào (mp4/mov/3gp/etc.)?

Tất cả tôi tiếp tục nhận được một hộp thoại nói rằng: "Rất tiếc, video này có thể không được chơi"

"Không thể phát video"

Có lỗi được báo cáo trong LogCat, nhưng tôi không hiểu chúng và tôi đã thử tìm kiếm trên Internet để giải thích thêm mà không gặp bất kỳ sự may mắn nào. Xem dưới đây:

03-30 05:34:26.807: ERROR/QCOmxcore(51): OMXCORE API : Free Handle 390d4 
03-30 05:34:26.817: ERROR/QCOmxcore(51): Unloading the dynamic library for OMX.qcom.video.decoder.avc 
03-30 05:34:26.817: ERROR/PlayerDriver(51): Command PLAYER_PREPARE completed with an error or info PVMFErrNoResources 
03-30 05:34:26.857: ERROR/MediaPlayer(14744): error (1, -15)03-30 05:34:26.867: ERROR/MediaPlayer(14744): Error (1,-15) 

Đôi khi tôi cũng có được điều này:

03-30 05:49:49.267: ERROR/PlayerDriver(51): Command PLAYER_INIT completed with an error or info PVMFErrResource 
03-30 05:49:49.267: ERROR/MediaPlayer(19049): error (1, -17) 
03-30 05:49:49.347: ERROR/MediaPlayer(19049): Error (1,-17) 

Đây là mã Tôi đang sử dụng (trong phương pháp onCreate() của tôi):

this.setContentView(R.layout.main); 
//just a simple VideoView loading files from the SD card 
VideoView myIntroView = (VideoView) this.findViewById(R.id.VideoView01); 
MediaController mc = new MediaController(this); 
myIntroView.setMediaController(mc); 
myIntroView.setVideoPath("/sdcard/test.mp4"); 
myIntroView.requestFocus(); 
myIntroView.start(); 

Xin giúp!

Trả lời

10

Được rồi, ở đây đi. Video tôi đã làm việc trên Adobe Premiere được cho là 480x800 (WxH), nhưng tôi có bộ giải mã Adobe Media Encoder xuất hiện dưới dạng "AVI không nén của Microsoft" bằng codec video "UYVY", tốc độ khung hình 24fps, tiến bộ , pixel vuông và kích thước: 720x800 (WxH). Điều này xuất ra một tệp khá lớn với đường viền màu đen 120px ở hai bên của nội dung video. sau đó tôi đưa video vào Handbrake 0.9.4 và sử dụng các cài đặt sau (Tôi bắt đầu với Regular-> cài sẵn Normal):

Container: MP4 File 
Large file size: [un-Checked] 
Web-optimized: [un-Checked] 
iPod 5G support: [un-Checked] 

Width: 320 (this is key, any higher than 320 and it won’t work) 
Height: 528 
Keep Aspect Ratio: [Checked] 
Anamorphic: None 

Crop Left: 120 
Crop Right: 120 

Everything under the "Video Filter" tab set to "Off" 

Video Codec: H.264(x264) 
Framerate: same as source 
2-Pass Encoding: [Checked] 
Turbo first pass: [un-Checked] 
Avg Bitrate: 384 

Create chapter markers: [un-Checked] 

Reference Frames: 2 
Mixed References: [un-Checked] 
B-Frames: 0 
Motion Estimation Method: Uneven Multi-Hexagon 
Sub-pixel Motion Estimation: 9 
Motion Estimation Range: 16 
Analysis: Default 
8x8 DCT: [un-Checked] 
CABAC Entropy Coding: [un-Checked] 
No Fast-P-Skip: [un-Checked] 
No DCT-Decimate: [un-Checked] 
Deblocking: Default, Default 
Psychovisual Rate Distortion: [MAX] 

vấn đề chính của tôi đã được rằng tôi đã cố gắng để ra một tập tin mp4 với 480x800 (WxH) kích thước. Sau khi thay đổi chiều rộng thành 320 (giá trị cao hơn không hoạt động), nhưng vẫn giữ tỷ lệ cỡ ảnh thích hợp, video đầu ra hiện phát không có lỗi. Tôi hy vọng điều này sẽ giúp người khác với một vấn đề tương tự.

Lưu ý phụ: Tôi muốn các giới hạn video Android được ghi lại tốt hơn.

+3

"Tôi muốn các hạn chế về video trên Android được ghi nhận tốt hơn". Tôi không thể đồng ý với bạn nhiều hơn. Tôi thậm chí đã theo dõi ví dụ của bạn và vẫn không thể đưa video vào luồng. –

+0

bạn có thể vui lòng gửi mã những gì bạn đã làm ở đây là không thể hiểu được thực sự tôi mới vào lĩnh vực này bất kỳ trợ giúp sẽ được appreicated. – UMAR

+0

Vâng, đó là một nỗi đau thực sự để làm việc với VideoView và MediaPlayer. Cảm ơn Q & A của bạn. –

3

Tôi đã gặp một chút rắc rối khi tải nhiều video khác nhau để phát trên điện thoại (HTC hero). Chuẩn 512K mp4 của trò chơi (ví dụ: http://www.archive.org/details/more_animation), hãy kiểm tra với họ trước để đảm bảo rằng đó không phải là mã của bạn.

Dưới đây là mã của tôi, từ onCreate() trong một tiểu hoạt động mà chỉ đóng các tập tin video:




    protected VideoView mine; 
    protected boolean done = false; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.videoshow); 
     mine = (VideoView) findViewById(R.id.video); // Save the VideoView for touch event processing 
     try { 
      String myURI = "/sdcard/" + path + "/v/" 
          + currentItem.getFile() 
          + "." + currentItem.getFileType(); 
      Uri video = Uri.parse(myURI); 
      mine.setVideoURI(video); 
      mine.start(); 
      mine.setOnCompletionListener(new OnCompletionListener() { 

       public void onCompletion(MediaPlayer mp) { 
        result.putExtra("com.ejf.convincer01.Finished", true); 
        done = true; 
       } 
      }); 
     } catch (Exception ex) { 
      Log.d(DEBUG_TAG, "Video failed: '" + ex + "'"); 
     } 
+0

Cảm ơn bạn đã trả lời. Tôi đã lấy lời khuyên của bạn và tải xuống một video từ trang web bạn cung cấp, "The Lost Kitten 1938" (512k mpeg4), và nó hoạt động hoàn hảo bằng cách sử dụng cùng một mã chính xác mà tôi đã cung cấp. Cảm ơn vì điều này.Tôi sẽ thử và mã hóa lại video của mình để khớp với thông số kỹ thuật của mẫu đã tải xuống và quay lại đăng chi tiết. Bạn có lẽ biết về các thiết lập chính xác tôi nên sử dụng trong bộ mã hóa của tôi (tôi có thể sử dụng Adobe Media Encoder hoặc Handbrake) không? – RyanM

0

Tôi đã gặp sự cố này cho đến khi tôi phát hiện ra rằng sự cố nằm trong thư mục video của tôi. Tôi đã lưu video của mình vào một thư mục không thể truy cập được vào chế độ xem video. Vì vậy, mỗi khi tôi cố gắng phát video, nó cho tôi thông báo lỗi nói: "Không thể mở video" hoặc một nội dung tương tự. Thử và lưu video của bạn vào thư mục này cũng sẽ hiển thị trong thư viện điện thoại.

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/" + "your app name "; 
Các vấn đề liên quan