Некоторое Содержимое Сообщества в свойстве FlowDocument.ColumnWidth, http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.columnwidth (v = vs.85) .aspx , говорит: «По умолчанию ширина столбца Flow Document в 20 раз превышает размер шрифта». Я добавил FontSize = "40" в FlowDocument и получил ширину, с которой я мог бы работать. Я просто должен был предоставить FontSizes везде, потому что мне действительно не хотелось 40.
Я думаю, что есть несколько типов потоковой передачи видео, которые могли бы изменить наш ответ здесь:
Создав потоковое приложение стиля Periscope с использованием Firebase Storage и базы данных Firebase Realtime, я настоятельно рекомендую против этого - мы загрузили три вторых фрагмента и синхронизировать их через базу данных реального времени. Несмотря на то, что он работал (на удивление хорошо), на очень хорошем интернет-ресурсе было ~ 5 секунд латентности, и это также было не самым эффективным решением (в конце концов, вы загружаете и сохраняете это видео, а также не транскодируете) , Я рекомендую использовать некоторый стиль WebRTC, созданный для транспорта видео, и используя базу данных Realtime для передачи сигналов вдоль стороны потока.
С другой стороны, определенно возможно создать мобильные функции YT для Firebase. Трюк здесь будет транскодировать видео (используя что-то вроде Zencoder или Bitmovin, подробнее здесь: https://cloud.google.com/solutions/media/ ), чтобы вырезать загруженное видео в меньшие куски разных разрешений (и разные форматы, например, для iOS требуется HLS для потоковой передачи). Вы можете хранить информацию о куске в базе данных реального времени (имя фрагмента, доступные разрешения, количество фрагментов) и загружать упомянутые фрагменты из хранилища по мере продвижения видео.
Если вы хотите выпустить видео из Firebase Storage, это лучший способ, который я нашел. Это будет зависеть от размера вашего видеофайла. Я только запрашиваю файлы 10-30mb, поэтому это решение работает хорошо для меня. Просто обрабатывайте Urb Firebase как обычный url:
String str = "fire_base_video_URL";
Uri uri = Uri.parse(str);
videoViewLandscape.setVideoURI(uri);
progressBarLandScape.setVisibility(View.VISIBLE);
videoViewLandscape.requestFocus();
videoViewLandscape.start();
Если вы хотите зацикливать видео:
videoViewLandscape.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
}
});
И если вы хотите показать индикатор выполнения перед видео начинает делать это:
videoViewLandscape.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
progressBarLandScape.setVisibility(View.GONE);
return true;
}
else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START){
progressBarLandScape.setVisibility(View.VISIBLE);
return true;
}
return false;
}
});
Это не лучший способ сделать что-то, но он работает для меня пока пока не найду хорошую службу потокового видео.