VideoEncoder using inputSurfaceView to send to RTMPClient
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Área
- mobile-dev
Línea de trabajo
The reporter feeds DeepAR output into VideoEncoder via inputYUVData, and asks how to use the encoder's input Surface (setInputSurface) instead. Start with the VideoEncoder class in the RootEncoder library and how it exposes its input surface, then trace how the RTMP client consumes encoded data. Done would mean a working path where a rendering Surface reaches the encoder without per-frame YUV copies; this needs Android graphics and codec knowledge and has been open for over 600 days with no resolution.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hello,
I have been trying to send a video feed directly from DeepAR but DeepAR allows only one mode at a time (renderToSurfaceView) or offScreenRendering which gives me processed Frames that dont function very well.
My primary goal is to directly feed the surface as that will probably work best for my case but the setInputSurface method that comes with the VideoEncoder doesnt work in my case. I am working with the 2.2.6 version of the RootEncoder. With using frame by frame approach I managed to somewhat convert the frames and send them through the VideoEncoder and the GetVideoData interface but the performance is abysmal and the frames get distorted because of DeepArs weird way of processing frames. Is there anyway we could directly just use the Surface that DeepAR is rendering its frames on ?
The current approach which I experimented around with is something like:
public void frameAvailable(Image frame) {
if (frame == null) {
Log.e(TAG, "frameAvailable: Received null frame");
return;
}
// renderer.renderImage(frame);
ByteBuffer buffer=frame.getPlanes()[0].getBuffer();
int[] byteArray=getArrayfromBytes(buffer);
if(byteArray.length>0){
ByteBuffer yuvBuffer=YUVBufferExtractor.convertImageToYUV(frame);
// byte[] yuvByteArr = YUVUtil.ARGBtoYUV420SemiPlanar(byteArray, frame.getWidth()+48, frame.getHeight());
byte[] yuvByteArr=yuvBuffer.array();
Frame yuvFrame =new Frame(yuvByteArr, 0, frame.getWidth()*frame.getHeight());
renderer.renderImageThroughFrame(yuvFrame, frame.getWidth(), frame.getHeight());
videoEncoder.inputYUVData(yuvFrame);
}
}
- Lenguaje dominante
- Kotlin
- Estrellas
- 3k
- Forks
- 946
- Merge medio
- 5 d 1 h
- PR fusionados (30 d)
- 6
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pedroSG94/RootEncoder
-
Scheme-less stream URLs throw NullPointerException instead of URISyntaxExceptionPosiblemente ocupada @blihio la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
pedroSG94/RootEncoder#2218 ·
Los mantenedores suelen responder en 3 días
-
Nullable GIF input causes NullPointerException in GifStreamObject.loadPosiblemente ocupada @blihio la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
pedroSG94/RootEncoder#2216 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
pedroSG94/RootEncoder#2213 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
pedroSG94/RootEncoder#2207 · 1 reacción ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
pedroSG94/RootEncoder#2203 ·
Los mantenedores suelen responder en 3 días
Todos los issues de pedroSG94/RootEncoder
Issues similares
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
"Check mod" buttonAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
yairm210/Unciv#15803 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement triaged
Dificultad 1/5 Menos de una hora Aptitud para principiantes 63/100
Los mantenedores suelen responder en 1 día
-
bug follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
bug 🐞 CI/CD ⚒️
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
valkey-io/valkey-glide#7370 ·
Los mantenedores suelen responder en 1 día