我正在使用以下命令使用rtp和ffmpeg进行直播视频流:
ffmpeg -re -f v4l2 -framerate 30 -video_size 640x480 -i /dev/video0 -c:v libx265 -tune zerolatency -s 320x240 -preset ultrafast -pix_fmt yuv420p -r 10 -strict experimental -f rtp rtp://127.0.0.1:49170 > ffmpeg.sdp
生成的sdp文件为:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 56.36.100
m=video 49170 RTP/AVP 96
a=rtpmap:96 H265/9000
Vlc报错如下:
无法检测到“file:///home/username/ffmpeg.sdp”的格式。请查看日志获取详细信息。
终端报错如下:
[0xaf801010] ps demux error: cannot peek
[0xaf801010] mjpeg demux error: cannot peek
[0xaf801010] mpgv demux error: cannot peek
[0xaf801010] ps demux error: cannot peek
[0xb6d00618] main input error: no suitable demux module for `file/:///home/username/ffmpeg.sdp'
如果我在命令中只是将libx265改为libx264,H265改为H264,那么流媒体会正常运行。
然而,我需要使用H265进行流媒体传输。有什么建议吗?
RTP
传输的HEVC
显然已经在FFmpeg(https://ffmpeg.org/pipermail/ffmpeg-devel/2014-September/163213.html)和VLC(https://patches.videolan.org/patch/4313/)中添加。即使使用`ffplay`,也无法播放`ffmpeg`输出,因此可能存在某种退化。由于版本明显不是问题,因此我删除了我的答案。 - aergistalffplay
出现了错误:[hevc @ 0x7fe4f80049e0] Error parsing NAL unit #0. [hevc @ 0x7fe4f80049e0] PPS id out of range: 00KB sq= 0B f=0/0 [sdp @ 0x7fb1a40008c0] decoding for stream 0 failed [sdp @ 0x7fb1a40008c0] Could not find codec parameters for stream 0 (Video: hevc, none): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options ffmpeg.sdp: could not find codec parameters
。 - aergistal