-
На моем нажатии кнопки я написал следующий код для воспроизведения видео с мой SDCARD (mp4).
video_view = (VideoView)findViewById(R.id.video_view); video_view.setVideoPath("/sdcard/myvideo.mp4"); video_view.setMediaController(new MediaController(this)); video_view.start();
-
Я могу воспроизводить записанное видео с SDCARD в проигрывателе.
- Но когда я запускаю его в своем приложении в видеоизображении, я слышу только звук.
- Проблема: Я не вижу видео.
Видео не отображается в VideoView, но я слышу его звук
Ответ 1
Я пробовал каждый метод выше, но никто из них не мог работать.
Наконец, я попытался вызвать эту функцию, затем появилось видео.
video_view.setZOrderOnTop(true);
Надеюсь, это также сработает для вас.
Ответ 2
РЕШЕНИЕ 1:
videoView.setZOrderOnTop(true);
это установит видеоизображение на верхний слой; Другими словами: заблокируйте все под ним.
РЕШЕНИЕ 2:
videoView.setBackgroundColor(Color.TRANSPARENT);
РЕШЕНИЕ 3:
иногда это связано с вашей apptheme; В моем случае я изменил apptheme от @style/AppTheme
до @android:style/Theme.NoTitleBar.Fullscreen
исправил свою проблему.
Ответ 3
Вы можете попробовать?
video_view = (VideoView)findViewById(R.id.video_view);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(video_view);
mediaController.setMediaPlayer(video_view); //you probably don't need this
video_view.setVideoPath("/sdcard/myvideo.mp4");
video_view.setMediaController(mediaController);
video_view.start();
Ответ 4
Я столкнулся с той же проблемой, мой просмотр видео изменился до ожидаемого разрешения видео, но на экране ничего нет. Я пытался использовать вышеупомянутые решения, но ничего не получалось.
Я пытался установить видимость, и это сработало, не знаю почему. Это может помочь кому-то, кто сталкивался с этим сообщением и сталкивается с проблемой как я
videoView = (VideoView) findViewById(R.id.viewLiveStream);
videoView.setVisibility(View.VISIBLE);
Вот мой XML, не уверен, почему видимость была проблемой.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/activity_bg1"
android:orientation="vertical">
<Button
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:id="@+id/btnStreaming"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start_streaming" />
<TextView
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:id="@+id/txtStreamingUrl"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:lines="2" />
<VideoView
android:id="@+id/viewLiveStream"
android:layout_width="640dp"
android:layout_height="480dp"/>
<Button
android:id="@+id/btnPlay"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/play"
android:layout_gravity="center_vertical|center_horizontal"/>
</LinearLayout>
~
Ответ 5
попробуйте следующее:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
это может помочь вам...
Ответ 6
У меня была такая же проблема, за исключением того, что я добавлял свое видео-просмотр программно. Я заметил, что при проверке иерархии представлений родительская ViewGroup имела тип слоя, установленный для программного обеспечения.
Так как кодовая база, с которой я работаю, является общей, и я не заметил, что тип слоя устанавливал программное обеспечение в подклассе родительской ViewGroup.
Итак, попробуйте установить тип слоя родительских представлений на None или Hardware
// Remove this if your parent ViewGroup has this set
//setLayerType(View.LAYER_TYPE_SOFTWARE, null);
// Or set this layer type if the above is not present
setLayerType(View.LAYER_TYPE_NONE, null);
Ответ 7
Вы можете сделать это
video_view = (VideoView)findViewById(R.id.video_view);
video_view.setZOrderMediaOverlay(true);
video_view.setVideoPath("/sdcard/myvideo.mp4");
video_view.setMediaController(new MediaController(this));
video_view.start();
video_view.videoView.setZOrderOnTop(true);
поместите метод setZorderOnTop (true) после того, как вы запустили videoView, а не раньше.
Ответ 8
Мое решение заключалось в размещении элемента управления VideoView в верхней части макета, независимо от того, установлено ли свойство видимости.
Эта работа для меня на S6 с Android 6.0
Ответ 9
<VideoView android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_centerInParent="true"
android:id="@+id/myVideo"/>
public class Videoplay extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_videoplay);
VideoView vidView = (VideoView)findViewById(R.id.myVideo);
MediaController vidControl = new MediaController(this);
String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
Uri vidUri = Uri.parse(vidAddress);
Toast.makeText(Videoplay.this, "Loading Teaser",Toast.LENGTH_LONG).show();
vidView.setVideoURI(vidUri);
vidView.start();
vidControl.setAnchorView(vidView);
vidView.setMediaController(vidControl);
}
Здесь я играю видео по одной из ссылок.. У меня отлично работает.
Надеюсь это поможет..
Ответ 10
Черный экран и воспроизведение звука произошли со мной, когда я не выпустил объект MediaPlayer. Когда вы воспроизводите видео в Activity с помощью медиаплеера, вы должны разблокировать его, когда активность будет уничтожена. И когда вы откроете его снова, будет создан новый экземпляр медиаплеера, который будет использовать уже освобожденные ресурсы.
MediaPlayer.release();
Ответ 11
Я попробовал все приведенные выше ответы, но не смог добиться успеха после просмотра некоторого кода. Я прошу сосредоточиться на просмотре видео. И это теперь работает на всех устройствах, надеюсь, это будет работать для некоторых разработчиков!
private var mediaController: MediaController? = null
private fun prepareVideo() {
val uri = Uri.fromFile(File(recordedVideoPath))
mediaController = MediaController(this)
mediaController?.setAnchorView(videoView)
videoView.setMediaController(mediaController)
videoView.requestFocus()
videoView.setVideoURI(uri)
videoView.seekTo(2)
videoView.setZOrderOnTop(true)
videoView.setOnPreparedListener {
try {
mediaController?.show(0)
} catch (e: Exception) {
System.out.println("Error in Video")
}
}
videoView.setOnErrorListener { _, _, _ ->
true
}
}
Ответ 12
Я думаю, вы используете плохой формат mp4. Использует специфический для Android формат mp4.