嘿,我一直在寻找一个好的MP3或OGG解码器,它使用BSD许可证或公共域,并且重量轻(无需平台特定配置即可获得源代码).
Android SDK/NDK中是否提供了任何过程/ API来检查基础Android手机中是否存在"JPEG HW Decoder"?
如果是,那么
Android SDK/NDK中是否提供了访问"JPEG HW Decoder"以解压缩JPEG图像的过程/ API?
(我猜PV Media框架提供相同的访问权限,但我不确定)
我计划使用JPEG硬件解码器解压缩jpeg图像以实现性能.请评论!
谢谢,罗德尼
我搜索了高低,找不到任何体面的MP3解码器= /
我需要一个可以在gcc/linux下编译的程序.
我能找到的最接近的东西是libmad,它根本没有文档,我能找到的唯一例子是它们主页上的那个,这真的很复杂.
有谁知道我在哪里找到一个?
出于研究目的,我试图在解码过程中在运动补偿之前修改每个P帧和B帧的H.264运动矢量(MV).我正在为此目的使用FFmpeg.修改的示例是用其原始空间邻居替换每个MV,然后使用结果MV进行运动补偿,而不是原始MV.请指点我.
到目前为止,我已经能够在文件/libavcodec/h264_cavlc.c中对MV进行简单的修改.在函数ff_h264_decode_mb_cavlc()中,修改mx和my变量,例如,通过增加它们的值来修改解码期间使用的MV.
例如,如下所示,mx和my值增加50,从而延长了解码器中使用的MV.
mx += get_se_golomb(&s->gb)+50;
my += get_se_golomb(&s->gb)+50;
Run Code Online (Sandbox Code Playgroud)
但是,在这方面,我不知道如何访问mx的邻居和我的第一段中提到的空间均值分析.我相信这样做的关键在于操纵数组mv_cache.
我执行的另一个实验是在文件libavcodec/error_resilience.c中.基于guess_mv()函数,我创建了一个新函数mean_mv(),它在第一个if语句中的ff_er_frame_end()中执行.如果其中一个条件是零错误计数(s-> error_count == 0),则第一个if语句退出函数ff_er_frame_end().但是,我决定在此时插入我的mean_mv()函数,以便在错误计数为零时始终执行.这个实验有点产生了我想要的结果,因为我可以开始在视频的顶部看到瑕疵,但它们仅限于右上角.我猜我的插入功能没有完成,以满足播放截止日期等.
下面是修改后的if语句.唯一的补充是我的函数mean_mv(s).
if(!s->error_recognition || s->error_count==0 || s->avctx->lowres ||
s->avctx->hwaccel ||
s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU ||
s->picture_structure != PICT_FRAME || // we dont support ER of field pictures yet, though it should not crash if enabled
s->error_count==3*s->mb_width*(s->avctx->skip_top + s->avctx->skip_bottom)) …Run Code Online (Sandbox Code Playgroud) 我被要求在android中显示视频流(流不是来自HTTP),流是原始的H.264,它是在PC中记录和编码的,我通过WIFI得到它.
当我得到流时,可以使用MediaCodec解码器解码流并显示它吗?
我将代码 avcodec_decode_audio3 更改为 avcodec_decode_audio4 并添加了帧处理。但现在我不能再解码 AAC 帧了。
为什么 avcodec_decode_audio4 返回-22(无效参数)?按照下面的回答,这和AVContext中需要设置的参数有关系吗?
我不得不使用 avcodec_decode_audio4 因为我更新了我的 ffmpeg 然后出现以下错误:
[NULL @ 0xb14f020] Custom get_buffer() for use withavcodec_decode_audio3() detected.
Overriding with avcodec_default_get_buffer
[NULL @ 0xb14f020] Please port your application to avcodec_decode_audio4()
Run Code Online (Sandbox Code Playgroud)
根据avcodec_decode_audio4() 中的缓冲区错误,这是一个回归,除了回到 ffmpeg < 0.8 之外,还有其他解决方案吗?
使用 avcodec_decode_audio4 的解码器:
AVCodec *codec;
AVCodecContext *avCtx;
AVFrame * decoded_frame = NULL;
uint8_t *outbuf = static_cast<uint8_t *>(malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE));
AVPacket avPacket;
main(){
av_register_all();
codec = avcodec_find_decoder(CODEC_ID_AAC);
//set parameters
avCtx = avcodec_alloc_context3(codec);
avCtx->channels = 1; …Run Code Online (Sandbox Code Playgroud) 我的任务是为基于Web的应用程序添加pdf417(驾驶执照)解码/阅读.
输入:驾驶执照的图像.(400-600 dpi)
处理:检测/解析pdf417数据.
输出:解析pdf417数据.
限制:它是一个基于网络的应用程序运行:IE,Chrome,Safari.我无法在本地计算机上安装任何东西.
所以我现在已经调查了几天,我还没有想出一个很好的方法来完成这项工作.理想情况下,整个解码将使用Javascript/Jquery在客户端计算机上进行.但是我发现没有可以执行此操作的脚本/库.我发现的唯一其他选项可能是java servlet或php扩展; 这两个都不理想,因为上传时间会让我超过我的时间分配.
有谁知道任何可以处理这个的javascript或JQuery库?
或者也许是一种更好的方法来合并我没有看到的这个功能?
我正在使用 MediaCodec 解码从 RTSP 实时流接收的 H.264 视频 @ 30FPS,解码器在 Android 设备上运行。
但是,我在 MediaCodec 解码器的输出中看到了延迟。看起来解码器在提供解码帧之前一直等到它接收到大约 15 帧,从而导致渲染视频的延迟约为 500 毫秒。我的项目不接受延迟,因为用户希望在到达他的设备时立即看到实时视频。
有没有办法配置 MediaCodec,这样它就不会缓冲传入的帧并在它们准备好显示时立即输出解码的帧?
谢谢您的帮助。
我相信我在 JSONDecoder 中发现了一个错误。如果尝试解码具有 8 个以上属性的 JSON 对象,我会收到一个无法识别的错误:
错误:执行被中断,原因:EXCBADACCESS(代码=1,地址=0xe8)。进程一直停留在被中断的地方,使用“线程返回-x”返回到表达式求值前的状态。
每当我执行类似于以下的代码时,就会发生此错误:
struct Objects: Codable {
var NAME1: String?
var NAME2: String?
var NAME3: String?
var NAME4: String?
var NAME5: String?
var NAME6: String?
var NAME7: String?
var NAME8: String?
var NAME9: String?
}
let NEWDATA = """
[
{
"NAME1": "hi",
"NAME2": "hi",
"NAME3": "hi",
"NAME4": "hi",
"NAME5": "hi",
"NAME6": "hi",
"NAME7": "hi",
"NAME8": "hi",
"NAME9": "HELLO"
}
]
""".data(using: .utf8)!
let decoder2 = JSONDecoder()
let product2 = try decoder2.decode([Objects].self, from: NEWDATA) …Run Code Online (Sandbox Code Playgroud) 当我尝试在手机中运行 flutter 代码时,它显示以下错误:
Error: 'DecoderCallback' isn't a type.
ImageStreamCompleter load(AdvancedNetworkImage key, DecoderCallback decode) {
Run Code Online (Sandbox Code Playgroud)
这是我的 pubspec.yaml 文件:
name:
description: A new Flutter project.
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: "none" # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated …Run Code Online (Sandbox Code Playgroud)