I am developing an audio player application using ffmpeg which will handle dynamic audio trac switching and mixing. I am able to successfully achieve track switching dynamically. But I am facing challenges in audio mixing.
I am using "amix" audio filters to mix multiple audio tracks. I am able to mix audio tracks successfully. But when I try to extract the timestamp (using av_frame_get_best_effort_timestamp) after audio mixing I am getting discontinuous audio timestamps. Please have a look at the below given log snapshots at different time intervals. Any help to pin-point the issue will be greatly appreciated. Thank you. Please let me know if you need further information.
Frame position calculation:
double realTime = av_frame_get_best_effort_timestamp(RawFrame) auto formatContext = m_FFMpegData->formatContext(); auto timeBase = formatContext->streams[streamId]->time_base; double framePosition = realTime * av_q2d(timeBase);
Graph:
Logs: ----------------------------- DEC -> Pos: "00:00:00:20" DEC -> Pos: "00:00:00:22" DEC -> Pos: "00:00:00:24" Issue in Audio Timestamp continuity DEC -> Pos: "00:00:00:22" DEC -> Pos: "00:00:00:23" DEC -> Pos: "00:00:00:24" ----------------------------- DEC -> Pos: "00:00:03:16" DEC -> Pos: "00:00:03:17" DEC -> Pos: "00:00:03:27" Issue in Audio Timestamp continuity DEC -> Pos: "00:00:03:18" DEC -> Pos: "00:00:03:19" DEC -> Pos: "00:00:03:20" ----------------------------- DEC -> Pos: "00:00:04:08" DEC -> Pos: "00:00:04:09" DEC -> Pos: "00:00:04:21" Issue in Audio Timestamp continuity DEC -> Pos: "00:00:04:10" DEC -> Pos: "00:00:04:10" DEC -> Pos: "00:00:04:11" ----------------------------- DEC -> Pos: "00:00:06:12" DEC -> Pos: "00:00:06:13" DEC -> Pos: "00:00:07:00" Issue in Audio Timestamp continuity DEC -> Pos: "00:00:06:14" DEC -> Pos: "00:00:06:15" DEC -> Pos: "00:00:06:15" ----------------------------- DEC -> Pos: "00:00:07:03" DEC -> Pos: "00:00:07:05" DEC -> Pos: "00:00:07:24" Issue in Audio Timestamp continuity DEC -> Pos: "00:00:07:05" DEC -> Pos: "00:00:07:06" DEC -> Pos: "00:00:07:07" ----------------------------- DEC -> Pos: "00:00:09:07" DEC -> Pos: "00:00:09:09" DEC -> Pos: "00:00:10:04" Issue in Audio Timestamp continuity DEC -> Pos: "00:00:09:10" DEC -> Pos: "00:00:09:10" DEC -> Pos: "00:00:09:11"