このアプリは、カメラ出力をmovに保存します。ファイルを作成し、AVPacketによってrtmpサーバーに送信されたflv形式に変換します。 2つのファイルの間で毎回切り替わります.1つはカメラ出力で書き込まれ、もう1つは送信されます。 私の問題は、オーディオ/ビデオがしばらくしてから同期を外れているということです。FFMpeg同期していないiOSアプリケーションのオーディオ/ビデオ
送信された最初のバッファは、常に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");
}
av_free_packet(packet);