我设法为Android编译ffmpeg libs,我可以在我的jni Android应用程序中加载它们。现在开始调用ffmpeg函数并遵循在线教程。我在那里读到我需要Android的SDL端口才能呈现音频/视频。
我看过libsdl并且在Android上使用它似乎相当复杂,特别是因为我只需要连续渲染音频/视频媒体样本,是否有一些更简单的解决方案(带有示例)如何渲染解码缓冲区?我应该将已解码的媒体缓冲区从frrmpeg传递回java进行渲染吗?
如果我必须使用SDL,是否有一些教程如何使用ffmpeg在Android上轻松集成它?
答案 0 :(得分:1)
有一些建议:
ffmpeg解码视频pix_fmt是yuv420p, 你需要将它转换为BGR32或RGB565。 如果您计划使用Bitmap和SurfaceView渲染视频帧。
如果您的设备是Android 2.2+,则有c函数可将位图数据复制到Bitmap。 通过使用AndroidBitmap_lockPixels和AndroidBitmap_unlockPixels来设置指针。
如果您的设备不支持这种方式, 你可以把二进制数据放到ByteBuffer并使用Bitmap.copyPixelsFromBuffer()。
如果您的SurfaceView会扩展得更大,则应该处理反别名问题:
Can u ? How to anti alias for SurfaceView in android?
如果OpenGL是首选解决方案, GLThread可能会消耗更多的cpu时间,使用draw on dirty更好。
主题非常有趣。 :)
答案 1 :(得分:0)
我认为android的dolphin-player(http://code.google.com/p/dolphin-player/)使用了libSDL