我正在开发一个实时生成 .ts 视频文件的项目,我需要将这些文件流式传输到 RTMP 服务器而不预先连接它们。最初,我尝试使用命名管道和 FFmpeg 来促进流式传输,如下所示:
mkfifo video.pipe
ffmpeg -re -i video.pipe -c:v libx264 -b:v 6000K -maxrate 6000K
-bufsize 6000K -pix_fmt yuv420p -s 1920x1080 -profile:v main -preset veryfast -force_key_frames "expr:gte(t,n_forced*2)" -x264opts "nal-hrd=cbr:no-scenecut" -acodec aac -ab 160k -ar 44100 -f flv rtmps://<rtmp_server>
为了模拟实时文件创建,我将文件流式传输到单独的终端窗口中的命名管道中:
cat video1.ts > video.pipe & cat video2.ts > video.pipe &
然而,这种做法却导致了腐败现象的出现。
frame= 1752 fps= 30 q=27.0 size= 24207kB time=00:00:32.32 bitrate=6144.8kbits/s speed=0.998x
[aac @ 0x152687100] Queue input is backward in time
[flv @ 0x15262ed40] Non-monotonic DTS in output stream 0:1; previous: 32368,
我该如何完成这项任务?任何帮助都非常感谢!