我正在尝试使用cvlc将实时rtsp流转码为mp4文件,但收到以下错误。 我有什么想法得到这个错误?
这是我使用的命令 -
cvlc -vvv rtsp://184.173.147.99:5555/mpeg2TransportStreamFromUDPSourceTest --sout '#transcode{vcodec=mp4v,acodec=none,vb=128,deinterlace}:file{dst=out.mp4}'
这是我得到的错误
[0x7f72400011b8] avcodec encoder debug: libavcodec already initialized
[mpeg4 @ 0x29ef5c0] timebase 333333/20000000 not supported by MPEG 4 standard, the maximum admitted value for the timebase denominator is 65535
[0x7f72400011b8] avcodec encoder error: cannot open encoder
[0x7f72400011b8] main encoder error: Streaming / Transcoding failed
[0x7f72400011b8] main encoder error: VLC could not open the encoder.
[0x7f72400011b8] main encoder debug: no encoder module matching "any" could be loaded
答案 0 :(得分:0)
错误告诉您时基存在问题。
如果您在ffmpeg用户列表中阅读此conversation,建议您定义正确的帧速率。
所以我的第一个猜测就是检查你的命令并引入一个选项来定义所需的帧率,因为自动分析的帧率不合适。
以下是使用--timecode-fps
的命令的更新版本:
cvlc -vvv rtsp://184.173.147.99:5555/mpeg2TransportStreamFromUDPSourceTest --sout '#transcode{vcodec=mp4v,acodec=none,vb=128,deinterlace}:file{dst=out.mp4}' --timecode-fps=24/1
以下是使用--sout-transcode-fps <float>
的命令的另一个更新版本:
cvlc -vvv rtsp://184.173.147.99:5555/mpeg2TransportStreamFromUDPSourceTest --sout '#transcode{vcodec=mp4v,fps=24/1,acodec=none,vb=128,deinterlace}:file{dst=out.mp4}'
尝试不同的帧率,例如:24 / 1,25 / 1,30000 / 1001,30 / 30,30.0,24.0,25.0
这是你命令的另一个更新版本,我的一些改编:
cvlc -vvv rtsp://184.173.147.99:5555/mpeg2TransportStreamFromUDPSourceTest --sout '#transcode{vcodec=mp4v,vb=128,fps=24/1,deinterlace,acodec=none}:std{mux=mp4,dst="out.mp4",access=file}'
希望这有帮助。