0

私は git mooncatventureの IframeExtractor を使用します。これは .mov ファイルをうまく再生します。しかし、rtsp ストリームを読み取ろうとすると、音が聞こえません。

これは、rtsp ストリームからの FFMEG ダンプです。

Metadata:
title           : unknown
comment         : unknown
Duration: N/A, start: 49435.000589, bitrate: 258 kb/s
Program 3223 
No Program
Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1(fra): Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 142 kb/s
Stream #0:2(fra): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
Stream #0:3(qad): Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, mono, fltp, 47 kb/s
Stream #0:4(qaa): Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 68 kb/s

これは、動作するローカル .mov ファイルからのダンプです。

Metadata:
major_brand     : qt  
minor_version   : 0
compatible_brands: qt  
creation_time   : 2010-01-17 21:52:33
model           : iPhone 3GS
model-eng       : iPhone 3GS
date            : 2010-01-17T16:52:33-0500
date-eng        : 2010-01-17T16:52:33-0500
encoder         : 3.1.2
encoder-eng     : 3.1.2
make            : Apple
make-eng        : Apple
Duration: 00:00:03.25, start: 0.000000, bitrate: 3836 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x480, 3695 kb/s, 30.02 fps, 30 tbr, 600 tbn, 1200 tbc
Metadata:
  rotate          : 90
  creation_time   : 2010-01-17 21:52:33
  handler_name    : Core Media Data Handler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s
Metadata:
  creation_time   : 2010-01-17 21:52:33
  handler_name    : Core Media Data Handler

サウンドを管理するオーディオ クラスには、2 つの入力に対してコーデック CODEC_ID_AAC が検出されたことを示すコーデック検出器が含まれています。

audioStreamBasicDesc_.mFormatFlags = 0;
switch (_audioCodecContext->codec_id) {
    case CODEC_ID_MP3:
         audioStreamBasicDesc_.mFormatID = kAudioFormatMPEGLayer3;
        break;
    case CODEC_ID_AAC:
         audioStreamBasicDesc_.mFormatID = kAudioFormatMPEG4AAC;
         audioStreamBasicDesc_.mFormatFlags = kMPEG4Object_AAC_Main;
        NSLog(@"audio format aac %s (%d) is  supported",  _audioCodecContext->codec_name, _audioCodecContext->codec_id);
        break;
}

バッファにデータが入っているのが見えますが、何も聞こえません。設定が間違っている audioStreamBasicDesc_ かもしれませんが、何が見つかりません。

同じ AAC コーデックではない可能性はありますか?

誰かが同じ問題を経験しましたか?

どんな助けでも大歓迎です、私は数日以来この問題に取り組んでいます。

編集:以前はなかったエラーが見つかりました。解決方法がわかりません。audioStreamBasicDesc.mFramesPerPacket を 0 に変更するか 2 で割ると、エラー メッセージが消えます。

AudioConverterNew returned 'fmt?'
Prime failed ('fmt?'); will stop (72000/0 frames)
4

1 に答える 1

0

ここで、480000などの任意の大きなサイズのバッファサイズを強制することができます

status = AudioQueueAllocateBufferWithPacketDescriptions(audioQueue_, 
    audioStreamBasicDesc_.mSampleRate * kAudioBufferSeconds / 8, 
    _audioCodecContext->sample_rate * kAudioBufferSeconds / 
      _audioCodecContext->frame_size + 1, 
    &audioQueueBuffer_[i]);
于 2013-01-08T14:48:15.487 に答える