FMUSER ¡Transmite video y audio sin cables más fácilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo haitiano
iw.fmuser.org -> hebreo
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
Recientemente, realicé un proyecto de Android para usar la función de codificación y decodificación. Los requisitos generales son: tomar un video a través de la cámara, luego extraer cuadros, generar un video corto y revertir el video. Al principio, utiliza directamente el formato de codificación H.264, sin utilizar el embalaje contenedor MP4. Después de hacer estas funciones, siento que el formato MP4 es más compatible con todos los modelos y reduce los errores. Tome un ejemplo obvio: cuando Android está codificado, a menudo se usa la combinación de mediacodec y mediaextractor. Sin embargo, si usa el archivo de video desnudo H.264, la función setsource de mediaextractor informará una excepción. No puede analizar el archivo de video en algunos modelos (como Meizu Note2, el sistema es 5.1).
Después de obtener los requisitos generales, inicialmente usamos ffmpeg para hacer un códec de video, el llamado códec de software. Debido a la velocidad de procesamiento lenta y la necesidad de una visualización rápida después de la decodificación, el esquema no puede lograr el efecto deseado (una decodificación de video ffmpeg y guardada como ejemplo JPEG: https://github.com/xiaoxiaoqingyi/ffmpeg-android-video-decoder )。 Pero también tiene algunas ventajas, como una buena compatibilidad y conversión de color. Después de todo, no es un códec de hardware (tantos modelos en China, ya sabes). En segundo lugar, ffmpeg puede generar el marco especificado, mientras que mediacodec no puede generar el marco especificado. Necesita ingresar varios cuadros al decodificador para decodificar un cuadro. En la actualidad, todavía no he encontrado un esquema para ingresar un marco y resolver un marco, que Dios sabe que puede guiar.
En el caso de que el códec de software no sea adecuado, solo podemos considerar el uso de códec de hardware. Hace unos días, asistí a la Conferencia de desarrolladores en vivo de Tencent 2017live y aprendí que la mayoría de las transmisiones en vivo ahora usan hardware para codificar y decodificar. Solo dicho, algunos modelos no pueden usar mediaextractor para analizar archivos H.264. Para que sean compatibles con la mayoría de los modelos, deben analizarlos por sí mismos. Al analizar cada byte del archivo H.264, pueden distinguir la posición de cada cuadro y qué tipo de cuadro es. Para lograr este requisito, en primer lugar, los datos obtenidos de la cámara se configuran en formato nv21 si se usa la cámara, pero algunas personas usan Camera2 y el formato es imagen. No importa qué formato sea, debe convertirse a yuv420sp o yuv420p (Nota: al transcodificar, es mejor usar JNI, use C / C + + para convertir el formato, la eficiencia será muchas veces mayor), de modo que se puede codificar mediante mediacodec y luego guardar el archivo H.264. Al crear una instancia de mediacodec, además de establecer los parámetros requeridos, también debe prestar atención a algunos aspectos, como qué codificador elegir. Generalmente, elegirá lo siguiente:
MediaCodec.createEncoderByType ("video / avc");
Esto parece no ser un problema. El principio básico es obtener el mejor codificador, el primero en el registro de codificadores del sistema Android, que suele ser decodificación por hardware (mediacodec también puede llamar códec de software). De hecho, no es muy confiable crear un codificador de esta manera. Aunque el sitio web oficial también lo recomienda, en muchos modelos domésticos de Android, algunos teléfonos móviles tendrán problemas, algunos códigos tendrán una pantalla azul y algunos parpadearán directamente. Hay un ejemplo extraño, que aproximadamente significa obtener primero el codificador de tipo "video / AVC" y luego probar uno por uno a través de try catch. Si no hay problema, elija este codificador. Código fuente: mediacodec_ rtsp_ h264
Otro problema es que cuando se configura el intervalo I-frame, algunos teléfonos móviles no funcionan. Los ajustes son los siguientes:
mediaFormat.setInteger (MediaFormat.KEY_ I_ FRAME_ INTERVAL, intervalo);
En vista de esta situación, necesitamos usar otra forma de configurar el marco I, que es una configuración obligatoria:
Parámetros de paquete = new Bundle ();
params.putInt (MediaCodec.PARAMETER_ KEY_ SOLICITUD_ SYNC_ FRAME, 0);
mMediaCodec.setParameters (parámetros);
En la codificación y decodificación, cuando todos los datos se ingresan en el códec, recuerde ingresar el carácter final, entonces el códec generará todos los cuadros.
También existe un problema de extracción de cuadros. Si se utiliza mediacodec para extraer fotogramas, se generará un nuevo video. ¿Puedo eliminar el marco del archivo H.264? No funciona así. Suele haber una pantalla de bienvenida. Esto necesita volver a ingresar el archivo H.264 en el decodificador, y luego obtener el marco que desea, y luego ingresarlo en un nuevo codificador para generar el archivo H.264 que desea. También hay un problema de formato aquí. No es que los datos descodificados del descodificador puedan ser codificados directamente por el codificador. Algunos teléfonos móviles pueden, y algunos tendrán pantalla azul o incluso retrocederán. En este caso, necesitamos unificar el formato del decodificador. Si usa este formulario para obtener:
mMediaCodec.getOutputBuffer()
Hay todo tipo de formatos y es difícil para ti ser compatible. Google ha lanzado un nuevo formato:
mMediaCodec.getOutputImage (índice de salida)
El resultado es un objeto de imagen, que se puede guardar como una imagen JPEG o convertir a nv21, como la parte de disparo anterior, convertir al formato YUV422 y luego ingresar al codificador. Entonces no importa qué modelo puede ser compatible (pruebo más de 10 fabricantes diferentes de teléfonos móviles), aunque muchos desvíos.
|
Ingrese el correo electrónico para recibir una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo haitiano
iw.fmuser.org -> hebreo
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
FMUSER ¡Transmite video y audio sin cables más fácilmente!
Contacto
Dirección:
Habitación No.305 Edificio HuiLan No.273 Huanpu Road Guangzhou China 510620
Categorías
Newsletter