The FLV muxer tries to update the header in write_trailer, which is
impossible if writing to a pipe or network stream. Don't write header
data if seeking to the header fails.
Signed-off-by: Martin Storsjö <martin@martin.st>
... | ... |
@@ -403,10 +403,14 @@ static int flv_write_trailer(AVFormatContext *s) |
403 | 403 |
file_size = avio_tell(pb); |
404 | 404 |
|
405 | 405 |
/* update information */ |
406 |
- avio_seek(pb, flv->duration_offset, SEEK_SET); |
|
407 |
- put_amf_double(pb, flv->duration / (double)1000); |
|
408 |
- avio_seek(pb, flv->filesize_offset, SEEK_SET); |
|
409 |
- put_amf_double(pb, file_size); |
|
406 |
+ if (avio_seek(pb, flv->duration_offset, SEEK_SET) < 0) |
|
407 |
+ av_log(s, AV_LOG_WARNING, "Failed to update header with correct duration.\n"); |
|
408 |
+ else |
|
409 |
+ put_amf_double(pb, flv->duration / (double)1000); |
|
410 |
+ if (avio_seek(pb, flv->filesize_offset, SEEK_SET) < 0) |
|
411 |
+ av_log(s, AV_LOG_WARNING, "Failed to update header with correct filesize.\n"); |
|
412 |
+ else |
|
413 |
+ put_amf_double(pb, file_size); |
|
410 | 414 |
|
411 | 415 |
avio_seek(pb, file_size, SEEK_SET); |
412 | 416 |
return 0; |