Подтвердить что ты не робот

Странное поведение Android VideoView - "Невозможно воспроизвести видео"

В моем приложении показано видео из папки sdcard или новое видео из намерения видео в VideoView в разных действиях, передав путь к файлу выбранного видео.

Теперь проблема в том, Я тестировал это приложение на своих двух устройствах LG Optimus Black and LG Optimus Me and it works, как заклинание, а не проблема, никакая сила не закрывается.

Теперь, когда я тестирую это приложение в Samsung Fascinate 2.1 the video view shows the message "Can't Play Video" независимо от того, я выбираю существующее видео или беру новое.

Помните, что приложение работает нормально с указанными выше устройствами.

В шоу ShowVideo у меня есть кнопка для загрузки видео, когда я получил сообщение "Can not Play Video", я смог взять видео с одного и того же пути и загрузить его и проверить это видео на стороне сервера, но видео просмотр не воспроизводил видео.

So, the Video Path of the SDCard is not the problem thats for sure.

also the Video are of .3gp or .mp4 format only so the format is also supported by android

.

Мои вопросы:

1) Когда появляется сообщение "Can not Play Video"? 2) Какое решение для этого? и 3) Какие могут быть возможные ошибки в моем приложении?

вот вывод logcat, когда я получил это сообщение, но не вижу в нем ошибки/исключения.

I/ActivityManager( 2227): Starting activity: Intent { cmp=com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo (has extras) }
V/SettingsProvider( 2227): system <- value=1.0 name=font_scale
V/SettingsProvider( 2227): property: sys.settings_system_version=26
V/SettingsProvider( 2227): notifying: content://settings/system/font_scale
D/HardwareService( 2227): Brightness NATIVE setBacklightBrightness running. light: 2bightness ==> 30  mode:  1
D/NetworkLocationProvider( 2227): onDataConnectionStateChanged 6
D/MobileDataStateTracker( 2227): default Received state= CONNECTING, old= CONNECTING, reason= (unspecified), apnTypeList= *
D/AGPSManagerService( 2227): state: CONNECTING apnName: Verizon reason: null
D/dalvikvm( 3326): GC freed 2472 objects / 140504 bytes in 73ms
I/File    ( 3326): /sdcard/DCIM/Camera/video-2011-10-17-10-40-54.mp4
V/MediaStore( 3326): We probably run out of space, so create the thumbnail in memory.
I/MediaPlayerService( 2182): Use PV_PLAYER for url:/sdcard/DCIM/Camera/video-2011-10-17-10-40-54.mp4
E/MetadataDriver( 2182): MetadataDriver::setDataSource url file type is isAudiofile(0)
D/        ( 2182): SISO TEST registering PVMFRecognizerPluginFactory
D/        ( 2182): SISO TEST registering PVMFRecognizerPluginFactory success
E/MetadataDriver( 2182): isCommandSuccessful: Command id(0 and expected 0) and status (-17 and expected 1), data corruption (false) at state (4).
E/MetadataDriver( 2182): isCommandSuccessful: Command id(1 and expected 1) and status (-14 and expected 1), data corruption (false) at state (5).
E/MetadataDriver( 2182): captureFrame :  time = 0
E/MetadataDriver( 2182): captureFrame :  inputWidth = 0, inputHeight =0, bAspectratio=0, bResize=0
D/MediaUploader( 2492): UploadsQueue.getAllPending: elapsed msec=449
I/MediaUploader( 2492): UploadManager.uploadPendingItems: Found 1 items in queue.
I/Selected( 3326): =============Second
D/MediaUploader( 2492): isGphotosSynced: FALSE -- starting gphotos update refresh for -5709461173740324808
W/IInputConnectionWrapper( 3505): showStatusIcon on inactive InputConnection
I/copybit ( 2227): [createPP] fimc version : 50
I/MediaPlayerService( 2182): Use PV_PLAYER for url:/DCIM/Camera/video-2011-10-17-10-40-54.mp4
D/        ( 2182): SISO TEST registering PVMFRecognizerPluginFactory
D/        ( 2182): SISO TEST registering PVMFRecognizerPluginFactory success
D/        ( 2182): SISO TEST PVOMA1FFRecognizerFactory::CreateRecognizerPlugin()
D/        ( 2182): SISO TEST PVOMA1FFRecognizerFactory::CreateRecognizerPlugin() plugin found
D/        ( 2182): SISO TEST PVOMA1FFRecognizerFactory::DestroyRecognizerPlugin()
E/OsclDirectFileIO( 2182): [LargeFileSupport] OsclDirectFileIO::OpenFileOrSharedFd Error = -1
W/MediaPlayer( 3326): info/warning (1, 26)
E/PlayerDriver( 2182): Command PLAYER_SET_DATA_SOURCE completed with an error or info -4
E/MediaPlayer( 3326): SISO TEST MEDIA_ERROR
E/MediaPlayer( 3326): error (-4, -4)
W/PlayerDriver( 2182): PVMFInfoErrorHandlingComplete
V/MediaProvider( 2349): stopThumbWorkerSuspendTimer
V/MediaProvider( 2349): Resuming ThumbWorker
W/MediaProvider( 2349): Have message but no request?
I/System.out( 2647): interface name: null
I/MediaPlayer( 3326): Info (1,26)
E/MediaPlayer( 3326): Error (-4,-4)
D/VideoView( 3326): Error: -4,-4
D/MediaUploader( 2492): UploadManager.uploadPendingItems: Waiting for GPhotos sync
D/MediaUploader( 2492): UploadsQueue.getAllPending: elapsed msec=5
I/MediaUploader( 2492): UploadManager.uploadPendingItems: Found 1 items in queue.
I/POWER_OFF_TEST( 2227): mBatteryLevel = 38   mBatteryDecimalPoint = 1
D/MediaUploader( 2492): UploadsAsyncQueryHandler.notifiyDatabaseChangeListeners
D/MediaUploader( 2492): isGphotosSynced: FALSE -- update is in progress for -5709461173740324808
D/MediaUploader( 2492): UploadManager.uploadPendingItems: Waiting for GPhotos sync
D/MediaUploader( 2492): updateQueueState: RUNNING
I/GooglePlusOne( 2492): Starting new CAMERA_SYNC_CREATED request 1
I/ActivityManager( 2227): Displayed activity com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo: 1251 ms (total 1251 ms)
V/InputDevice( 2227): ID[0]=0 Dn (0=>1)
V/WindowManager( 2227): Dsptch >Window{47a67278 com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo paused=false}
D/dalvikvm( 2227): GC freed 4009 objects / 210024 bytes in 155ms
V/InputDevice( 2227): ID[0]=0 Up (1=>0)
V/WindowManager( 2227): Dsptch >Window{47a67278 com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo paused=false}
W/InputManagerService( 2227): Window already focused, ignoring focus gain of: [email protected]
D/dalvikvm( 2492): GC freed 11952 objects / 682568 bytes in 171ms
D/dalvikvm( 2647): GC freed 7435 objects / 656456 bytes in 26ms
D/dalvikvm( 2647): GC freed 3079 objects / 498304 bytes in 60ms
I/System.out( 2647): interface name: null
I/GooglePlusOne( 2492): CAMERA_SYNC_CREATED request 1 completed with code=200
D/MediaUploader( 2492): onGphotosChange: sawError=false; errs=0; retry=Wed Dec 31 17:00:00 America/Boise 1969; expiry=Mon Oct 17 10:56:20 America/Boise 2011
D/MediaUploader( 2492): UploadsQueue.getAllPending: elapsed msec=17
I/MediaUploader( 2492): UploadManager.uploadPendingItems: Found 1 items in queue.
D/MediaUploader( 2492): isGphotosSynced: TRUE for -5709461173740324808
D/MediaUploader( 2492): existsInGphotos: false info=name=video-2011-10-17-10-40-54.mp4 fileUri=content://media/external/video/media/37 fileSize=2477915;
D/MediaUploader( 2492): UploadManager.uploadPendingItems: starting upload...
D/MediaUploader( 2492): UploadManager.upload: info=name=video-2011-10-17-10-40-54.mp4 fileUri=content://media/external/video/media/37 fileSize=2477915
I/NetworkStat( 2678): Network type: MOBILE
I/NetworkStat( 2678): -------- mobile data network is NOT available as of now
D/NotificationService( 2227): enqueueNotification :: notification.defaults = 0, Notification.DEFAULT_SOUND = 1, notification.sound = null
D/dalvikvm( 2492): GC freed 4032 objects / 238248 bytes in 49ms
I/dalvikvm-heap( 2492): Grow heap (frag case) to 6.708MB for 524304-byte allocation
D/dalvikvm( 2492): GC freed 291 objects / 13392 bytes in 58ms
D/MediaUploader( 2492): UploadsAsyncQueryHandler.notifiyDatabaseChangeListeners
D/MediaUploader( 2492): GlsAuthorizer.getAuthToken: authTokenType=lh2; [email protected];
D/MediaUploader( 2492): executeWithAuthRetry: starting httpClient.execute #1
D/dalvikvm( 2870): GC freed 555 objects / 24144 bytes in 269ms
I/System.out( 2492): interface name: null
V/InputDevice( 2227): ID[0]=0 Dn (0=>1)
V/WindowManager( 2227): Dsptch >Window{47cf6308 com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo paused=false}
V/InputDevice( 2227): ID[0]=0 Up (1=>0)
V/WindowManager( 2227): Dsptch >Window{47cf6308 com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo paused=false}
D/dalvikvm( 2647): GC freed 7301 objects / 659064 bytes in 78ms
I/System.out( 2647): interface name: null
I/System.out( 2647): interface name: null
I/System.out( 2647): interface name: null
D/dalvikvm( 2647): GC freed 2654 objects / 324016 bytes in 149ms
I/System.out( 2647): interface name: null
D/MediaUploader( 2492): getStatusCode: status=HTTP/1.1 200 OK
D/MediaUploader( 2492): getStatusCode: status=HTTP/1.1 200 OK
D/MediaUploader( 2492): UPLOAD_START: uploadUrl=https://picasaweb.google.com/data/upload/resumable/media/create-session/feed/api/user/default/albumid/camera-sync?xmlerrors=1&upload_id=AEnB2Uqe2bdvyx5p31Ta-sS4ytggj07_6-uiKG_hCOc6sT1u8eqhvr-8oZdUT1uPHxuAxXphUiJXyq-i_8YaJlT2YLholp__Sw
D/MediaUploader( 2492): UploadManager.onProgress
V/MediaUploader( 2492): UploadManager.progressUpdate: guid=1351689615505998240; bytes=0
D/dalvikvm( 2647): GC freed 920 objects / 202544 bytes in 53ms
D/dalvikvm( 2492): GC freed 7362 objects / 498448 bytes in 73ms
D/MediaUploader( 2492): UploadsAsyncQueryHandler.notifiyDatabaseChangeListeners
D/dalvikvm( 2492): GC freed 658 objects / 129232 bytes in 42ms
I/dalvikvm-heap( 2492): Grow heap (frag case) to 7.250MB for 262160-byte allocation
D/dalvikvm( 2492): GC freed 0 objects / 0 bytes in 41ms
D/dalvikvm( 2492): GC freed 92 objects / 135128 bytes in 30ms
I/dalvikvm-heap( 2492): Grow heap (frag case) to 7.621MB for 524304-byte allocation
D/dalvikvm( 2492): GC freed 0 objects / 0 bytes in 44ms
D/MediaUploader( 2492): executeWithAuthRetry: starting httpClient.execute #1
D/dalvikvm( 2647): GC freed 576 objects / 53240 bytes in 182ms
V/InputDevice( 2227): ID[0]=0 Dn (0=>1)
V/WindowManager( 2227): Dsptch >Window{47cf6308 com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo paused=false}
V/InputDevice( 2227): ID[0]=0 Up (1=>0)
V/WindowManager( 2227): Dsptch >Window{47cf6308 com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo paused=false}
I/ActivityManager( 2227): Starting activity: Intent { cmp=com.zoodigapp.zoodig/.WriteMessage (has extras) }

Если вы найдете что-то, что не описано хорошо, прокомментируйте ниже.

Дополнительная информация (перемещена из комментариев):

  • Они всего лишь 1 минута, а последний, который я тестировал и провалился на Samsung, составлял всего 20 секунд. и размеры в основном в МБ не более 20 МБ.
  • Видео снимается с одного и того же устройства, и сразу после этого видео я пытаюсь показать в своей активности то же самое, что и другое уже сохраненное видео, также прекрасно... на самом деле после загрузки этого видео я вижу это видео и могу скачать также
4b9b3361

Ответ 1

1) Когда появляется сообщение "Невозможно воспроизвести видео"?

Android обычно выдает это сообщение, когда он не может воспроизводить медиаконтент. Причины этого могут быть похожими на

  • Неподдерживаемый формат файла
  • Неподдерживаемые кодеки
  • Неверный контент

чтобы упомянуть несколько.

2) Какое решение для этого?

Если у вас нет собственной медиа-платформы в вашем приложении, на уровне приложения не будет решения

3) Какие могут быть возможные ошибки в моем приложении?

Очень маловероятно, что ошибка в вашей заявке. Если вы прочитаете журналы, вы увидите, что ошибка, по-видимому, исходит из DataSource opencore (какая версия Android работает в любом случае? Она по-прежнему использует Opencore вместо StageFright). Он распознает его как большой файл ( > 2 ГБ) и, следовательно, выдаёт ошибку " E/OsclDirectFileIO (2182): [LargeFileSupport] OsclDirectFileIO:: OpenFileOrSharedFd Error = -1"

Следует отметить, что некоторые телефоны имеют лучшую мультимедийную возможность, чем другие телефоны, так как OEM сам может улучшить мультимедийные возможности. Таким образом, нет никакой письменной гарантии, что все файлы могут воспроизводиться на всех устройствах, даже если они соответствуют поддерживаемым форматам, кодекам, упомянутым Android.

Ответ 2

Все о проблемах с форматом. Некоторые телефоны записывают видео в формате mp4 и некоторые в формате 3gp, но почти во всех телефонах медиаплеер по умолчанию поддерживает формат 3gp. Таким образом, вам нужно преобразовать его в 3gp во время игры. С этим трудно справиться в android, поэтому на сервере вы можете сделать это легко и, следовательно, независимо от формата загрузки видео вы можете загрузить его в одном формате .3gp, и он будет работать нормально.

Ответ 3

Я продолжал получать то же самое сообщение "Can not Play Video", пытаясь воспроизвести видео с самого телефона. Сначала я не ввел хороший путь к файлу, но была интересная проблема.

  • У меня есть путь от корня, например /videoFileName.mp4, и я должен был ввести его с помощью sdcard между ними как /sdcard/videoFileName.mp4

  • Мой Sony Ercisson Xperia Arc был подключен как хранилище массового устройства USB одновременно с тем, что я запускал приложение через adb, поэтому внутренняя SD-карта была размонтирована, и файл не удалось найти. Я обнаружил это, когда пробовал тот же код на Samsung Galaxy S, который ведет себя по-разному при подключении.

Ответ 4

Если у вас есть файл mp4 с базовым кодированием H.264, и вы все еще не можете воспроизводить видео в своем устройстве Android, это может быть проблемой в файле .htAccess на стороне сервера. Это может быть файл ZIP. несколько устройств могут воспроизводить видео, разархивируя его и передавая его, но не во всех случаях устройства. Вам нужно изменить файл .htAccess на стороне сервера. Измените выходной фильтр и включите формат файла .mp4, чтобы исключить его из-за zip во время потоковой передачи.

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|swf|mp4)$ \ no-gzip dont-vary

Ответ 5

Недавно Google открыл открытый Exoplayer после Google IO 2014. Мой опыт работы с видео с ним был хорошим до сих пор.

https://github.com/google/ExoPlayer

  • Я мог бы транслировать видео с Dropbox/AWS
  • Потоковое видео с youtube.

Все зависит от кодеков, поддерживаемых устройством.

Ответ 6

У меня была такая же проблема при использовании VideoView, в то время как я пытался проверить все, что касалось видео, проблема была в файле AndroidManifest.xml. Было сказано о разрешении использовать EXTERNAL STORAGE дает ему шанс решить эту проблему.

Ответ 7

Убедитесь, что ваше видео находится в формате MP4, но если все еще не воспроизводится или отображается одна и та же ошибка, тогда ошибка не связана с кодом. Ошибка в разрешении видео. просто проверьте высоту и ширину видео и сопоставьте его с компонентом просмотра видео. В Интернете доступно множество бесплатных видео компрессоров. Поэтому просто сжимайте свое видео и проверяйте его.

Это сработает. Ура!!!

Ответ 8

Я столкнулся с одной и той же проблемой, и то, что работало, добавляет разрешение Интернета на файл манифеста, так как я получаю видео с URL-адреса.

 <uses-permission android:name="android.permission.INTERNET"/>

Вот как я заполняю список просмотров видео.

   //assign video
    mVideosListView = (ListView) findViewById(R.id.videoListView);

    //create videos
    Video riverVideo = new Video("https://s3.amazonaws.com/androidvideostutorial/862009639.mp4");
    Video carsVideo = new Video("https://s3.amazonaws.com/androidvideostutorial/862013714.mp4");
    Video townVideo = new Video("https://s3.amazonaws.com/androidvideostutorial/862014159.mp4");
    Video whiteCarVideo = new Video("https://s3.amazonaws.com/androidvideostutorial/862014159.mp4");
    Video parkVideo = new Video("https://s3.amazonaws.com/androidvideostutorial/862014834.mp4");
    Video busyCityVideo = new Video("https://s3.amazonaws.com/androidvideostutorial/862017385.mp4");

    mVideosList.add(riverVideo);
    mVideosList.add(carsVideo);
    mVideosList.add(townVideo);
    mVideosList.add(whiteCarVideo);
    mVideosList.add(parkVideo);
    mVideosList.add(busyCityVideo);

    /***populate video list to adapter**/
    mVideoAdapter = new VideoAdapter(this, mVideosList);
    mVideosListView.setAdapter(mVideoAdapter);

введите описание изображения здесь

Ответ 9

Для меня была проблема с кодеком, используемым видео. Я установил Any Video Converter и конвертировал видео, используя настройки для Google Android (x264). Теперь я могу играть на каждом устройстве.

Ответ 10

Моя проблема заключалась в том, что я сохранил его в формате .avi вместо формата .m4v, и это сработало, понравилось очарование моего Samsung... спасибо за помощь!