De publicidad de Android de reproducción de vídeo y esquema de caché

la publicidad basada en vídeo en el dispositivo potenciado por Android, tales como: metro pantalla de publicidad, la publicidad de auto-servicio en la máquina, toman una máquina de publicidad número.

Los dos últimos días hizo el sistema de una máquina llamada el número final, un procesamiento de reproducción de bucle anuncios de video internas, y por lo tanto tienen Resumen Cipian

El primero en entender algunas de las características de un anuncio de vídeo

En primer lugar, el almacenamiento en caché de vídeo en red

En segundo lugar, la función de repetición

En tercer lugar, se actualiza dinámicamente anuncio de vídeo

En cuarto lugar, la garantía de puntualidad

En primer lugar, el almacenamiento en caché de vídeo en red

Cada jugador, obviamente, no tiene que cargar la red, el consumo excesivo de tráfico, incluso si es el caso bajo WIFI, también tiene que ser almacenado en caché.

Aquí se puede utilizar marcos de terceros a través AndroidVideoCache

1, la adición de una dependencia

implementation 'com.danikula:videocache:2.7.0

2, inicializar la configuración de proxy

public static HttpProxyCacheServer proxy; //視頻緩存代理

//創建视频播放緩存代理

proxy = new HttpProxyCacheServer.Builder(this)

        .maxCacheSize(1024 * 1024 * 1024) //1Gb 緩存

        .maxCacheFilesCount(5)//最大緩存5個視頻

        .build();

En segundo lugar, el bucle de procesamiento de acuerdo con el número de llamadas recursivas de una pluralidad de video, utilizando de manera modulo

código del núcleo

   public void playVideoOne() {

        int urlSize = urlList.size();

        index = index % urlSize;

        MediaController mediaController = new MediaController(getThis());

        //缓存起来这个 url 视频 提供缓存文件的名称默认情况下,AndroidVideoCache使用视频网址的MD5作为文件名

//        String proxyUrl = App.proxy.getProxyUrl("[http://jzvd.nathen.cn/63f3f73712544394be981d9e4f56b612/69c5767bb9e54156b5b60a1b6edeb3b5-5287d2089db37e62345123a1be272f8b.mp4](http://jzvd.nathen.cn/63f3f73712544394be981d9e4f56b612/69c5767bb9e54156b5b60a1b6edeb3b5-5287d2089db37e62345123a1be272f8b.mp4)");

        String proxyUrl = App.proxy.getProxyUrl(urlList.get(index));

        videoView.setMediaController(mediaController);//如果设置Controller 点击时会有可交互模式,暂停快进或快退;不设置的话更适用于广告,不可交互,只进行展示

        videoView.setVideoPath(proxyUrl); //為videoview設置播放路徑

        videoView.start();

        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override

            public void onCompletion(MediaPlayer mPlayer) {

//                mPlayer.start();

//                //循环播放

//                mPlayer.setLooping(true);

                index++;

                playVideoOne();// 監聽視頻一的播放完成事件,播放完畢就播放視頻二 递归

            }
            //在播放错误的监听回调中也最好做上面监听内的 操作,并且还要注意 在 onPause() 和 onResume() 回调中处理视频的停止和播放!

        });

    }

Consejos:

1, si un solo bucle de vídeo puede ser
  videoView.setOnPreparedListener();

  videoView.setOnCompletionListener();

//这两个方法回调中调用 ,均可达到循环播放单一视频的效果,建议写在 onCompletion 之后

mPlayer.start();
//循环播放
mPlayer.setLooping(true);
2, la cadena de dirección de Api
videoView.setVideoURI(Uri.parse("xxx"));//也可以达到播放网络视频的效果,

因为videoView.setVideoPath 内部调用的就是 videoView.setVideoURI
3, el uso .xml espectáculo VideoView
<VideoView

    android:id="@+id/videoView"

    android:layout_width="match_parent"

    android:layout_height="match_parent" />
4, el tiempo de reproducción anormal de VideoView tratamiento
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        videoView.stopPlayback(); //播放異常,則停止播放,防止彈窗使界面阻塞
        return true;
    }
});
5, en VerVer pausa y reanudar desde el último jugador de posición
在OnPause你可以得到当前的位置。

stopLength=mVideoView.getCurrentPosition();

mVideoView.pause() 

在OnResume()中使用。

mVideoView.seekTo(stopLength);

mVideoView.start()

Si se establece en ViedeView setVisibility GONE oculto, utilice la forma anterior se reanudará la reproducción desde el principio!

escena:

De acuerdo con la notificación de un servidor remoto, cuando el vídeo se reproduce en el bloque de anuncios cambia para mostrar un área de juego de vídeo portada página de notificación.

solución:

Puede utilizar el enfoque de la superposición de diseño "FrameLayout", ViedoView en la capa inferior, ha estado jugando. VideoView control dinámico por encima de página de aviso ocultar mostrar. VieoView no tiene por qué ser directamente pausar y reanudar la operación. Por supuesto, también se puede hacer una pausa y después reanudar el proceso de reproducción. Recuerdo que no permite establecer a ocultar ViedeView!

6, llama a los saltos método no están autorizados a expedir seekTo

A continuación, ejecute VideoView.start oyente métodos en el seekTo acabado ();

// 设置 VideoView 的 OnPrepared 监听,拿到 MediaPlayer 对象。
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
            //设置 MediaPlayer 的 OnSeekComplete 监听
                mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
                    @Override
                    public void onSeekComplete(MediaPlayer mp) {
                    // seekTo 方法完成时的回调
                        if(isPause){
                            videoView.start();
                            isPause = false;
                        }
                    }
                });
            }
        });

consulte https://www.jianshu.com/p/f51b2febcfd2

7, de vuelta de conmutación de vídeo en la página después del proceso de reproducción de nuevo
  /**
     * 在onResume()方法控制视频继续播放
     */
    @Override
    protected void onResume() {
        super.onResume();

        if (videoView != null) {
            videoView.seekTo(videoCurrentPosition);
            videoView.start();
        }
    }

    /**
     * onPause() 控制视频暂停播放
     */
    @Override
    protected void onPause() {
        super.onPause();

        if (videoView != null) {
            videoCurrentPosition = videoView.getCurrentPosition();
            videoView.pause();
        }
    }

En tercer lugar, el anuncio se actualiza dinámicamente

Hay muchas maneras, tales como:

1, recibir solicitudes de inserción hora de volver a hacer

2, el momento de la solicitud de sondeo o una fecha-hora especificada, a fin de garantizar la puntualidad de la dirección de enlace puede ser determinado proceso de extracción fecha posterior

En cuarto lugar, la garantía de puntualidad

Anuncios deben actualizar periódicamente, podemos lograr actualizaciones en tiempo real a través del contenido de la memoria caché dinámica url, en cuanto a la frecuencia de las actualizaciones, para ver cómo la url costura.

Por actualizaciones diarias:

Si se trata de actualizar los avisos de la fecha, puede estar en la foto, detrás de la URL de video añadir "fecha", por lo que, asegura que la URL que cambian todos los días, y almacenamiento en caché marco se tire en el día se carga primero volver a los datos de carga de datos directamente desde la memoria caché local. Y antes de que el contenido almacenado en caché se limpiará automáticamente.

Por la actualización del período:

Si es de acuerdo a diferentes horas del día para reemplazar las jugadas de anuncios, usted debe comenzar con los tirones de servidor qué período de tiempo, y luego en el período entre el momento actual, el inicio del período después de la url empalmado o al final del tiempo puede ser.

Por la actualización del rango de fechas:

Si la fecha se actualiza de acuerdo con la envergadura, como por ejemplo 01/01/2017 ~ 03/02/2017 jugar un par de vídeo. De hecho, esto es sólo el momento de jugar única gran concepto, la misma razón, comenzamos con el servidor consulta la fecha actual se encuentra entre los períodos que el reproductor de vídeo, y luego empalme o terminación fecha de inicio después de la URL.

Por actualización de fecha + hora:

Amplia gama por encima de la fecha, la hora del intervalo de días para jugar diferentes anuncios: empalme para terminar la fecha + período de tiempo de terminación.

Live Update:
Si usted quiere asegurarse de que cada jugador es nuevo y se puede empalmar de números aleatorios.

Puntualidad referencia de la garantía http://www.cnblogs.com/ygj0930/p/7742996.html

Publicado 26 artículos originales · ganado elogios 19 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/a23006239/article/details/80693949
Recomendado
Clasificación