2014-10-10 19 views
0

我有IP-凸輪MJPEG,我提出,它具有總共240個幀如何添加持續時間,以MJPEG或如何使MJPEG更快

編碼烴源是 ffmpeg.exe -framerate 25 -ic:\% 06d.jpg \ -s 1920×1080 -qscale 1 -vcodec MJPEG -R 25 C:\ result.mjpg -y

現在我想通過MJPEG播放器來播放result.mjpg我下面進行

my problem 
1. i can't get mjpeg's play time or duration time 

2. playing is slower then other movie player so i want to sync it and play more faster 

是ffprobe結果

Input #0, mjpeg, from 'result.mjpg': 
Duration: N/A, bitrate: N/A 
Stream #0:0: Video: mjpeg, yuvj444p(pc, bt470bg), 1920x1080, 25 tbr, 1200k tbn, 25 tbc 
下面

是結果添加-show_frame

[FRAME] 
media_type=video 
key_frame=1 
pkt_pts=720000 
pkt_pts_time=0.600000 
pkt_dts=720000 
pkt_dts_time=0.600000 
best_effort_timestamp=720000 
best_effort_timestamp_time=0.600000 
pkt_duration=48000 
pkt_duration_time=0.040000 
pkt_pos=4731406 
pkt_size=313289 
width=1920 
height=1080 
pix_fmt=yuvj444p 
sample_aspect_ratio=333:320 
pict_type=I 
coded_picture_number=0 
display_picture_number=0 
interlaced_frame=0 
top_field_first=0 
repeat_pict=0 
[/FRAME] 

ffprobe告訴我有時間:N/A,碼率:N/A

如何設置時間和比特率 沒有任何編碼選項我必須設置?

當我解碼MJPEG像下面

我不能讓時間只是0

AVFormatContext* pFC; 
int    ret; 

pFC = avformat_alloc_context(); 

ret = avformat_open_input(&pFC, filename, NULL, NULL); 
if (ret < 0) { 
    // fail . 
} 

ret = avformat_find_stream_info(pFC, NULL); 
if (ret < 0) { 
    // fail 
} 
printf("duration %ld", pFC->duration); <----- only 0 

回答

0

我改變選項fromn SWS_BICUBIC到SWS_FAST_BILINEAR 好像更快,我的問題2完成

static int sws_flags = SWS_BICUBIC; 
struct SwsContext *img_convert_ctx; 
img_convert_ctx = sws_getContext( pVCtx->width, 
            pVCtx->height, 
            pVCtx->pix_fmt, 
            pVCtx->width, 
            pVCtx->height, 
            PixelFormat::PIX_FMT_BGR24, 
            sws_flags, NULL, NULL, NULL) 


static int sws_flags = SWS_FAST_BILINEAR; 
struct SwsContext *img_convert_ctx; 
img_convert_ctx = sws_getContext( pVCtx->width, 
            pVCtx->height, 
            pVCtx->pix_fmt, 
            pVCtx->width, 
            pVCtx->height, 
            PixelFormat::PIX_FMT_BGR24, 
            sws_flags, NULL, NULL, NULL);