【发布时间】:2018-06-25 08:52:10
【问题描述】:
我正在研究使用 FFmpeg 将应用程序生成的输出流式传输到同一网络中的另一个系统。但是,我发现命令列表有点令人生畏且难以理解。所以我希望我能在这件事上寻求你的帮助。
我目前的用例: 我有一个 Unity 应用程序,它有一个单独的视频输出流,并且使用插件我可以将该输出保存到视频文件中。用于将其保存到文件的命令是:
ffmpeg -y -f rawvideo -vcodec rawvideo -pixel_format rgba -colorspace bt709 -video_size 1280x720 -framerate 30 -loglevel warning -i - -pix_fmt yuv444p -preset ultrafast -crf 0 test.mp4
输出格式等已经正确,但我现在想直接通过网络流式传输此输出,最好使用 RTSP。使用下面的命令,我将末尾的 test.mp4 替换为 udp://127.0.0.1:23000 以测试通过 UDP 进行的流式传输,但这会在 Unity 中返回 IOException。
非常感谢任何能指导我正确方向的帮助。 提前致谢!
【问题讨论】:
-
通过网络流式传输原始文件绝不是一个好主意,我猜当您使用 mp4 文件时,ffmpeg 可能会对输出进行编码,如果是 UDP(或 rtp 或 rtps),您应该明确告诉 ffmpeg在输出之前对流进行编码。对于流媒体,大部分 yuv420 用作像素格式,大多数编解码器都期望这种格式(如 mpeg2、mpeg4 avc。)
-
@thekamilz 感谢您的评论。输入是原始视频,我相信给出的参数与输入有关。但是您是说定义编码和格式的输出缺少其他参数吗?我知道通过网络发送原始视频并不理想,因此当然欢迎进行额外的优化。
标签: video ffmpeg video-streaming live-streaming