我试图使用MediaCodec API进行解码,而不使用MediaExtractor API.相反,我使用mp4parser从mp4文件中获取样本.目前,我只使用h.264/avc编码的视频内容.
MediaCodec API的官方文档指出:
缓冲区不会在任意字节边界上开始和结束,这不是字节流,而是访问单元流.
意思是,我必须将访问单元提供给解码器.但是,我想念这些信息中的一些细节:
对于h.264,在mp4样本中,可以有多个NAL单元,每个单元前面有4个(默认)字节,指定NAL单元长度.
现在我的问题:
可以有mp4样本,其中编解码器配置NAL单元(sps,pps)与包含编码(部分)帧的NAL单元混合.在那种情况下,我应该BUFFER_FLAG_CODEC_CONFIG在通话时通过旗帜queueInputBuffers()吗?
mp4样本中还可以有其他(附加)NAL单元,如SEI或访问单元定界符NAL单元.那些呢?没问题?
我尝试了不同的可能性,但我从Android获得的所有反馈都是dequeueOutputBuffer()超时调用(或者如果我-1作为超时参数传递则不返回).因此,我似乎无法解决此问题.
任何建议做什么或在哪里看也是非常受欢迎的.
我有许多 json 对象连接成一个字符串,并且需要解析所有这些对象。简单的例子:
String jsonStr = "{"name":"peter","age":40}{"name":"laura","age":50}"
Run Code Online (Sandbox Code Playgroud)
当使用ObjectMapperjackson 解析这个时,它会正确地找到并读取第一个 json,并删除字符串的其余部分。
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonStr);
System.out.println(rootNode);
Run Code Online (Sandbox Code Playgroud)
给出输出 {"name":"peter","age":20}
有没有办法(在杰克逊或其他框架中)例如返回读取字符的数量,或字符串的其余部分,或JsonNodes的数组?
我在JavaScript和Python 中发现了具有相同目标的问题,建议使用 split by}{或 regex 将其重新格式化为 json 数组,但我仍然希望有一个更优雅的解决方案。