} else {
framerate = 1 / av_q2d(s->streams[i]->codec->time_base);
}
+ if (video_enc) {
+ av_log(s, AV_LOG_ERROR,
+ "at most one video stream is supported in flv\n");
+ return AVERROR(EINVAL);
+ }
video_enc = enc;
if (enc->codec_tag == 0) {
av_log(s, AV_LOG_ERROR, "video codec not compatible with flv\n");
}
break;
case AVMEDIA_TYPE_AUDIO:
+ if (audio_enc) {
+ av_log(s, AV_LOG_ERROR,
+ "at most one audio stream is supported in flv\n");
+ return AVERROR(EINVAL);
+ }
audio_enc = enc;
if (get_audio_flags(s, enc) < 0)
return AVERROR_INVALIDDATA;
file_size = avio_tell(pb);
/* update information */
- avio_seek(pb, flv->duration_offset, SEEK_SET);
- put_amf_double(pb, flv->duration / (double)1000);
- avio_seek(pb, flv->filesize_offset, SEEK_SET);
- put_amf_double(pb, file_size);
+ if (avio_seek(pb, flv->duration_offset, SEEK_SET) < 0)
+ av_log(s, AV_LOG_WARNING, "Failed to update header with correct duration.\n");
+ else
+ put_amf_double(pb, flv->duration / (double)1000);
+ if (avio_seek(pb, flv->filesize_offset, SEEK_SET) < 0)
+ av_log(s, AV_LOG_WARNING, "Failed to update header with correct filesize.\n");
+ else
+ put_amf_double(pb, file_size);
avio_seek(pb, file_size, SEEK_SET);
return 0;
unsigned ts;
int size = pkt->size;
uint8_t *data = NULL;
- int flags, flags_size;
-
- // av_log(s, AV_LOG_DEBUG, "type:%d pts: %"PRId64" size:%d\n",
- // enc->codec_type, timestamp, size);
+ int flags = 0, flags_size;
if (enc->codec_id == AV_CODEC_ID_VP6 || enc->codec_id == AV_CODEC_ID_VP6F ||
enc->codec_id == AV_CODEC_ID_AAC)