问题:我有来自GoPro相机的视频流,格式为.m3u8.我需要在应用程序中显示流的内容,然后流式传输视频.对于流媒体,我有与MediaCodec和ffmpeg一起使用的库.我应该能够流式传输MediaCodec的outputBuffer.
我可以在SurfaceView上使用MediaPlayer流式传输视频,没问题.真正的困难在于使用MediaCodec.我可以初始化MediaCodec,获取表面并将其添加到MediaPlayer - 蒸汽播放 - 我可以听到声音.
现在的问题是:
在SurfaceView上显示流 - 或MP和MC可以使用的任何其他视图.从Surface到SurfaceView/TextureView显示数据的最佳方法是什么?
我无法从MediaCodec获取数据.我只需要支持5.0+设备,所以我尝试使用MediaCodec.Callback.但我每次都会得到错误.我还没有找到错误的含义.我可以做些什么来配合Callback工作?
有没有"简单"的方法,或者我必须深入到谷歌Grafika的缓冲区和表面?
以下是我得到的错误:
E/ACodec? [OMX.qcom.video.encoder.avc] storeMetaDataInBuffers (output) failed w/ err -2147483648
1877-1904/com.example.marek.goprorecorder E/ACodec? [OMX.qcom.video.encoder.avc] ERROR(0x80001009)
07-15 15:54:47.411 1877-1904/com.example.marek.goprorecorder E/ACodec? signalError(omxError 0x80001009, internalError -2147483648)
07-15 15:54:47.411 1877-1903/com.example.marek.goprorecorder E/MediaCodec? Codec reported err 0x80001009, actionCode 0, while in state 6
Errror mess: android.media.MediaCodec$CodecException: Error 0x80001009
07-15 15:54:47.454 1877-1877/com.example.marek.goprorecorder D/MediaCodecCallback? Errror diag: android.media.MediaCodec.error_neg_2147479543
07-15 15:54:47.454 1877-1877/com.example.marek.goprorecorder D/MediaCodecCallback? Errror rec: false
07-15 15:54:47.454 1877-1877/com.example.marek.goprorecorder D/MediaCodecCallback? Errror tra: false
Run Code Online (Sandbox Code Playgroud)
这是我的活动:
public class MainActivity extends ActionBarActivity implements …Run Code Online (Sandbox Code Playgroud)