Gestionar reproducción de vídeo
Los controles de reproducción cumplen los estándares RTSP y la especificación de transmisión ONVIF (https://www.onvif.org/profiles/specifications/).
Resumen de grabación
Puedes obtener una descripción general de todo el vídeo grabado disponible en el dispositivo utilizando el comando GetRecordingSummary. Esto no es obligatorio, pero proporciona información útil antes de realizar una búsqueda.
Puede utilizar GetRecordingSummary y/u GetMediaAttributes para obtener la marca de tiempo de la primera y la última grabación, pero primero debe habilitar el ajuste Utilizar configuraciones de cámaras en el complemento de Milestone Open Network Bridge en el XProtect Management Client.
Cree un proxy para el servicio RecordingSearch utilizando el terminal de servicio devuelto por GetServices. Cree objetos de solicitud y respuesta, luego invoque GetRecordingSummary.
SearchBindingProxy searchProxy( &soapSearch );
std::string searchEndpoint = "http://" + host + "/onvif/recording_search_service";
_tse__GetRecordingSummary tse__GetRecordingSummary;
_tse__GetRecordingSummaryResponse tse__GetRecordingSummaryResponse;
result = searchProxy.GetRecordingSummary( searchEndpoint.c_str(), NULL,
&tse__GetRecordingSummary, &tse__GetRecordingSummaryResponse );
Buscar grabaciones
El método del servicio de búsqueda FindRecordings se inicia como una búsqueda asíncrona en la cámara. FindRecordings devuelve un token que hace referencia a los resultados de la búsqueda. Aunque haya solo una grabación disponibles, una búsqueda es la forma adecuada de obtener una referencia para esa grabación.
Envíe una solicitud FindRecordings con los siguientes parámetros obligatorios:
SearchScope>IncludedSources>Token– debe proporcionar el token del GUID de la cámaraSearchScope>RecordingInformationFilter– cadena con los siguientes parámetros:timestamp(en formato UTC)maxTimeBefore(el tiempo antes de la marca de tiempo solicitada, en milisegundos)maxCountBefore(el número máximo de pistas antes de la marca de tiempo solicitada)maxTimeAfter(el tiempo después de la marca de tiempo solicitada, en milisegundos)maxCountAfter(el número máximo de pistas después de la marca de tiempo solicitada)
Por ejemplo:
boolean(//Track[TrackType = “Video”]),2016-12-06T08:07:43Z,99999999,20,99999999,20
Obtendrá una respuesta con un SearchToken que es único para los criterios de búsqueda.
Pase el SearchToken a GetRecordingSearchResults y obtendrá una lista con todas las pistas correspondientes a los criterios de búsqueda.
Iniciando reproducción
Al visualizar la reproducción de vídeo, la velocidad predeterminada es 1 (reproducción normal en dirección de avance).
La reproducción se inicia mediante el método REPRODUCIR RTSP. Se puede especificar un rango. Si no se ha especificado ningún rango, el flujo se reproduce desde el principio y se reproduce hasta el final, o, si el flujo se pausa, se reanuda en el punto en que se puso en pausa. En este ejemplo, Range: npt=3-20 da instrucciones al servidor RTSP para que comience la reproducción desde el tercer segundo hasta el segundo 20.
Por ejemplo:
PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0
CSeq: 123
Session: 12345678
Require: onvif-replay
Range: npt=3-20
Rate-Control: no
Reproducción inversa
Los dispositivos ONVIF pueden admitir la reproducción inversa. La reproducción inversa se indica utilizando el campo Encabezado de escala con un valor negativo. Por ejemplo, para reproducir en reversa sin pérdida de datos, se usaría un valor de –1,0.
El Milestone Open Network Bridge admite los valores [-32 : 32].
PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0
CSeq: 123
Session: 12345678
Require: onvif-replay
Range: clock=20090615T114900.440Z
Rate-Control: no
Scale: -1.0
Cambiar velocidad
La velocidad se controla mediante el encabezado Rate-Control de RTSP. Si Rate-Control=yes, el servidor tiene el control de la velocidad de reproducción. El flujo se entrega en tiempo real utilizando mecanismos estándar de sincronización RTP. Si Rate-Control=no, el cliente tiene el control sobre la velocidad de reproducción. La reproducción controlada por la velocidad normalmente solo la usará clientela específica no ONVIF, porque no especificará Rate-Control=no.
Para controlar la velocidad de reproducción en un cliente, utilice los controladores facilitados. Por ejemplo, con el reproductor multimedia VLC, seleccione Reproducir > Velocidad > Más rápido o Más despacio. Esto aumenta o reduce la velocidad en 0,5.
Más rápido bien y Más lento bien cambian la velocidad en 0,25.
Gestionar reproducción del reproductor multimedia VLC con entradas de la línea de comandos
Puede gestionar la reproducción de vídeo en el reproductor multimedia VLC utilizando líneas de comando. Consulte la ayuda de la línea de comandos de VLC (https://wiki.videolan.org/VLC_command-line_help/) para obtener más detalles.
Dichos comandos le permiten, por ejemplo, la reproducción inversa y el cambio de la hora de inicio de la reproducción.
Un ejemplo de una línea de comandos típica:
>vlc.exe --rate=-1.0 --start-time=3600 "rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373"
Dónde:
- La velocidad es el parámetro de escala y velocidad
- El tiempo de inicio son los segundos después del inicio de la base de datos
A continuación se muestran los controles de reproducción para el reproductor de medios VLC:
Código | Objetivo | Valores | Uso |
|---|---|---|---|
| input-repeat= | Repeticiones de entradas | <entero [-2147483648 .. 2147483647]> | Número de veces que se repetirá la misma entrada. |
start-time= | Hora de inicio | <float> | La transmisión comenzará en esta posición (en segundos). |
stop-time= | Tiempo de parada | <float> | La transmisión parará en esta posición (en segundos). |
run-time= | Tiempo de ejecución | <float> | La transmisión se ejecutará durante el tiempo que dure (en segundos). |
input-fast-seek no-input-fast-seek | Búsqueda rápida (deshabilitada de forma predeterminada) | Favorecer la velocidad frente a la precisión al buscar. | |
rate= | Velocidad rep. | <float> | Esto define la velocidad de reproducción (la velocidad nominal es 1.0). |
input-list= | Lista de entrada | <string> | Puede dar una lista de entradas separada por comas que se concatenarán juntas después de la normal. |
input-slave= | Esclavo de entrada (experimental) | <string> | Esto le permite reproducir desde varias entradas al mismo tiempo. Esta característica es experimental, no admite todos los formatos. Utilizar una lista de entradas separada por «#». |
Recuperar grabaciones de un intervalo de tiempo específico
Puede solicitar la reproducción de vídeo en un momento específico utilizando el parámetro URL opcional clock en un enlace RTSP.
Este es el formato: rtsp://[hostname]:[port]/vod/[camera_guid]?clock=[start_time]-[end_time]Z.
Las propiedades [start_time] y [end_time] suelen seguir el formato yyyyMMddTHHmmssZ (año, mes, día, letra fija T, hora en formato de 24 horas, minutos, segundos y letra fija Z).
La propiedad end_time es opcional. Para solicitar solo la hora de inicio, utilice este formato: rtsp://[hostname]:[port]/vod/[camera_guid]?clock=[start_time]-. Por ejemplo, rtsp://onbhost:554/vod/3bf3b583-768a-43c7-ae74-38df708c4dbf?clock=20250830T140000Z- devolverá una transmisión que comienza a las 14:00 UTC del 30 de agosto de 2025.
La letra fija Z indica la zona horaria UTC. Aunque se omita (no recomendado), la zona horaria sigue siendo UTC, a menos que se especifique lo contrario. Para establecer otra zona horaria, utilice uno de los sufijos compatibles:
-
La letra fija p o + seguida de hhmm indica una compensación positiva con respecto a UTC. Por ejemplo, 20250830T140000p0100 significa UTC+01:00 (hora de Europa Central).
-
La letra fija m seguida de hhmm indica una compensación negativa con respecto al UTC. Por ejemplo, 20250830T140000m0800 significa UTC-08:00 (hora del Pacífico).