0

我有来自图像采集卡的 H264 数据。使用这些数据,我已经编写了一个 RTP/H264 流媒体服务器(使用 live555)和一个 RTP/H264 客户端(使用 ffmpeg 和 live555)。

我想向我的服务器添加一个新功能:以任何格式(avi、mp4、mkv 等)将编码的 H264 数据直接保存到文件(无需转码),以便以后使用 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()) 保存数据包?

?

谢谢大家

4

2 回答 2

1

我做了类似的;使用 ffmpeg 进行编码。我发现 ffmpeg remuxing example 1它对我有用。(现在回答为时已晚,但我希望它对其他人有所帮助。)

于 2017-06-21T09:59:42.270 回答
-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 );
于 2012-10-11T13:37:59.760 回答