A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://ffmpeg.org/pipermail/ffmpeg-devel/2007-January/027996.html below:

[Ffmpeg-devel] How to sync audi and video

[Ffmpeg-devel] How to sync audi and videoPaul Curtis pfc
Thu Jan 25 15:58:54 CET 2007
Paul wrote:
> i have audio frame(s) and video frame in every cycle , then i want to
> write these to "output_media.mpg" file.
>
> Final, if the thought as above cannot make synch, Can you show me any
> way to sync audio and video?

[cc'ing ffmpeg-dev, as that was the original source of the message]

To interleave between video and audio, I have done the following. Assume 
that you have an AVFormatContext for output and two AVStreams, one for 
video, and one for audio.

     for(;;) {
         /* compute current audio and video time */
         if (audio_steam)
             audio_pts = (double)audio_stream->pts.val * 
audio_stream->time_base.num / audio_stream->time_base.den;
         else
             audio_pts = 0.0;

         if (video_stream)
             video_pts = (double)video_stream->pts.val * 
video_stream->time_base.num / video_stream->time_base.den;
         else
             video_pts = 0.0;

         /* write interleaved audio and video frames */
         if (!video_stream || (video_stream && audio_stream && audio_pts 
< video_pts)) {
             avcodec_encode_audio(...);
             av_write_frame(...);
         } else {
             avcodec_encode_video(...);
             av_write_frame(....);
         }
     }

When you initialize the AVFormatContext (for output) and the AVStreams, 
the values in the PTS field will be null. This code assumes you are 
starting at zero time, and moving forward. As each frame is encoded, the 
AVStream's pts.val will be updated. This allows you to write the frames 
interleaved together in a single output file.

You will have to handle, via buffering, the capture of the raw audio 
data and raw video data so you do not lose any frames. However, on a 
suitably fast machine, the encoding should be able to encode the frames 
and write in real time.

Regards,
Paul


More information about the ffmpeg-devel mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4