android - source - El video no se muestra en VideoView pero puedo escuchar su sonido
videoview android studio example (11)
¿Puedes darle una oportunidad a esto?
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();
En mi botón, escribí el siguiente código para reproducir video desde mi tarjeta 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();
Puedo reproducir video grabado desde SDCARD en el reproductor.
- Pero cuando lo ejecuto en mi aplicación en video, solo puedo escuchar el sonido.
- Problema: No puedo ver el video.
---- Intenté seguir el enlace SO pero todavía no tengo suerte ----
- enlace 1
enlace 2
¿Alguna vez alguien ha enfrentado este tipo de problema? Si es así, ¿cómo puede resolverlo?
Creo que usas mal el formato mp4. Utiliza el formato mp4 específico de Android!
Enfrenté el mismo problema, mi vista de video cambió el tamaño a la resolución de video esperada pero no hay nada en la pantalla. Intenté usar las soluciones mencionadas pero nada funcionó.
Intenté establecer la visibilidad y eso funcionó, sin saber por qué. Esto podría ayudar a alguien que se encuentre con esta publicación y se enfrenta a un problema como yo
videoView = (VideoView) findViewById(R.id.viewLiveStream);
videoView.setVisibility(View.VISIBLE);
Aquí está mi XML, no estoy seguro de por qué la visibilidad era un problema.
<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>
~
He intentado todos los métodos anteriores, pero ninguno de ellos podría funcionar.
Finalmente, traté de llamar a esta función, luego apareció el video.
video_view.setZOrderOnTop(true);
Espero que esto también te funcione.
La pantalla en negro y la reproducción de audio sucedieron conmigo cuando no liberé el objeto MediaPlayer. Cuando reproduzca un video en Activity with media player, debe liberarlo cuando se destruya la actividad. Y cuando lo abra de nuevo, se creará una nueva instancia de reproductor multimedia que utilizará los recursos ya liberados.
MediaPlayer.release ();
Mi solución fue colocar el control VideoView en la parte superior del diseño y no importa si configura la propiedad de visibilidad.
Este trabajo para mí en un S6 con Android 6.0
Puedes hacerlo
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);
ponga el método setZorderOnTop (verdadero) después de haber iniciado el videoView, no antes.
SOLUCIÓN 1:
videoView.setZOrderOnTop(true);
esto establecerá la videovisión en la capa superior; En otras palabras: bloquear todo bajo él.
SOLUCIÓN 2:
videoView.setBackgroundColor(Color.TRANSPARENT);
SOLUCIÓN 3:
A veces esto está relacionado con su tema; En mi caso, cambié el tema de aplicación de @style/AppTheme
a @android:style/Theme.NoTitleBar.Fullscreen
corregir mi problema.
Tuve exactamente el mismo problema, excepto que estaba agregando mi vista de video programáticamente. Noté que, al inspeccionar la jerarquía de vistas, el ViewGroup principal tenía su tipo de capa configurado para software.
Dado que el código base sobre el que trabajo se comparte, no noté que el tipo de capa se estaba configurando como software en una subclase del grupo de vista principal.
Así que intente configurar el tipo de capa de las vistas de los padres en Ninguno o 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);
prueba esto :
<?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>
puede ser de ayuda ...
<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);
}
Aquí estoy reproduciendo el video de uno de los enlaces ... Funciona perfectamente para mí.
Espero que esto ayude..