У меня возникли проблемы с воспроизведением определенного файла .3gp (по ссылке Dropbox) с помощью Android MediaPlayer. Однако файл волшебным образом без проблем воспроизводится из приложения Dropbox для Android.
Я пытаюсь воспроизвести это, используя это:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.dropbox.com/s/zpiqwmxka6llavt/SketchyFile.3gp"));
startActivity(intent);
и мой манифест содержит
<uses-permission android:name="android.permission.INTERNET" />
который дает ошибку «Не удается воспроизвести это видео».
Логкат показывает:
I/NuCachedSource2(89): new range: offset= 2245017
I/ChromiumHTTPDataSource(89): connect to https://dl.dropbox.com/0/view/a1crokuhpprsaeo/SketchyFile.3gp @2245017
I/NuCachedSource2(89): ERROR_END_OF_STREAM
E/MediaPlayer(3629): error (1, -2147483648)
E/MediaPlayer(3629): Error (1,-2147483648)
D/VideoView(3629): Error: 1,-2147483648
Если я попытаюсь воспроизвести его из приложения Dropbox для Android, видеоплеер Dropbox без проблем воспроизведет его.
Согласно инструменту ffprobe от ffmpeg, я могу убедиться, что тип носителя не является чем-то экзотическим для Android.
Использует ли Dropbox какое-то странное перекодирование вуду, и есть ли способ заставить это работать аналогичным образом?
РЕДАКТИРОВАТЬ: вот еще несколько понимания вуду кодирования DropBox.