繁体   English   中英

使用Java创建带有编码帧的视频

[英]Create video with encoded frames in Java

我在Android(Java)中有一个应用程序可以对来自Camera的帧进行编码。

每一帧都是一个字节数组,在捕获后,用API MediaCodec对其进行编码。

如果我直接将帧写在视频文件上,则可以使用ffplay(而不是将其他视频播放器作为VLC)打开它,但是它说:

Input #0, h263, from 'example.avi':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: h263, yuv420p, 640x480 [PAR 12:11 DAR 16:11], 25 fps, 25 tbr, 1200k tbn, 29.97 tbc
5.58 A-V:  0.000 s:0.0 aq=    0KB vq=    0KB sq=    0B f=0/0   0/0   

换句话说,它无法识别持续时间,也无法识别比特率。

我想我必须将元数据写入文件中,但是我不知道该怎么做。

正如我在帖子中所说的那样,该应用程序是使用Java(带有Android API)实现的,因此我想知道如何添加使视频播放器能够识别我的视频的元数据。

MediaCodec的输出是原始的H.264流。 从Android 4.3(API 18)开始,您可以通过MediaMuxer类运行该流,以将其转换为.mp4文件。

可能感兴趣的一个相关项目是,您现在可以将相机的Surface预览馈送到MediaCodec而不是通过ByteBuffer传递YUV数据。 这种方法需要较少的数据复制,并且不需要颜色平面交换。

请参阅此处的CameraToMpegTest示例。

它不是avi容器,而只是h264流。 尝试重命名为“ * .h264”并与某些播放器(vlc,mplayer)一起播放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM