2

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:

Amix filter 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"
    
Raju
  • 403
  • 1
  • 6
  • 19
  • I debugged it further and found that I am getting invalid PTS value (0) for the frame I am getting from filter API **av_buffersink_get_frame()**. – Raju Apr 25 '16 at 12:06

0 Answers0