0
我使用FFmpeg SDK以編程方式將視頻轉換爲mp3。使用FFmpeg SDK將.flv轉換爲mp3的問題
我看了視頻的音頻幀是這樣的:
while(av_read_frame(pFromCtx, &pkt) >= 0)
{
if(pkt.stream_index == audioStreamIndex)
{
avcodec_get_frame_defaults(frame);
got_frame = 0;
ret = avcodec_decode_audio4(pCodecCtx, frame, &got_frame, &pkt);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Error decoding audio frame.\n");
continue;
}
if(got_frame)
{
// Write the decoded audio frame
write_audio_frame(pToCtx, pToCtx->streams[pToCtx->nb_streams-1], frame);
}
}
av_free_packet(&pkt);
}
解碼音頻從輸入視頻文件的正常工作。
static void write_audio_frame(AVFormatContext *oc, AVStream *st, AVFrame *frame)
{
AVCodecContext *enc = st->codec;
AVPacket pkt;
int got_packet = 0;
int ret = 0;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
ret = avcodec_encode_audio2(enc, &pkt, frame, &got_packet);
if (ret < 0) {
// PROBLEM
fprintf(stderr, "Error encoding audio frame. \n");
exit(1);
}
}
我得到以下控制檯輸出:當我嘗試編碼MP3幀中出現的問題
[libmp3lame] inadequate AVFrame plane padding
唯一與FLV的文件發生,代碼工作正常.mp4文件。任何線索錯誤信息的含義?
由於
謝謝
FFALIGN定義。這是否意味着.flv的解碼器會產生無法用libmp3lame編碼的音頻樣本?我是否需要先解碼爲另一種格式? – cpa9000 2013-05-13 18:19:06
'這是否意味着.flv的解碼器會產生無法用libmp3lame編碼的音頻樣本?' - 似乎很明顯,.flv解碼器不能滿足這種特殊期望。 「我需要先解碼到另一種格式嗎?」 - 這可能會奏效。 – 2013-05-13 18:23:13