我有来自帧抓取器的H264数据。 使用这些数据,我已经编写了一个RTP / H264流媒体服务器(使用live555)和一个RTP / H264客户端(使用ffmpeg和live555)。
我想为我的服务器添加一项新功能:直接将编码的H264数据保存到文件(无转码),以任何格式(avi,mp4,mkv等),以便以后使用VLC观看视频。
对于显示客户端,基本上,我已执行:
1)使用ffmpeg / av_new_packet()
从H264数据构建数据包2)解码H264数据ffmpeg / avcodec_decode_video2()
3)使用ffmpeg / sws_scale()
格式化解码帧4)显示
有人可以快速通知我视频文件保存功能,而无需解码/转码数据并使用ffmpeg吗?
就足够了1)选择输出上下文(格式)
2)使用ffmpeg / av_new_packet()
从H264数据构建数据包3)使用ffmpeg / av_(interleaved)_write_frame()(以及av_write_trailer()和av_write_header())保存数据包?
谢谢大家
答案 0 :(得分:0)
答案 1 :(得分:-1)
请查看ffplay.c:
static int video_thread(void *arg)
{
...
ret = get_video_frame(is, frame, &pts_int, &pkt);
...
}
pkt是原始h264数据包。将pkt.data保存到文件即可。
fwrite(pkt.data, 1, pkt.size, pf );
如果此文件无法通过mplayer播放,请先添加:
unsigned char const start_code[4] = {0x00, 0x00, 0x00, 0x01};
fwrite(start_code, 4,1, pf );