小编use*_*600的帖子

ndk-stack无法正常工作

我按如下方式调用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)

有任何想法吗?

谢谢.

java-native-interface android android-ndk

20
推荐指数
1
解决办法
3492
查看次数

封装H.264流可变帧速率在MPEG2传输流中

想象一下,我从实时对话中获得了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; 前期?换句话说,表明空间分辨率可以在中游改变.

非常感谢,艾迪

ffmpeg h.264 mpeg2-ts

5
推荐指数
1
解决办法
2708
查看次数