我是一名学生,目前正在做我的期末课题。我们的项目致力于新型网络编码的研究。现在我的任务是做一个实时的视频传输来测试网络编码。我已经学到了一些关于ffmepg和opencv的知识,并且已经完成了一个c++程序,它可以将视频分割成帧并逐帧发送。然而,通过这种方式,传输数据(帧)的大小比原始视频文件的大小大得多。我的教授建议我尝试找到视频(mjpeg格式)的关键帧和帧间差异,以便只传输关键帧和帧间差异,而不是具有大量冗余的所有帧,从而减少传输数据。我不知道如何在c++和ffmpeg或opencv中做到这一点。有谁能给点建议吗?关于我的旧程序,请参考这里。C++ Video streaming and transimisson
发布于 2015-01-28 03:30:30
我建议不要使用ffmpeg/libav*。我建议直接使用libx264。通过使用x264,您可以更好地控制NALU片的大小,并通过利用回调来降低编码器延迟。
发布于 2015-01-28 00:10:31
以下两个问题可能会对你有所帮助:
你是如何实现从c++到ffmpeg的接口的?ffmpeg通常指的是命令行工具,在c++中,您通常使用作为ffmpeg的一部分的各个库。您应该使用libavcodec对帧进行编码,并可能使用libavformat将它们打包为容器格式。
你用的是哪种编解码器?
https://stackoverflow.com/questions/28173970
复制相似问题