Android MediaRecorder 生成视频切割并转换为FLV的问题

firefox1991 2013-02-19 10:48:44
我现在将Android的视频通过localSocket接收并进行切割成10s一个的小文件。然后上传(264编码),再通过ffmpeg合成小的flv。之前设备有IDR帧。但是现在设备只有关键帧(通过slice Type判断的)除了第一帧意外没有其他IDR帧。如何破。。
...全文
245 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
akc_小艾 2013-07-04
  • 打赏
  • 举报
回复
楼主你的问题解决了吗?我想做一个android上录制中的视频的分段,就是像你差不多的,每隔10S就保存一小段,怎么做到啊?能否指点下?看到请加我QQ1006075116
firefox1991 2013-02-21
  • 打赏
  • 举报
回复
只能改转码了,大部分解决了。但是播放有卡顿。 ffmpeg -i 音频 -i 视频 -vcodec libx264 -acodec libfaac -ar44100 -输出 VLC警告信息如下: main warning: PTS is out of range (-32965), dropping buffer main warning: audio output out of sync, adjusting dates (65713 us) main warning: not synchronized (65714 us), resampling main warning: buffer too late (65017), up-sampling main debug: EOF reached 好像是时间戳的问题。ffmpeg还需要添加什么命令呢??
firefox1991 2013-02-20
  • 打赏
  • 举报
回复
求救。。。。
Torch009 2013-02-19
  • 打赏
  • 举报
回复
没看明白你想问啥
firefox1991 2013-02-19
  • 打赏
  • 举报
回复
引用 3 楼 dream238 的回复:
试试把第一个IDR的数据以及SPS,PPS保存下来,后面几段发送前先发送这个IDR的副本。 这样解码时应该可以利用这个IDR的数据信息,当然,造成的影响可能就是刚开始的视频画面可能会不正确。 可以这样试试。
试过了。这样的话Flash Player播放不正常。VLC播放正常。证明视频的I帧可以当作IDR帧。(视频经过ffmpeg进行转封装) 现在主要有两个疑虑: 1:Android的MedraRecorder通过LocalSocket出来的数据是没有加工过的(一些字段都是空的)。系统会在后期进行修改吧。是不是我们可以将I帧修改为IDR帧?现在能想到的就是更改NALU头,将0x41改为了0x65结果不可以。 2:我可否在FFmpeg转封装那里做些什么?
ArcRain 2013-02-19
  • 打赏
  • 举报
回复
试试把第一个IDR的数据以及SPS,PPS保存下来,后面几段发送前先发送这个IDR的副本。 这样解码时应该可以利用这个IDR的数据信息,当然,造成的影响可能就是刚开始的视频画面可能会不正确。 可以这样试试。
firefox1991 2013-02-19
  • 打赏
  • 举报
回复
引用 1 楼 jinghao666666 的回复:
没看明白你想问啥
我通过LocalSocket取得原始的视频数据,相对这段数据进行切割。 分成10s一个的小视频。通过Flash Player进行播放。原来设备。直接判断NALU是IDR进行切割就行了。但是现在这个设备只有第一帧是IDR(65的NALU)其他都只是普通的关键帧。切割上传ffmpeg转封装成flv以后第一个视频可以观看。后面视频不能正常观看。如何解决呢?

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧