小编yog*_*gbd的帖子

FFMpeg iOS应用程序中的音频/视频不同步

该应用程序将相机输出保存为mov.文件,然后将其转换为AVPacket发送到rtmp服务器的flv格式.它每次在两个文件之间切换,一个由摄像机输出写入,另一个是发送.我的问题是音频/视频在一段时间后变得不同步.

发送的第一个缓冲区总是100%同步,但过了一段时间它就搞乱了.我相信它的DTS-PTS问题..

 if(isVideo)
{
    packet->stream_index = VIDEO_STREAM;
   packet->dts = packet->pts = videoPosition;
    videoPosition += packet->duration = FLV_TIMEBASE * packet->duration * videoCodec->ticks_per_frame * videoCodec->time_base.num / videoCodec->time_base.den;

}
else
{
    packet->stream_index = AUDIO_STREAM;
    packet->dts = packet->pts = audioPosition;
    audioPosition += packet->duration = FLV_TIMEBASE * packet->duration / audioRate;

   //NSLog(@"audio position = %lld", audioPosition);
}

packet->pos = -1;
packet->convergence_duration = AV_NOPTS_VALUE;

// This sometimes fails without being a critical error, so no exception is raised
if((code = av_interleaved_write_frame(file, packet)))
{
    NSLog(@"Streamer::Couldn't write frame");
} …
Run Code Online (Sandbox Code Playgroud)

c ffmpeg objective-c avfoundation ios

12
推荐指数
1
解决办法
1169
查看次数

标签 统计

avfoundation ×1

c ×1

ffmpeg ×1

ios ×1

objective-c ×1