進過測試:
1.從檔案中輸入轉rtsp流,在一秒内完成。
in_filename = "D:\\音視訊編解碼知識\\媒體檔案\\VID.flv";//輸入URL(Input file URL)
out_filename = "rtsp://127.0.0.1/test.sdp";
av_register_all();
//Network
avformat_network_init();
if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0) ;
2.從記憶體中讀取視訊流,視訊流來着檔案。
flv檔案
測試結果:1秒内
//讀取本地檔案,模拟遠端視訊流
if (!feof(fp)) {
fread(buf, 1, 2048, fp);
return 2048;
}
PS儲存的檔案:
測試結果也在一秒以内
從上面的結果看出來,ffmpeg在輸入端讀取本地檔案的情況下,解碼效率還是非常高的,都在一秒内完成。進而可以看出,延時6秒的問題還在于視訊流延時的問題。
經過日志列印,最後确定avformat_find_stream_info函數處理非常慢,需要6秒時間。原因是閥值預設設定的太大了。
設定成這樣後,大概延時在2秒左右。