2,550
社区成员




我需要通过ffmpeg的api读本地mp4文件(需要循环读,读完这个视频,重新打开这个视频在读),推送到rtmp服务器,主要是保证rtmp的服务器的流不能断。
目前主要的问题是,第一个视频文件Mp4读的Pts,dts正常后,读第二个mp4文件,在推送到rtmp,就会报dts时间错误。
因为你没有给出你的具体指令,不知道你是怎么具体处理的。
不过需要循环把一个文件推流,应该加上 -stream_loop -1
参数的指定(这里是无限循环),如果需要指定具体次数,把-1改成实际数字即可。
要将本地的MP4文件转换为RTMP流,可以使用FFmpeg命令行工具。下面是一个示例命令来实现这个转换过程:
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -c:a aac -f flv rtmp://your-rtmp-server-url/your-stream-key
说明:
-re 选项用于告诉FFmpeg以输入文件的速度进行处理,以避免太快或太慢地将媒体发送到RTMP服务器。
-i input.mp4 指定输入的MP4文件路径和文件名。
-c:v libx264 指定视频编解码器,这里使用了H.264编码器。
-preset veryfast 指定视频编码速度,可以根据需要选择不同的预设。
-c:a aac 指定音频编解码器,这里使用了AAC编码器。
-f flv 指定输出格式为FLV。
rtmp://your-rtmp-server-url/your-stream-key 是目标RTMP服务器的URL和流键。
请将 input.mp4 替换为您的本地MP4文件的路径和文件名,并将 rtmp://your-rtmp-server-url/your-stream-key 替换为您的目标RTMP服务器的URL和流键。
执行该命令后,FFmpeg将读取输入的MP4文件并转换为实时流,然后将其发送到指定的RTMP服务器。
jias