Android 上的 ffmpeg 播放

发布于 2024-12-12 21:00:12 字数 322 浏览 4 评论 0原文

我成功地为 Android 编译了 ffmpeg 库,并且能够将它们加载到我的 jni Android 应用程序中。现在开始调用 ffmpeg 函数并按照在线教程进行操作。我在那里读到,我还需要 Android 的 SDL 端口才能渲染音频/视频。

我看过 libsdl ,它在 Android 上使用似乎相当复杂,特别是因为我只需要顺序渲染音频/视频媒体样本,是否有一些更简单的解决方案(带有示例)如何渲染解码的缓冲区?我应该将解码后的媒体缓冲区从 frrmpeg 传递回 java 进行渲染吗?

如果我必须使用 SDL,是否有一些教程如何在 Android 上轻松地将其与 ffmpeg 集成?

I managed to compile ffmpeg libs for Android and i am able to load them in my jni Android app. Now started calling the ffmpeg functions and following the online tutorials. I read there that I need also SDL port for Android in order to render audio/video.

I have looked at libsdl and it seems quite complex to use on Android, especially since I just need sequential render of audio/video media samples, is there some simpler solution (with examples) how to render the decoded buffers? Should I pass decoded media buffers from frrmpeg back to java for rendering?

If I have to use SDL, is there some tutorial how to easy integrate it on Android with ffmpeg?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

为你拒绝所有暧昧 2024-12-19 21:00:12

有一些建议:

ffmpeg解码视频pix_fmt是yuv420p,
您需要将其转换为 BGR32 或 RGB565。
如果您计划使用 Bitmap 和 SurfaceView 来渲染视频帧。

如果你的设备是Android 2.2+,有c函数可以将位图数据复制到位图。
通过使用 AndroidBitmap_lockPixels 和 AndroidBitmap_unlockPixels 获取指针。

如果您的设备不支持这种方式,
您可以将二进制数据放入 ByteBuffer 并使用 Bitmap.copyPixelsFromBuffer()。

如果你的 SurfaceView 会缩放得更大,你应该处理反锯齿问题:

你可以吗?如何在android中为SurfaceView消除锯齿?

如果OpenGL是首选解决方案,
GLThread可能会消耗更多的CPU时间,使用Draw on dirty效果更好。

这个话题太有趣了。 :)

There are some suggestions:

The ffmpeg decodes video pix_fmt is yuv420p,
you need to convert it to BGR32 or RGB565.
If you plan use the Bitmap and SurfaceView to render video frame.

If your devices Android 2.2+, there are c functions to copy bitmap data to Bitmap.
By geting the pointer using AndroidBitmap_lockPixels and AndroidBitmap_unlockPixels.

If your devices don't support that way,
you can put binary data to ByteBuffer and use Bitmap.copyPixelsFromBuffer().

If your SurfaceView will scale larger, you should handle anti-alias problem:

Can u ? How to anti alias for SurfaceView in android?

If OpenGL is the prefered solution,
GLThread may consume more cpu time, use draw on dirty is better.

The topic is so interesting. :)

墨小墨 2024-12-19 21:00:12

我认为海豚播放器 (http://code.google.com/p/dolphin-player/ ) 对于 android 使用 libSDL

I think dolphin-player (http://code.google.com/p/dolphin-player/) for android used libSDL

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文