音频视频与Libav编码器同步

时间:2014-01-17 05:51:35

标签: java encoding video-encoding libav

我正在尝试使用以下命令中的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();
}}

请提供相关建议。

1 个答案:

答案 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");