FFMPEG descodificar video a marcos sin pérdida Aceleración de hardware CUDA -- video campo con ffmpeg campo con nvidia campo con h.265 camp Relacionados El problema

FFmpeg decode video to lossless frames hardware acceleration CUDA


0
vote

problema

Español

Tengo 1 segundos videos codificados H.265 a 30 fps que entran en un servidor para su procesamiento. El servidor necesita decodificar los videos en marcos individuales (sin pérdida). Estos videos están llegando muy rápidamente, por lo que el desempeño es de suma importancia. El servidor tiene una GPU NVIDIA compatible con H.265, y he construido ffmpeg con soporte para CUDA. La siguiente es la salida de configuración de ffmpeg :

  ffmpeg version N-100479-gd67c6c7f6f Copyright (c) 2000-2020 the FFmpeg developers   built with gcc 8 (Ubuntu 8.4.0-3ubuntu2)   configuration: --enable-nonfree --enable-cuda-nvcc --enable-nvenc --enable-opencl --enable-shared                  --enable-pthreads --enable-version3 --enable-avresample --enable-ffplay --enable-gnutls                  --enable-gpl --disable-libaom --disable-libbluray --disable-libdav1d                   --disable-libmp3lame --enable-libopus --disable-librav1e --enable-librubberband                  --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora                  --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264                  --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig                  --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb                  --enable-libopencore-amrwb --disable-libopenjpeg --enable-librtmp --enable-libspeex                  --enable-libsoxr --disable-videotoolbox --disable-libjack --disable-indev=jack                  --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64   

Decodo los videos en PNGs, y estoy usando el siguiente comando:

  ffmpeg -y -vsync 0 -hwaccel cuvid -hwaccel_output_format cuda -hwaccel_device 0 -c:v hevc_cuvid         -i 0.mp4 -vf hwdownload,format=nv12 -q:v 1 -qmin 1 -qmax 1 -start_number 0 f%d.png   

Este comando aprovecha con éxito la aceleración de hardware para la decodificación H.265. Pero, el codigo PNG está hecho por la CPU.

¿CUDA tiene apoyo para la codificación de imágenes sin pérdidas? El formato no necesita ser PNG, pero tiene que ser sin pérdidas. CUDA tiene una Biblioteca NVJPEG , pero JPEG es un formato de pérdida. ¿Hay una biblioteca de codificación de imágenes similares en CUDA para un formato sin pérdidas (que también está integrado con ffmpeg )?

Editar: Un poco más de contexto ...

Actualmente estoy usando PNGS debido a su capacidad de compresión. Estas imágenes son 2560x1280 en tamaño, por cierto. Por un lado, es esta compresión la que cuesta los ciclos de la CPU. Por otro lado, también estoy limitado por el rendimiento de la rapidez con que (y cuánto datos agregados) puedo subir estos cuadros al consumidor ascendente. Por lo que es básicamente una compensación entre:

  1. Queremos extraer estos marcos lo más rápido posible.
  2. Queremos eficiencia con respecto al tamaño de la imagen.
Original en ingles

I have 1 second H.265-encoded videos at 30 fps coming into a server for processing. The server needs to decode the videos into individual frames (lossless). These videos are coming in very quickly, so performance is of utmost importance. The server has a H.265 compatible Nvidia GPU, and I have built ffmpeg with support for CUDA. The following is the configuration output from ffmpeg:

ffmpeg version N-100479-gd67c6c7f6f Copyright (c) 2000-2020 the FFmpeg developers   built with gcc 8 (Ubuntu 8.4.0-3ubuntu2)   configuration: --enable-nonfree --enable-cuda-nvcc --enable-nvenc --enable-opencl --enable-shared                  --enable-pthreads --enable-version3 --enable-avresample --enable-ffplay --enable-gnutls                  --enable-gpl --disable-libaom --disable-libbluray --disable-libdav1d                   --disable-libmp3lame --enable-libopus --disable-librav1e --enable-librubberband                  --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora                  --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264                  --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig                  --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb                  --enable-libopencore-amrwb --disable-libopenjpeg --enable-librtmp --enable-libspeex                  --enable-libsoxr --disable-videotoolbox --disable-libjack --disable-indev=jack                  --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 

I decode the videos into PNGs, and am using the following command:

ffmpeg -y -vsync 0 -hwaccel cuvid -hwaccel_output_format cuda -hwaccel_device 0 -c:v hevc_cuvid \        -i 0.mp4 -vf hwdownload,format=nv12 -q:v 1 -qmin 1 -qmax 1 -start_number 0 f%d.png 

This command successfully leverages the hardware acceleration for the H.265 decode. But, the PNG encode is done by the CPU.

Does CUDA have support for encoding of lossless images? The format does not need to be PNG, but it does need to be lossless. CUDA has a nvJPEG Library, but JPEG is a lossy format. Is there a similar image encoding library in CUDA for a lossless format (that is also integrated with ffmpeg)?

Edit: Some more context....

I am currently using PNGs because of their compression-ability. These images are 2560x1280 in size, btw. On one hand, it is this compression that costs the CPU cycles. On the other hand, I am also limited by the throughput of how fast (and how much aggregate data) can I upload these frames to the upstream consumer. So it's basically a tradeoff between:

  1. We want to extract these frames as quickly as possible.
  2. We want efficiency regarding the image size.
           
         
         

Lista de respuestas


Relacionados problema

0  Encontrar dimensiones de PU en el código de referencia HM 12.1  ( Finding pu dimensions in hm 12 1 reference code ) 
Estoy usando el código de referencia HM 12.1. Mi tarea es encontrar dimensiones de PU (tanto simétricas como asimétricas). desde un flujo de bits H.265 codifi...

1  ¿Qué formato de salida FFMPEG (-F) utilizo para la codificación de dos pases de los archivos MKV?  ( What ffmpeg output format f do i use for two pass encoding of mkv files ) 
Recientemente retrocedí una de mis películas de Blu-ray y es de aproximadamente 36 GB. Uso de FFMPEG para obtener información del video, está en H.264 en un c...

33  Soporte de navegador web H.265 / HEVC [CERRADO]  ( H 265 hevc web browser support ) 
cerrado. Esta pregunta no cumple con pautas de desbordamiento de pila . Actualmente no está aceptando respuestas. ...

5  HEVC (H.265) intra-predicción  ( Hevc h 265 intra prediction ) 
Estoy trabajando en un proyecto en la implementación de la predicción INTRA de HEVC con Matlab. He leído tantos artículos para escribir los códigos en Matlab ...

1  Obtenga el archivo de video H.265 de PCAP RTP Capture  ( Get h 265 video file from pcap rtp capture ) 
Estoy tratando de extraer el archivo de video de H.265 codificado y amplificador; Captura de PCAP RTTSP / RTP sin cifrado. Intenté extraer datos crudos de RTP...

1  ¿Cómo se relaciona una corriente de bits H.265 con su archivo de seguimiento?  ( How does a h 265 bitstream relate to its trace file ) 
Estoy usando el https: //hevc.hhi.fraunhofer .DE / SVN / SVN_HEVCSOFTWARE / TAGS / HM-16.9 Versión del codificador de video H265 y lo usó para generar un ar...

6  Analizando hevc bitstream  ( Parsing hevc bitstream ) 
¿Hay alguna manera de analizar un archivo de brocas de HEVC? Quiero poder crear un nuevo archivo de tinte de bits que haya seleccionado los paquetes de la u...

0  HEVC: Archivo de rastreo de la unidad nal para cada unidad nul producida por el codificador  ( Hevc nal unit trace file for each nul unit produced by the encoder ) 
Estoy usando HM 14.0 como referencia. ¿Hay alguna manera de obtener información específica sobre las unidades nal como (a) type (b) num_bytes (c) frame_no ...

3  FFMPEG no reconocerá las opciones X265 [CERRADO]  ( Ffmpeg wont recognize x265 options ) 
cerrado. Esta pregunta no cumple con pautas de desbordamiento de pila . Actualmente no está aceptando respuestas. ...

5  ¿Por qué H.264, MPEG-4 el AAC deja de trabajar en iPhonexs / Max?  ( Why did h 264 mpeg 4 he aac stop working on iphonexs max ) 
asunto con respecto al nuevo hardware He estado investigando como locos, y no he encontrado ningún indicio de por qué mis videos codificados H.264 han dej...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos