Android - MediaRecorder输出流式传输ffmpeg

时间:2017-04-05 02:33:31

标签: android ffmpeg video-streaming mediarecorder android-mediarecorder

我正在尝试将屏幕内容流式传输到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中使用这种格式进行流式传输(而不是保存的文件)。

谢谢!

1 个答案:

答案 0 :(得分:0)

无法评论所以我会留下这个作为答案,即使它有点太晚了,但这个项目应该是你想要的:https://github.com/danielkucera/ZidoStreamer