当我尝试使用ffmpeg传输m3u8或.ts文件时,我遇到了一个奇怪的错误。
当我在ffmpeg中传输此行时:
C:/ffmpeg/bin/ffmpeg.exe -i "http://myurl.com/myfile.ts" -vcodec libx264 -preset veryfast -vprofile main -vb 1000k -s 720x400 -aspect 16:9 -acodec libvo_aacenc -ab 64k -ar 48000 -ac 2 -r 30 -f flv "rtmp://myurl.com/mystream"
当我运行此命令时,帧率不是30fps,而是在100 fps以上获得很多次。
喜欢这个
frame= 107 fps=0.0 q=31.0 size= 469kB time=00:00:04.40 bitrate= 871.6kbits/<br>
frame= 186 fps=163 q=30.0 size= 873kB time=00:00:07.54 bitrate= 948.5kbits/<br>
frame= 246 fps=149 q=31.0 size= 1225kB time=00:00:09.97 bitrate=1006.1kbits/<br>
frame= 327 fps=152 q=31.0 size= 1647kB time=00:00:13.23 bitrate=1019.2kbits/<br>
frame= 425 fps=160 q=28.0 size= 1938kB time=00:00:17.07 bitrate= 929.5kbits/<br>
frame= 476 fps=151 q=28.0 size= 2261kB time=00:00:19.16 bitrate= 966.4kbits/<br>
frame= 527 fps=144 q=29.0 size= 2623kB time=00:00:21.21 bitrate=1012.9kbits/<br>
frame= 618 fps=148 q=28.0 size= 2989kB time=00:00:24.86 bitrate= 984.7kbits/<br>
frame= 688 fps=147 q=27.0 size= 3308kB time=00:00:27.63 bitrate= 980.6kbits/<br>
frame= 739 fps=143 q=29.0 size= 3726kB time=00:00:29.70 bitrate=1027.5kbits/<br>
frame= 770 fps= 49 q=30.0 size= 3974kB time=00:00:31.00 bitrate=1050.0kbits/<br>
frame= 849 fps= 53 q=30.0 size= 4464kB time=00:00:34.14 bitrate=1071.0kbits/<br>
frame= 944 fps= 57 q=29.0 size= 4834kB time=00:00:37.98 bitrate=1042.5kbits/<br>
frame= 1037 fps= 61 q=29.0 size= 5252kB time=00:00:41.56 bitrate=1035.0kbits/<br>
frame= 1104 fps= 63 q=29.0 size= 5689kB time=00:00:44.25 bitrate=1053.1kbits/<br>
frame= 1192 fps= 66 q=30.0 size= 6186kB time=00:00:47.81 bitrate=1059.8kbits/<br>
有人可以帮我解决这个错误。现在输出真的很糟糕。
提前致谢。
答案 0 :(得分:2)
它编码了多少fps
,而不是输出的帧速率。您的输出是乱码,因为您以最大速度泵送它。
对非实时输入流使用-re
选项以本机帧速率读取并实时输出:
C:/ffmpeg/bin/ffmpeg.exe -re -i "http://myurl.com/myfile.ts" ...
-re(输入)
以原生帧速率读取输入。主要用于模拟抓取装置。或实时输入流(例如,从文件中读取时)。 不应与实际抓取设备或实时输入流一起使用 (它可能导致数据包丢失)。默认情况下,ffmpeg尝试读取 输入尽可能快。这个选项会减慢速度 将输入读取到输入的本机帧速率。它 对于实时输出(例如直播)非常有用。