Sur mon bouton, j'ai écrit le code suivant pour lire une vidéo à partir de My 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();
Je peux lire des vidéos enregistrées à partir de SDCARD dans le lecteur.
J'ai essayé toutes les méthodes ci-dessus, mais aucune d'entre elles ne pouvait fonctionner.
Enfin, j'ai essayé d'appeler cette fonction, puis la vidéo est apparue.
video_view.setZOrderOnTop(true);
J'espère que cela fonctionne aussi pour vous.
SOLUTION 1:
videoView.setZOrderOnTop(true);
cela définira la vidéo sur la couche supérieure; En d'autres termes: bloquez tout en dessous.
SOLUTION 2:
videoView.setBackgroundColor(Color.TRANSPARENT);
SOLUTION 3:
parfois, cela est lié à votre appthème; Dans mon cas, j'ai changé l'apptheme de @style/AppTheme
à @Android:style/Theme.NoTitleBar.Fullscreen
pour résoudre mon problème.
Je suis confronté au même problème: ma vue vidéo est redimensionnée à la résolution vidéo attendue, mais rien ne s'affiche à l'écran. J'ai essayé d'utiliser les solutions mentionnées ci-dessus mais rien n'a fonctionné.
J'ai essayé de définir la visibilité et cela a fonctionné, je ne sais pas pourquoi. Cela pourrait aider quelqu'un qui rencontre ce message et qui est confronté à un problème comme moi
videoView = (VideoView) findViewById(R.id.viewLiveStream);
videoView.setVisibility(View.VISIBLE);
Voici mon XML, je ne sais pas pourquoi la visibilité était un problème.
<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>
~
Pouvez-vous essayer ceci?
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();
J'avais exactement le même problème, sauf que j'ajoutais ma vue vidéo par programme. Lors de l'inspection de la hiérarchie des vues, j'ai remarqué que le type de couche du groupe de vues parent était défini sur logiciel.
Étant donné que la base de code sur laquelle je travaille est partagée et que je n'ai pas remarqué que le type de couche était en cours de configuration par logiciel dans une sous-classe du ViewGroup parent.
Essayez donc de définir le type de couche de vues du parent sur Aucun ou Matériel.
// 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);
essaye ça :
<?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>
c'est peut-être vous aider ...
<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);
}
Ici, je joue la vidéo à partir de l’un des liens. Cela fonctionne parfaitement pour moi.
J'espère que cela t'aides..
Ma solution consistait à placer le contrôle VideoView en haut de la présentation et peu importe Si vous définissez la propriété de visibilité.
Ce travail pour moi sur un S6 avec Android 6.0
L'écran noir et la lecture audio se sont produits avec moi lorsque je n'ai pas libéré l'objet MediaPlayer. Lorsque vous lisez une vidéo dans Activity avec le lecteur multimédia, vous devez la libérer lorsque l'activité est détruite. Et lorsque vous l'ouvrez à nouveau, une nouvelle instance de lecteur multimédia sera créée et utilisera les ressources déjà publiées.
MediaPlayer.release ();
Tu peux le faire
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);
mettez la méthode setZorderOnTop (true) après avoir démarré videoView, pas avant.