使用Java中的编码帧创建视频
我在Android(Java)中有一个应用程序,它对来自照相机的帧进行编码 每个帧都是一个字节数组,捕获后用API MediaCodec编码 如果我直接在视频文件上写入帧,我可以用ffplay打开它(不能用另一个视频播放器作为VLC),但它会显示例如:使用Java中的编码帧创建视频,java,android,video,frames,Java,Android,Video,Frames,我在Android(Java)中有一个应用程序,它对来自照相机的帧进行编码 每个帧都是一个字节数组,捕获后用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 1
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)实现的,因此我想知道如何添加元数据,使视频播放器能够识别我的视频。它不是avi容器,只是h264流。尝试重命名为“*.h264”并使用某些播放器(vlc、mplayer)播放。MediaCodec的输出是原始H.264流。从Android 4.3(API 18)开始,您可以通过类运行该流,将其转换为.mp4文件 一个相关的项目,可能是有趣的,是现在您可以将相机的曲面预览提供给
MediaCodec
,而不是通过ByteBuffer传递YUV数据。这种方法需要较少的数据复制,并且不需要颜色平面交换
请参阅CameraToMpegTest示例。ffplay是否显示视频?。。您确定正确写入了缓冲区吗?能否提供将缓冲区写入文件的方式的来源?。。