Android-MediaRecorder输出到ffmpeg的流

Android-MediaRecorder输出到ffmpeg的流,android,ffmpeg,video-streaming,mediarecorder,android-mediarecorder,Android,Ffmpeg,Video Streaming,Mediarecorder,Android Mediarecorder,我正在尝试将屏幕内容流式传输到rtmp服务器,我认为最简单/最好的方法是使用ffmpeg 到目前为止,我的情况如下: try { Socket socket = new Socket(url, port); ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.fromSocket(socket); mMediaRecorder.setAudioSource(MediaRecorder.AudioSourc

我正在尝试将屏幕内容流式传输到rtmp服务器,我认为最简单/最好的方法是使用ffmpeg

到目前为止,我的情况如下:

try {
    Socket socket = new Socket(url, port);
    ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.fromSocket(socket);

    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mMediaRecorder.setOutputFile(fileDescriptor.getFileDescriptor());
    mMediaRecorder.setVideoSize(DISPLAY_WIDTH, DISPLAY_HEIGHT);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mMediaRecorder.setVideoEncodingBitRate(512 * 1000);
    mMediaRecorder.setVideoFrameRate(30);
    int rotation = getWindowManager().getDefaultDisplay().getRotation();
    int orientation = ORIENTATIONS.get(rotation + 90);
    mMediaRecorder.setOrientationHint(orientation);
    mMediaRecorder.prepare();
} catch (IOException e) {
    e.printStackTrace();
}
在这里,重要的部分是

Socket socket = new Socket(url, port);
ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.fromSocket(socket);

mMediaRecorder.setOutputFile(fileDescriptor.getFileDescriptor());
所以,当我把它放在一个Asynctask中时,我可以让它尝试发送一些东西,但是我得到了一个
UnknownHostException

java.net.UnknownHostException: Unable to resolve host "rtmps://rtmp-api....": No address associated with hostname
所以,有人告诉我应该使用ffmpeg来实现这一点,但我不知道如何从MediaRecorder获取原始流以将其传递给ffmpeg

如果我理解正确,ffmpeg可以用作:

-i original_stream rtmps://rtmp-api...
所以,我怎样才能获得MediaRecorder的输出内容,其格式可以在ffmpeg中用于流媒体(而不是保存的文件)


谢谢

无法发表评论,因此我会将此作为答案,即使它有点太晚,但此项目应该是您想要的:

无法发表评论,因此我会将此作为答案,即使它有点太晚,但此项目应该是您想要的:

谢谢。这显示了一些希望,尽管我必须使用这段代码,看看它是否真的满足了我的需要。我会随时通知你的,谢谢。这显示了一些希望,尽管我必须使用这段代码,看看它是否真的满足了我的需要。我会随时告诉你最新情况。