直到現在,我正在使用固定幀(編程)使用ffmpeg完成所有編碼。現在我需要支持可變幀頻。我剛剛開始評論我設置幀頻的代碼部分。 但它不工作。我的功能在avcodec_open2失敗。請有人建議我如何去支持可變幀頻。 另外我也知道不是所有編解碼器都支持可變的幀速率。所以當使用可變幀頻編碼時,通常使用哪些編解碼器。請建議。ffmpeg中的可變幀頻編碼
感謝 普拉迪普
直到現在,我正在使用固定幀(編程)使用ffmpeg完成所有編碼。現在我需要支持可變幀頻。我剛剛開始評論我設置幀頻的代碼部分。 但它不工作。我的功能在avcodec_open2失敗。請有人建議我如何去支持可變幀頻。 另外我也知道不是所有編解碼器都支持可變的幀速率。所以當使用可變幀頻編碼時,通常使用哪些編解碼器。請建議。ffmpeg中的可變幀頻編碼
感謝 普拉迪普
我知道後很老了,但是我希望能夠幫助有同樣的問題(我只是做了)一些人...
使用fps filter或framerate filter 。作爲一個ffpmeg n00b以及,100%的正確性不能保證,但至少這對我有效:
我創建了一個篩選器圖,就像在filtering_video.c示例中一樣。例如,對於filters
參數avfilter_graph_parse_ptr
,我指定fps=fps=30:round=near
。然後我喂幀到每當FilterGraph動態我得到了一些,計算PTS作爲
float fps = (float)(codecContext->time_base.num)/codecContext->time_base.den;
this->frame->pts = (__int64)((timestamp - timestamp0)/fps);
timestamp
其中是幀的時間,以秒和timestamp0
是被記錄在第一幀的時間。兩者都是浮點值,並且是我自定義的定時器的結果。當您使用提供時間戳的庫(如DirectShow)時,您當然應該使用這些。
你知道如何做到這一點嗎?我也對此感興趣。 @ praks411 – GangstaGraham