Skip to content

Instantly share code, notes, and snippets.

@dericed
Created August 8, 2012 00:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dericed/3291078 to your computer and use it in GitHub Desktop.
Save dericed/3291078 to your computer and use it in GitHub Desktop.
run without any arguments to produce random video files and test lossless encoding with ffv1 version 1 and 3
#!/bin/bash
for frame_size in sqcif qcif cif whuxga cga hd720 hd1080 ; do
for pixel_format in yuv420p yuva420p yuva422p yuv444p yuva444p yuv440p yuv422p yuv411p yuv410p yuv420p16 yuv422p16 yuv444p16 yuv444p9 yuv422p9 yuv420p9 yuv420p10 yuv422p10 yuv444p10 yuv444p9le yuv422p9le yuv420p9le yuv420p10le yuv422p10le yuv444p10le gray16le gray rgb24 ; do
# create 1 seconds of random video data
ffmpeg -y -f rawvideo -s "$frame_size" -pix_fmt "$pixel_format" -t 1 -i /dev/random -f rawvideo "random_${pixel_format}_${frame_size}.raw" 2> /dev/null
# make framemd5 file of random data
ffmpeg -y -f rawvideo -s "$frame_size" -pix_fmt "$pixel_format" -i "random_${pixel_format}_${frame_size}.raw" -f framemd5 "random_${pixel_format}_${frame_size}.md5" 2> /dev/null
# encode random data to ffv1 version 1
ffmpeg -y -f rawvideo -s "$frame_size" -pix_fmt "$pixel_format" -i "random_${pixel_format}_${frame_size}.raw" -c:v ffv1 "random_${pixel_format}_${frame_size}_ffv1_v1.mov" 2> /dev/null
# encode random data to ffv1 version 3
ffmpeg -y -f rawvideo -s "$frame_size" -pix_fmt "$pixel_format" -i "random_${pixel_format}_${frame_size}.raw" -c:v ffv1 -level 3 -strict experimental "random_${pixel_format}_${frame_size}_ffv1_v3.mov" 2> /dev/null
# generate framemd5 from encoded ffv1 version 1
ffmpeg -y -i "random_${pixel_format}_${frame_size}_ffv1_v1.mov" -f framemd5 "random_${pixel_format}_${frame_size}_ffv1_v1.md5" 2> /dev/null
# generate framemd5 from encoded ffv1 version 3
ffmpeg -y -i "random_${pixel_format}_${frame_size}_ffv1_v3.mov" -f framemd5 "random_${pixel_format}_${frame_size}_ffv1_v3.md5" 2> /dev/null
if [ $(md5 -q "random_${pixel_format}_${frame_size}.md5") == $(md5 -q "random_${pixel_format}_${frame_size}_ffv1_v1.md5") ] ; then
echo "random_${pixel_format}_${frame_size}.raw" to "random_${pixel_format}_${frame_size}_ffv1_v1.mov" is lossless
else
echo "random_${pixel_format}_${frame_size}.raw" to "random_${pixel_format}_${frame_size}_ffv1_v1.mov" is lossy
fi
if [ $(md5 -q "random_${pixel_format}_${frame_size}.md5") == $(md5 -q "random_${pixel_format}_${frame_size}_ffv1_v3.md5") ] ; then
echo "random_${pixel_format}_${frame_size}.raw" to "random_${pixel_format}_${frame_size}_ffv1_v3.mov" is lossless
else
echo "random_${pixel_format}_${frame_size}.raw" to "random_${pixel_format}_${frame_size}_ffv1_v3.mov" is lossy
fi
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment