Question

I am working on the effects of network losses in video transmission. In order to simulate the network losses I use a simple program which drops random RTP packets from the output of H.264 RTP encoding.

I use Joint Model (JM) 14.2 in order to encode the video. However, I don't use AnnexB format as my output, instead I choose the output as RTP packets. The JM output is generated as RTP packets with RTP headers and payload as a sequence. After that, some of RTP packets are dropped by using a simple program. Then, I can decode the output bitstream by using also JM and it's error concealment methods.

The main purpose of this process is to evaluate the differences created by network losses on the human video quality perception. In order to measure the perceived quality, the shown video must be in its decoded form (i.e. full resolution) or it can be decodable at the receiver side. The RTP packets created by the JM Encoder cannot be decoded without the JM software installed. However, with the proper header (or container) most video players are able to decode the bitstream. So, the my goal in this question is to encapsulate my encoded RTP packet bitstream in a common container such as AVI or MP4 to have my content decodable at the receiver computer.

The format of the encoded bitstream in RTP packetized form is as follows:

     ----------------------------------------------------------------------
     | RTP Header #1 | RTP Payload #1 | RTP Header #2 | RTP Payload #2 |...
     ----------------------------------------------------------------------

In order to find the video quality, I want to make a subjective test with these bitstreams. I can make these test by using the full resolution data decoded by myself whereas it's very inconvenient to crowdsource this subjective test with GBs of video data on the Internet. So, I want to mux these bitstreams into a container (i.e. AVI) by using FFMPEG. I have tried to decode these bitstreams with FFMPEG and FFPLAY; however, both of them didn't work. I also tried the following command and it didn't work, either.

    ffmpeg - f h264 -i <raw_rtpDropped.264> -vcodec copy -r 25 out.avi

Which format or muxer should I use? Do I need to convert these files to any other format?

No correct solution

OTHER TIPS

I think I'll attempt to convince you once more: Encoding is a method of taking raw video and compressing it. This reduces the size of the video, which is what you want, and also reduces the quality (you can't get something for nothing). Multiplexing is a term used in many sciences, and it means taking two or more data streams and turning them into 1. When you mux video, you usually mean that you take encoded video and add audio, or just video but put it in a container such as mpeg2 transport, or mpeg4 ISO based containers. AVI is also a container/ multiplex of video (hence the name audio video interleave) so it does not solve your issue with GB of data. from wikipedia: "An AVI file may carry audio/visual data inside the chunks in virtually any compression scheme, including Full Frame (Uncompressed), Intel Real Time (Indeo), Cinepak, Motion JPEG, Editable MPEG, VDOWave, ClearVideo / RealVideo, QPEG, and MPEG-4 Video."

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top