上篇使用pipe播放流后,观看的同时,如需保存成文件,使用ffmpeg也是很方便的.
既然已经是标准H264了,那就不需要再编码,直接copy流再muxer
1 2 3 4 5 |
_______ ______________ ________ | | | | | | | input | demuxer | encoded data | muxer | output | | file | ---------> | packets | -------> | file | |_______| |______________| |________| |
代码原型请看这个这个回复,不过他的代码中,视频输出流的AVCodecContext
1 2 |
AVCodecContext *c; c = o_video_stream->codec; |
缺少了extradata,造成生成的MP4文件avcC没有SPS PPS信息而无法播放
添加如下代码
1 2 |
c->extradata = i_video_stream->codec->extradata; c->extradata_size = i_video_stream->codec->extradata_size; |
另外不需要两次打开输入流,完全是可以在播放开始后任意时间来控制开始保存文件.
使用mp4封装,在Android IOS上均可调用系统自带播放器播放
原创文章,转载请注明: 转载自贝壳博客
本文链接地址: FFmpeg取回标准H.264流后播放的同时存为MP4文件
还是不知道怎么把h264转换成 MP4啊?
好像没写清楚
还是不明白,怎么办
统一回一下,我这里没有写完,只是补充了这个stackoverflow提问代码里确实的部分,补充完就行,但请你们点进这个链接
http://stackoverflow.com/questions/16282600/how-to-use-libavformat-to-concat-2-video-files-with-same-codec-re-muxing
你好,任意时间保存文件,那个PTS跟DTS怎么计算呢?
你好,h264然后封装。
没看懂啊。博主,怎么才能不打开两次流录制mp4啊,我现在只能打开两次啊