Hi

I'm using API to process an flv input video that has H264 video codec
and AAC, audio codec and the output flv video also has H264 video
codec and AAC, audio codec.

Basically the flow is I start of just demuxing an flv video/audio file
and then muxing directly back out to an flv output file (i.e. no
decoding/encoding), this part of the generated output works fine after
I replace the extra-data created by ffmpeg flv_write_header(), with
the extra data in the original file. A short period of time elapses
and I decide that I need to start to decode the video and audio
packets and then re-encode each packet to achieve more compression.

 The problem is that when I switch to decoding/encoding packets the
audio plays but the video doesn't.

VLC player plays the video and audio without issue until the point
where we started the decode/encode packets phase and then starts to
churn out the following messages; "AVC: nal size 807428977", and "no
frame!", (note the size value in the message change each time).  The
audio continues to the end without any problems.

When I try and push this file I have created through  ffmpeg, I get
the following output
I get the following errors with ffmpeg if I try and decode the file;

[h264 @ 0x149df770] top block unavailable for requested intra mode at 3 0/s
[h264 @ 0x149df770] error while decoding MB 3 0, bytestream (252)
[h264 @ 0x149df770] AVC: nal size 807428977
[h264 @ 0x149df770] concealing 920 DC, 920 AC, 920 MV errors
[h264 @ 0x149df770] AVC: nal size -1708817729
[h264 @ 0x149df770] no frame!
Error while decoding stream #0.0
[h264 @ 0x149df770] AVC: nal size -1706475345
[h264 @ 0x149df770] no frame!
Error while decoding stream #0.0
[h264 @ 0x149df770] AVC: nal size -1704196739
[h264 @ 0x149df770] no frame!

I suspect that VLC might use a similar ffmpeg based decoder.

When generating this output after calling flv_write_header when
setting up streams, I normally replace the ffmpeg generated
extra-data, with the extra-data in the original input file, this means
the input plays up until we switch in to the decode/encode phase.
No error messages are generated by ffmpeg, when I switch to
decoding/encoding packages as I only do this on a key frame.

So theres a problem with the different Nal details being sent when I
start decoding/encoding, which causes problems with the decoder on the
player.   Ideally I would like to send new decoder config information
to the player so that it can adapt this content correctly but

Im not sure if this is possible and how this could be achieved.  So I
suppose I have a few questions I hope you might be able to help with.

1. Is there a way round this issue to allow the client to properly
decode the content once I switch to decode and re-encoding the video
and audio packets?  Audio continues to play fine, video doesnt.  Can I
update decoder configuration in the extra-data mid flow.
2. Is this more a muxer issue or is there a way we can tell libx264 to
generate the extra-data for the docoder with every packet?
3. Would it be worth asking this question on the libx264 forum?
Please note; with H263 video content this logic works very well, it
appears more an issue with H264.
I am using ffmpeg 0.6.  I also ensure that x264 parameter
"repeat-headers" is set always.  Im also using the Xuggler JAVa API as
well.

Any help would be much appreciated.

I will continue to look on x264 and ffmpeg forums for any hints.

Thanks
Declan
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to