On Feb 23, 2012, at 00:59 , ALESSANDRO PAGANELLI wrote: > I'm working on a project (which uses Libav/Ffmpeg) in which I have to > transmit an h264 encoded file (with Mp4 file format) over a simulated network > (I'm using network simulator 3 for this), to "emulate" a real video streaming. > > Now, I'm facing the problem regarding how to "rebuild" the transmitted file > at the receiver side. More in details, this issue regards the settings needed > to replicate the configurations for AVFormatContext, AVStream and > AVCodecContext, starting from the same structures I have at the transmitter. > As for now, I just copied the content of the sender's AVCodecContext > structure to the receiver's one, but the resulting file is broken. I suspect > that other settings have to be replicated too, but it's not clear which ones > are those required by h264 and Mp4. > > Is there any document/tutorial about the required settings for each specific > codec or format?
If your source file is mp4 and your stream is mpegts then you might need to add the h264_mp4toannexb filter. This filter is available as an option for ffmpeg and you can also use it between av_read_frame and av_write_frame. > More in general, do you have suggestions about how to approach this problem > for a generic combination of codec and format? I planned to implement > different possible combinations of them, so it would be great if there is a > "smart" way to copy these contexts without doing it "by hand" :) . If you scan through this list you'll note a lot of questions which basically come back to the same problem you see here (and yes, one of them I had been asking). As far as I understood this problem the reason is that h264 (and I think also aac) are packed differently depending of if they are to be saved to a file or if they are to be streamed. h264 frames in a mpegts stream require a specific header for each frame, which is this "annex B". This h264_mp4toannexb filter will take the required information from the file header and put it in the annex B frame header. This is meant to work if you have a mp4 file to begin with. (There is a similar filter for aac.) If your source file is not in the mp4 format which this filter expects then you're out of luck (this is where I'm stuck too :( ). I have source files which are h264+aac in mpegts format, and there these filters do not work. Unfortunately there seems to be no other documentation about how to build a correct annex B header manually except what's in the source code (if there is, please point me to it!). _______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
