小编Bas*_*022的帖子

使用没有MediaExtractor的MediaCodec解码mp4/h.264,预期的访问单元格式

我试图使用MediaCodec API进行解码,而不使用MediaExtractor API.相反,我使用mp4parser从mp4文件中获取样本.目前,我只使用h.264/avc编码的视频内容.

MediaCodec API的官方文档指出:

缓冲区不会在任意字节边界上开始和结束,这不是字节流,而是访问单元流.

意思是,我必须将访问单元提供给解码器.但是,我想念这些信息中的一些细节:

对于h.264,在mp4样本中,可以有多个NAL单元,每个单元前面有4个(默认)字节,指定NAL单元长度.

现在我的问题:

  1. 可以有mp4样本,其中编解码器配置NAL单元(sps,pps)与包含编码(部分)帧的NAL单元混合.在那种情况下,我应该BUFFER_FLAG_CODEC_CONFIG在通话时通过旗帜queueInputBuffers()吗?

  2. mp4样本中还可以有其他(附加)NAL单元,如SEI或访问单元定界符NAL单元.那些呢?没问题?

我尝试了不同的可能性,但我从Android获得的所有反馈都是dequeueOutputBuffer()超时调用(或者如果我-1作为超时参数传递则不返回).因此,我似乎无法解决此问题.

任何建议做什么或在哪里看也是非常受欢迎的.

mp4 android h.264 mediacodec

7
推荐指数
1
解决办法
3854
查看次数

在 Java 中解析一个字符串中连接的所有 json

我有许多 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的数组?

我在JavaScriptPython 中发现了具有相同目标的问题,建议使用 split by}{或 regex 将其重新格式化为 json 数组,但我仍然希望有一个更优雅的解决方案。

java json jackson

3
推荐指数
1
解决办法
641
查看次数

如何使ffmpeg将其输出写入命名管道

我知道我可以ffmpeg把它的输出stdoutstderr使用pipe:1,并pipe:2分别作为output_file参数.(文件)

但是命名管道呢,我可以写一个吗?

如果没有,有没有办法将数据重定向stdout到Linux中的命名管道?(像ffmpeg <parameters> | pipe123)

这个问题是这个问题的后续问题.

linux ffmpeg pipe

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×1

ffmpeg ×1

h.264 ×1

jackson ×1

java ×1

json ×1

linux ×1

mediacodec ×1

mp4 ×1

pipe ×1