I'm streaming H.264(libx264) videos using RTP. I would like to compare the different error resiliency methods in h.264. In some research papers, psnr was used to compare them. So I would like to know how to calculate the psnr of the h.264 video during streaming.
PSNR calculation in H.264 packet loss
2.4k Views Asked by K07 At
1
There are 1 best solutions below
Related Questions in H.264
- Realtime/zero-latency video stream: what codec parameters to use?
- Including SPS and PPS in a raw h264 track
- How to get width and height from the H264 SPS using ffmpeg
- VLC in Raspberry Pi won't play h264 video file
- Converting mkv to h264 FFmpeg
- Convert JPEGs to H264 and stream to my server
- H.264 decoding error log from RTSP stream
- How to extract key-frames closest to given frame numbers from H264 video with ffmpeg
- Configure MediaCodec with the proper MediaFormat from a raw H.264 byte buffer
- Record and play h.264 video in memory using Jcodec
- forcing VLC to play h264 video file
- Decoding a h264 (High) stream with OpenCV's ffmpeg on Ubuntu
- What video encoder gives best performance on an Android device for given quality?
- Demux H264 from (already recorded) raw RTSP stream on HDD
- Color Banding Playing Live Raw H.264 Stream In Android
Related Questions in X264
- GOP size for realtime video stream
- Compiling x264 on a Mac: "No working C compiler found" and "arm-linux-androideabi-gcc: command not found"
- x264: Encoded videos need lots of CPU to play
- Sending metadata per frame with libavcodec
- How to know if x264 uses multiple processors Windows
- GStreamer x264 on Linux (ARM)
- redhat - compile ffmpeg - how to link with liblame/x264 when they're installed locally
- video streaming - mp4 file (x264) - and skip to location
- Container for a single h264 video stream
- x264 rate control modes
- Linphone OSx msx264 encryption VGA takes 97% CPU, why?
- x264 on Ubuntu video bad/corrupted
- H264 steganography: Step by step compression code/library
- Bitmaps to video in C#
- Mencoder Mp4(x264) Encoding
Related Questions in PACKET-LOSS
- Packet drops in multicast when multiple instance of listner are running
- Get packet loss from Open Flow switch
- tc (netem) - reported loss is different to set loss
- Packet loss test with javascript
- QT - JAVA socket loss data
- Debug ideas to investigate on packets getting dropped?
- TCP packets loss ratio
- Is there any way to reset the tunnel in iOS using NE Packet Tunnel Provider when switch between wifi and mobile data happens?
- How to have WebRTC Stream CD Quality Audio With Minimal Packet Loss
- Windows TCP connection failures and retransmissions
- Perl Tcp transfer not consistent
- PSNR calculation in H.264 packet loss
- RTP video issue related to Jitter and packet loss depending on odd network status
- UDP tuning linux
- MQTT QoS 1 Ordering
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
To calculate PSNR, you must compare two frames, so first step is to make sure you have a copy of the source video. Next, you must be able to match the frames 1:1. so if a frame is droped, you need to compare the source frame to the previous streamed frame. This may be difficult if the timestamps do not match (They may be modified by the RTP server). Next decode each frame into its YUV channels. the PSNR of the channels needs to be calculated independently. You can average the three PSNR values at the end, but this puts too much weight on the U,V channels. I recommend just using the Y channel, as it is most important. And since you are measuring packet loss, the values will be strongly correlated anyway.
Next calculate your mean squared error like so:
And finally:
You can average the per frame PSNRs together to get a full stream PSNR.