关于ffmpeg和opencore的学习

需要在android系统中支持RM视频格式的播放。

而且不是在应用层修改添加插件

而是需要修改android底层的代码

需要修改opencore中的东西(android2.2以前,android2.3后不再使用opencore)

我们需要将ffmpeg移植到android系统中

然后在opencore中添加一些相应的处理

首先我们必须在opencore/fileformates中

参照原有的模块编写一个rm的parser

在编写parser时可以调用ffmpeg中的一些函数

使编写变得简单一些

然后需要在nodes中编写rm的node

使判断好文件格式的基础上

实现文件的视频流和音频流的分割

接下来需要注册parser

最后就是对音频和视频进行解码

实现同步后就可以播放RM格式的视频了



这是一个艰难的学习过程

因为网上公开的资料很少

需要靠自己耐心的去摸索

一点点克服难题

慢慢的解决

好好学习吧


你可以使用 .NET Core 库来使用 FFmpeg。其中一个流行的库是 FFmpeg.AutoGen,它提供了一个 .NET Core 版本的 FFmpeg API。通过使用这个库,你可以在 C# 中使用 FFmpeg 的功能,例如音频和视频编解码、剪辑和过滤等等。 下面是一个使用 FFmpeg.AutoGen 库来提取视频帧的简单示例: ``` using FFmpeg.AutoGen; // 初始化 FFmpeg ffmpeg.av_register_all(); // 打开视频文件 AVFormatContext* formatContext = null; ffmpeg.avformat_open_input(&formatContext, "video.mp4", null, null); ffmpeg.avformat_find_stream_info(formatContext, null); // 找到视频流 AVCodec* codec = null; int videoStreamIndex = ffmpeg.av_find_best_stream(formatContext, AVMediaType.AVMEDIA_TYPE_VIDEO, -1, -1, &codec, 0); // 打开视频解码器 AVCodecContext* codecContext = ffmpeg.avcodec_alloc_context3(codec); ffmpeg.avcodec_parameters_to_context(codecContext, formatContext->streams[videoStreamIndex]->codecpar); ffmpeg.avcodec_open2(codecContext, codec, null); // 循环提取视频帧 AVPacket packet = default(AVPacket); ffmpeg.av_init_packet(&packet); AVFrame* frame = ffmpeg.av_frame_alloc(); while (ffmpeg.av_read_frame(formatContext, &packet) >= 0) { if (packet.stream_index == videoStreamIndex) { ffmpeg.avcodec_send_packet(codecContext, &packet); while (ffmpeg.avcodec_receive_frame(codecContext, frame) == 0) { // 处理视频帧 } } ffmpeg.av_packet_unref(&packet); } // 释放资源 ffmpeg.av_frame_free(&frame); ffmpeg.avcodec_close(codecContext); ffmpeg.avformat_close_input(&formatContext); ``` 这个示例演示了如何使用 FFmpeg.AutoGen 库来打开一个视频文件,找到视频流,打开视频解码器并循环提取视频帧。你可以根据你的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值