Ответ 1
Кажется, проблема с типом кодировки, которую поддерживает эмулятор, если вы устанавливаете ffmpeg, если вы на макете, выполнив следующие команды:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install ffmpeg
затем обработайте свой видеофайл с помощью
ffmpeg -i big_buck_bunny_720p_1mb.mp4 -c:v libx264 -profile:v baseline -c:a aac -strict -2 -b:a 128k output.mp4
и попытайтесь воспроизвести вывод, он не покажет эту ошибку, но это будет пустое видео (только черный экран). Поэтому я думаю, что проблема заключается в том, чтобы получить правильную кодировку, попробовали разные кодировки, но все, кажется, просто показывают черный экран.
Сделаем еще несколько копаний, но пока это похоже, что эмулятор не поддерживает вашу кодировку.
ИЗМЕНИТЬ
Хорошо, поэтому я получил видеозапись, я обработал видео с помощью:
ffmpeg -i SampleVideo_1080x720_1mb.mp4 -codec:v libx264 -profile:v baseline -preset slow -b:v 250k -maxrate 250k -bufsize 500k -vf scale=-1:360 -threads 0 -codec:a aac -strict -2 -b:a 96k output.mp4
Отметьте сайт для параметров ffmpeg.
Я настраиваю свой VideoView
следующим образом:
public class Activity1 : Activity
{
VideoView videoView;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
videoView = FindViewById<VideoView> (Resource.Id.SampleVideoView);
videoView.SetMediaController(new MediaController(this));
videoView.SetVideoPath ($"android.resource://{PackageName}/{Resource.Raw.output}");
videoView.RequestFocus ();
videoView.Start ();
}
}
Это, похоже, работает на Xamarin Android Player, но только для версий API 16 (JellyBean) и 19 (Kitkat). 21 (леденец) просто не загружает видео.
Затем я загрузил эмулятор GenyMotion (нужно создать учетную запись, но ее бесплатно для личного использования), чтобы проверить, был ли это Xamarin Игрок или нет. Он работает на всех (16,17,18,19,20 + 22), кроме 21 (леденец). похоже, что что-то не так с эмуляторами для 21, я сделал все мои тесты на эмуляторах nexus 4. Поэтому, если вы хотите воспроизвести видео, я бы попытался избежать эмуляторов с API 21.