android无法解码avcmp4,android - Android中的MediaCodec编码的H.264 avc视频无法播放 - 堆栈内存溢出...

在尝试使用Android的MediaCodec类进行H.264 AVC视频编码时,作者遇到编码后的视频无法播放的问题。经过FFprobe检查,视频格式为h264,yuv420p,但详细机制不熟悉。代码示例展示了如何使用MediaCodec进行视频编码,包括初始化、编码和写入文件的过程。

背景:

我一直在努力实现像录像机这样的Vine两天。 首先,我尝试了MediaRecorder。 但我需要的视频可能是由小视频片段组成的。 此类不能用于录制短时视频剪辑。 然后我找到了MediaCodec,FFmpeg和JavaCV。 FFmpeg和JavaCV可以解决这个问题。 但我必须使用许多库文件编译我的项目。 它会生成一个非常大的APK文件。 所以我更喜欢通过MediaCodec实现它,尽管这个类只能在Android 4.1之后使用。 90%的用户会满意。

结果:

我终于得到了编码文件,但无法播放。 我通过FFprobe检查了信息,结果如下:

输入#0,h264,来自'test.mp4':持续时间:N / A,比特率:N / A流#0:0:视频:h264(基线),yuv420p,640x480,25 fps,25 tbr,1200k tbn, 50 tbc

我不太了解H.264编码的机制。

码:

从此链接修改

public class AvcEncoder {

private static String TAG = AvcEncoder.class.getSimpleName();

private MediaCodec mediaCodec;

private BufferedOutputStream outputStream;

private int mWidth, mHeight;

private byte[] mDestData;

public AvcEncoder(int w, int h) {

mWidth = w;

mHeight = h;

Log.d(TAG, "Thread Id: " + Thread.currentThread().getId());

File f = new File("/sdcard/videos/test.mp4");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值