我正在尝试使用以下命令中的avconv工具通过Libav库编码器对实时rtmp流进行编码 -
avconv -timelimit 4000 -i rtmp://IP/live/file-name -shortest -s 176*144 -r 10 \
-b:v 56k -ab 12k -ac 1 -ar 22050 -f flv rtmp://IP/live/file-name_56
但音频与输出流中的视频不同步,视频滞后,因为其比特率已改为56 kbps。但音频比特率不会改变&当前的音频是可听见的。
我正在通过Java中的运行时环境播放它,并在10分钟后停止播放1小时视频。当我在java中运行线程以运行avconv命令时,会出现此问题,如下所示
public void run() {
try{
Thread.sleep(500);
Process pr= Runtime.getRuntime().exec("avconv -timelimit 4000 -i rtmp://IP/live/file-name -shortest -s 176*144 -r 10 -b:v 56k -ab 12k -ac 1 -ar 22050 -f flv rtmp://IP/live/file-name_56");
pr.waitFor();
}}
请提供相关建议。
答案 0 :(得分:0)
通过
实现音频同步-async samples_per_second
音频同步方法。 “拉伸/挤压”音频流以匹配时间戳,参数是音频更改的每秒最大采样数。 -async 1是一种特殊情况,其中仅校正音频流的开始而不进行任何后续校正。
Process pr= Runtime.getRuntime().exec("avconv -async 15 -timelimit 4000 -i rtmp://IP/live/file-name -shortest -s 176*144 -r 10 -b:v 56k -ab 12k -ac 1 -ar 22050 -f flv rtmp://IP/live/file-name_56");