Explique los códecs en mi ejemplo [cerrado]

¿Alguien puede explicar qué está pasando en mi proyecto? Utilice tantos detalles como sea posible, solo quiero aprender, gracias.

Tengo un servidor web Apache. Contiene muchos videos (.mp4 .mkv que son ?contenedores?) También tengo archivos asx que apuntan a sus respectivos videos. Quiero que los usuarios transmitan los videos (en VLC o Windows Media Player), pero en este momento es muy lento. Creo que una mejor comprensión de los códecs ayudará.

  • Entonces, los códecs comprimen y descomprimen videos, ¿verdad?
  • La descompresión ocurre en el lado del cliente en el reproductor multimedia. Pero, ¿dónde ocurre la compresión?
  • ¿También está en el reproductor multimedia?
  • ¿O se puede especificar en el archivo asx?
  • ¿O el archivo de video elige qué códec usa para comprimir y descomprimir?
  • ¿Puedo elegir qué códec usar?
  • Sé que hay mejores códecs para ciertas situaciones que para otras. ¿Alguien puede explicar eso?
  • He visto un par de mis videos usando LAV para descomprimir mientras que algunos usan H264/5 (no recuerdo cuál).
  • En cuanto al lado de la transmisión, ¿hay alguna manera de decir: si la velocidad de la red es lenta, cambie el video de 1080p a 480p?
  • ¿Hay ciertas configuraciones que debo tener en cuenta en cualquiera de mis reproductores multimedia para ayudar con el almacenamiento en búfer, la transmisión, los códecs, etc.?
  • Acabo de ver en las etiquetas en la parte inferior que hay un códec y transcodificación. ¿Hay una diferencia? ¿Un códec especifica cómo ocurre la transcodificación? Me doy cuenta de que estas son muchas preguntas, pero si alguien tiene respuestas para alguna de ellas, hágamelo saber. De nuevo, solo estoy tratando de aprender

EDITAR Si necesito hacer cambios en el reproductor multimedia, ¿sería mejor tener un reproductor multimedia integrado dentro de mi servidor web? ¿Y las ideas sobre cómo hacerlo/por dónde empezar?

Divida esto en preguntas separadas. Tal como está, esto es demasiado amplio para obtener una respuesta efectiva.
Qué tal: ¿Qué está pasando en mi ejemplo? ¿Dónde está el códec realmente comprimiendo y descomprimiendo?

Respuestas (1)

Entonces, los códecs comprimen y descomprimen videos, ¿verdad?

Comprimir DESComprimir. Sí. Al igual que con la codificación de texto, por ejemplo, ascii o unicode, pero con el video tomas un raster (cuadrícula de píxeles) y lo conviertes en un flujo de datos. A menudo, el objetivo es hacer que el tamaño de los datos sea lo más pequeño posible, aunque a veces es para asegurarse de que los píxeles que se reconstruyen cuando se lee el archivo sean exactamente iguales a los píxeles que entraron, o una combinación de los dos. .

La descompresión ocurre en el lado del cliente en el reproductor multimedia. Pero, ¿dónde ocurre la compresión? ¿También está en el reproductor multimedia? ¿O se puede especificar en el archivo asx? ¿O el archivo de video elige qué códec usa para comprimir y descomprimir?

La descompresión tiene lugar en el cliente, ya sea el navegador, un reproductor multimedia o un complemento. La compresión ocurre una vez, cuando comprimes el video, es decir, cuando creas los archivos mp4, mkv, etc.

Los diferentes tipos de archivos son, de hecho, diferentes contenedores, y los contenedores pueden contener flujos codificados en diferentes códecs. Tome un archivo mp4. Por lo general, el video se codificará en h.264, mientras que el audio probablemente sea aac, y es posible que haya una transmisión de subtítulos codificada como movtext. A menudo, los formatos de contenedor tienen la capacidad de contener muchos códecs diferentes. El contenedor quicktime (mov) es compatible con docenas de códecs, al igual que mkv.

Una vez que un archivo se comprime con un determinado códec, necesitará algo que pueda leer ese códec para reproducirlo. Los detalles de cuál es el códec, así como los parámetros que le indican al jugador cómo decodificarlo, están en el contenedor. Así que el jugador también tendrá que saber leer el contenedor.

El archivo .asx solo apuntará a la transmisión, depende del jugador decodificarlo.

¿Puedo elegir qué códec usar? Sé que hay mejores códecs para ciertas situaciones que para otras. ¿Alguien puede explicar eso?

Sí, diferentes códecs son útiles para diferentes cosas. Si está transmitiendo video, querrá una buena calidad pero con las tasas de bits más bajas posibles. A menudo, eso significa usar una compresión con pérdida, una en la que el video comprimido ha perdido calidad en comparación con el original sin comprimir. El truco es perder la calidad de una manera que sea menos obvia para los humanos. h.264 es probablemente la herramienta adecuada para el trabajo, a menos que las restricciones de patentes o los costos de licencia sean un problema.

Sin embargo, si estoy procesando un archivo intermedio en mi cadena de posproducción, quiero una alta profundidad de bits y una calidad sin pérdidas o con pérdidas mínimas. Podría optar por 4:4:4 de 12 bits sin pérdidas, o comprometerme y usar un códec como cineform o proRes, según mi sistema operativo. Si bien mantienen la calidad y el rango dinámico, serían códecs terribles para la transmisión, 12 bits 4: 4: 4: 4 sin pérdidas tiene una velocidad de datos de ~ 2500 MB / s. Otros códecs son un compromiso entre el tamaño y la calidad del archivo, otros funcionan muy bien a tasas de bits ultrabajas o requieren menos CPU, otros son buenos porque no están gravados por patentes o licencias.

He visto un par de mis videos usando LAV para descomprimir mientras que algunos usan H264/5 (no recuerdo cuál).

LAV es una biblioteca de software utilizada por el software de compresión y descompresión. Es capaz de leer y escribir muchos códecs. H.264/5 son códecs.

En cuanto al lado de la transmisión, ¿hay alguna manera de decir: si la velocidad de la red es lenta, cambie el video de 1080p a 480p?

sí, creo que sí: youtube lo hace, pero fuera de mi campo de especialización, y probablemente sea una mejor pregunta para el superusuario.

¿Hay ciertas configuraciones que debo tener en cuenta en cualquiera de mis reproductores multimedia para ayudar con el almacenamiento en búfer, la transmisión, los códecs, etc.?

No realmente, es el lado de la compresión de las cosas lo que quieres optimizar. Debe conocer las capacidades de su cliente y codificar con eso en mente.

Acabo de ver en las etiquetas en la parte inferior que hay un códec y transcodificación. ¿Hay una diferencia? ¿Un códec especifica cómo ocurre la transcodificación? Me doy cuenta de que estas son muchas preguntas, pero si alguien tiene respuestas para alguna de ellas, hágamelo saber. De nuevo, solo estoy tratando de aprender

La transcodificación es convertir de un códec a otro. Digamos que he dominado uno de mis códecs de 12 bits sin pérdidas. Ahora tengo un archivo de video que se ejecuta en cientos de conciertos. Es posible que desee hacer una copia para Internet, así que enciendo mi aplicación de transcodificación y le digo que tome el maestro y lo comprima en un archivo mp4, que ocupará una fracción del espacio.

Si transmito el mismo archivo desde la computadora de mi trabajo frente a la computadora de mi casa, la transmisión es diferente; uno transmite con más retraso que el otro. ¿Tiene esto que ver con qué método se está utilizando para descomprimir, o tiene que ver con el ancho de banda de la conexión?
Es posible que la CPU, la GPU y la RAM tengan un impacto en el rendimiento de la reproducción, pero lo más probable, como habrás adivinado, es el ancho de banda.