我按如下方式调用ndk-stack:
cat file_temp | ~/workspace/android-ndk-r6b/ndk-stack -sym /home/xyz/trunk/apk/obj/local/armeabi/
Run Code Online (Sandbox Code Playgroud)
它找到了崩溃指纹,但未能显示堆栈分析.打印错误是:
ndk-stack: elff/elf_file.cc:102: static ElfFile* ElfFile::Create(const char*): Assertion `read_bytes != -1 && read_bytes == sizeof(header)' failed. Stack frame #00 pc 43121300 Aborted
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢.
想象一下,我从实时对话中获得了H.264 AnxB帧.封装在MPEG2传输流中的最佳方法是什么,同时保持后续播放的时序信息?
我正在使用libavcodec和libavformat库.当我获得AVCodecContext类型的对象(*pcc)的指针时,我设置了foll.
pcc->codec_id = CODEC_ID_H264;
pcc->bit_rate = br;
pcc->width = 640;
pcc->height = 480;
pcc->time_base.num = 1;
pcc->time_base.den = fps;
Run Code Online (Sandbox Code Playgroud)
当我收到NAL单元时,我创建一个AVPacket并调用av_interleaved_write_frame().
AVPacket pkt;
av_init_packet( &pkt );
pkt.flags |= AV_PKT_FLAG_KEY;
pkt.stream_index = pst->index;
pkt.data = (uint8_t*)p_NALunit;
pkt.size = len;
pkt.dts = AV_NOPTS_VALUE;
pkt.pts = AV_NOPTS_VALUE;
av_interleaved_write_frame( fc, &pkt );
Run Code Online (Sandbox Code Playgroud)
我基本上有两个问题:
1)对于可变帧率,有没有办法不指定foll.pcc-> time_base.num = 1; pcc-> time_base.den = fps; 并用一些东西替换它来表示可变帧速率?
2)在提交数据包时,我应该将什么"时间戳"分配给pkt.dts和pkt.pts?
现在,当我使用ffplay播放输出时,它以恒定帧速率(fps)播放,我在上面的代码中使用它.
我也很想知道如何适应不同的空间分辨率.在我收到的流中,每个关键帧都以SPS和PPS开头.我知道每当空间分辨率发生变化时.有没有办法不必指定pcc-> width = 640; pcc-> height = 480; 前期?换句话说,表明空间分辨率可以在中游改变.
非常感谢,艾迪