我是一名正在研究最终项目的学生。我们的项目专注于新型网络编码研究。现在我的任务是进行实时视频传输以测试网络编码。我学到了ffmepg和opencv的一些东西,并完成了一个c ++程序,它可以将视频分成帧并逐帧发送。但是,通过这种方式,传输数据(帧)大小远远大于原始视频文件大小。我的教授建议我尝试找到视频的关键帧和帧间差异(mjpeg格式),以便仅传输关键帧和帧间差异而不是所有具有大量冗余的帧,从而减少传输数据。我不知道如何在c ++和ffmpeg或opencv中这样做。任何人都可以提出任何建议吗? 对于我的旧程序,请参阅此处。 C++ Video streaming and transimisson
答案 0 :(得分:2)
我建议不要使用ffmpeg / libav *。我建议直接使用libx264。通过使用x264,您可以更好地控制NALU切片大小,并通过回调利用来降低编码器延迟。
答案 1 :(得分:0)
两个问题已经对你有所帮助:
你如何从c ++到ffmpeg接口? ffmpeg通常是指命令行工具,从c ++开始,你通常使用属于ffmpeg的各个库。您应该使用libavcodec对您的帧进行编码,并可能使用libavformat将它们打包成容器格式。
您使用哪种编解码器?