ffplay能够播放媒体流
ffplay可以播放本地文件,这是大部分人都知道的; 但是ffplay还可以播放网络资源,比如RTSP,UDP流。
RTSP有它自己定义的格式,那么UDP有什么格式要求吗?
答案是没有,UDP包不需要设置任何的参数,或者说包含任何的头部,直接就是压缩后的每帧的数据。所以我们可以自己写一个程序,将视频帧的原始数据经过压缩,然后将压缩后的数据直接使用udp协议发送出去,然后使用ffplay接受此流,ffplay会自己检测流的格式,然后正确的解码出视频帧,然后播放出来。
比如使用udp的端口是8000,那么ffplay使用下面的命令来接受和播放这个流
$ ffplay udp://127.0.0.1:8000
如果自己写代码觉得麻烦,可以使用ffmpeg来生成udp流,当然也能生成RTSP流。
$ ffmpeg -r 25 -s 352×288 -i /dev/video0 -f h264 udp://127.0.0.1:8000
-r: 每秒表示多少帧
-s: 视频的长宽
-f: 输出的视频流,这里是h264, 也可以mpegts
ffplay解码流的关键是猜测输入流的媒体格式,如果尝试读取了5M的数据,还是不能猜出流的格式,那么会告诉你失败。如果猜测成功,则用这个格式来读取每一帧,然后解码和显示。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章转载自:IT夜班车,否则按侵权处理.