Mutual Information calculation - mutual-information

I have a matrix of size 13X8 given below (q'). now the author calculated the mutual information of two adjacent row in this matrix. In order to calculate mutual information first, she calculated the probability distribution of each element in this matrix by calculating the number of times that an element occurs in the matrix divided by the total number of the elements in the matrix.
4 2 2 1 1 1 2 2
1 1 2 2 2 2 1 1
2 2 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 2 1 2
1 2 1 2 1 2 2 2 = q' (13X8)
1 2 2 2 2 3 3 3
2 3 3 3 4 3 4 4
4 3 4 4 4 4 4 4
4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4
4 4 4 4 3 3 3 3
3 3 3 3 4 3 4 3
and finally got probability distribution matrix as
0.317 0.211 0.211 0.298 0.298 0.298 0.211 0.211
0.298 0.298 0.211 0.211 0.211 0.211 0.298 0.298
0.211 0.211 0.298 0.298 0.298 0.298 0.298 0.298
0.298 0.298 0.298 0.298 0.298 0.298 0.298 0.298
0.298 0.298 0.298 0.298 0.298 0.211 0.298 0.211
0.298 0.211 0.298 0.211 0.298 0.211 0.211 0.211
0.298 0.211 0.211 0.211 0.211 0.173 0.173 0.173
0.211 0.173 0.173 0.173 0.317 0.173 0.317 0.317
0.317 0.173 0.317 0.317 0.317 0.317 0.317 0.317
0.317 0.317 0.317 0.317 0.317 0.317 0.317 0.317
0.317 0.317 0.317 0.317 0.317 0.317 0.317 0.317
0.317 0.317 0.317 0.317 0.173 0.173 0.173 0.173
0.173 0.173 0.173 0.173 0.317 0.173 0.317 0.173
now my doubt starts building from this point when she is calculating joint probability according to her For calculating the joint probability of each pair of elements in matrix q, she considers the number of times that the pairs occur in a row and divide it by the total number of rows in matrix q'.And the she calculate mutual information of of each pair of adjacent rows in
matrix Q' which is
85.473
91.466
88.391
92.235
70.560
41.308
58.340
79.062
83.363
66.160
68.891
how we can calculate the joint probability matrix and then finally calculate the mutual information given above.

Related

Download a video from blob:https url from eventive

I want to download a video from eventive but the tag contains a blob url (blob:https://watch.eventive.org/**************).
I have been reading some answers to similar questions but they all assume that the video has a mp3u8 file extension, which in my case doesn't.
I have also tried to directly download that url (removing the blob:) with curl, but I obtained a html code which I cant really understand, which contains a lot of references to javascript files.
Any tip would be really helpful.
Edit:
I have been doing some more tests and I have been able to found a url to a manifest file which points apparently to the video data. I have tried to open that url using VLC and it loads some info about the video, and it even plays it, but the screen is completely black.
I have also tried to download it using ffmpeg but it gives a bunch of errors.
ffmpeg -i https://eventiveprod-usea.streaming.media.azure.net/02968382-069a-4f02-ab3b-67c0b5a8d5b7/5f427f2d65a569006ebd326c.ism/manifest\(format\=mpd-time-csf\) output.mp4
ffmpeg output
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.1.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
[h264 # 0x556c1e280bc0] top block unavailable for requested intra mode
[h264 # 0x556c1e280bc0] error while decoding MB 34 0, bytestream 41478
[h264 # 0x556c1e280bc0] concealing 8160 DC, 8160 AC, 8160 MV errors in I frame
[h264 # 0x556c1e2ce440] top block unavailable for requested intra mode -1
[h264 # 0x556c1e2ce440] error while decoding MB 34 0, bytestream 22093
[h264 # 0x556c1e2ce440] concealing 3600 DC, 3600 AC, 3600 MV errors in I frame
[h264 # 0x556c1e2f9f40] top block unavailable for requested intra mode -1
[h264 # 0x556c1e2f9f40] error while decoding MB 24 0, bytestream 15117
[h264 # 0x556c1e2f9f40] concealing 2040 DC, 2040 AC, 2040 MV errors in I frame
[h264 # 0x556c1e333bc0] top block unavailable for requested intra mode -1
[h264 # 0x556c1e333bc0] error while decoding MB 17 0, bytestream 8716
[h264 # 0x556c1e333bc0] concealing 920 DC, 920 AC, 920 MV errors in I frame
[aac # 0x556c1e3745c0] channel element 2.8 is not allocated
Input #0, dash, from 'https://eventiveprod-usea.streaming.media.azure.net/02968382-069a-4f02-ab3b-67c0b5a8d5b7/5f427f2d65a569006ebd326c.ism/manifest(format=mpd-time-csf)':
Duration: 00:21:18.00, start: 0.066000, bitrate: 0 kb/s
Program 0
Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1317 kb/s, 29.97 fps, 29.97 tbr, 10000k tbn, 59.94 tbc
Metadata:
variant_bitrate : 1770930
id : 1_V_video_1
Stream #0:1: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 686 kb/s, 29.97 fps, 29.97 tbr, 10000k tbn, 59.94 tbc
Metadata:
variant_bitrate : 904295
id : 1_V_video_2
Stream #0:2: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 960x540 [SAR 1:1 DAR 16:9], 495 kb/s, 29.97 fps, 29.97 tbr, 10000k tbn, 59.94 tbc
Metadata:
variant_bitrate : 572685
id : 1_V_video_3
Stream #0:3: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 308 kb/s, 29.97 fps, 29.97 tbr, 10000k tbn, 59.94 tbc
Metadata:
variant_bitrate : 301036
id : 1_V_video_4
Stream #0:4(en): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s
Metadata:
variant_bitrate : 127999
id : 5_A_aac_eng_2_127999
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:4 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[aac # 0x556c1e392dc0] channel element 2.8 is not allocated
Error while decoding stream #0:4: Invalid data found when processing input
[h264 # 0x556c1e3da900] top block unavailable for requested intra mode
[h264 # 0x556c1e3da900] error while decoding MB 34 0, bytestream 41478
[aac # 0x556c1e392dc0] Reserved bit set.
[aac # 0x556c1e392dc0] Number of bands (13) exceeds limit (11).
[h264 # 0x556c1e3da900] concealing 8160 DC, 8160 AC, 8160 MV errors in I frame
Error while decoding stream #0:4: Invalid data found when processing input
[aac # 0x556c1e392dc0] channel element 2.4 is not allocated
Error while decoding stream #0:4: Invalid data found when processing input
[aac # 0x556c1e392dc0] Multiple frames in a packet.
...
[libx264 # 0x5588338c2d00] frame I:1 Avg QP: 4.13 size: 421
[libx264 # 0x5588338c2d00] frame P:32 Avg QP:14.06 size: 1216
[libx264 # 0x5588338c2d00] frame B:96 Avg QP:20.52 size: 306
[libx264 # 0x5588338c2d00] consecutive B-frames: 0.8% 0.0% 0.0% 99.2%
[libx264 # 0x5588338c2d00] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 # 0x5588338c2d00] mb P I16..4: 0.6% 0.6% 0.0% P16..4: 9.4% 0.3% 0.3% 0.0% 0.0% skip:88.9%
[libx264 # 0x5588338c2d00] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 3.7% 0.0% 0.0% direct: 0.0% skip:96.2% L0:53.5% L1:46.3% BI: 0.2%
[libx264 # 0x5588338c2d00] 8x8 transform intra:13.0% inter:86.8%
[libx264 # 0x5588338c2d00] coded y,uvDC,uvAC intra: 1.3% 0.8% 0.2% inter: 0.2% 0.2% 0.0%
[libx264 # 0x5588338c2d00] i16 v,h,dc,p: 98% 0% 2% 0%
[libx264 # 0x5588338c2d00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 33% 2% 64% 0% 0% 0% 0% 0% 0%
[libx264 # 0x5588338c2d00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 18% 42% 3% 1% 1% 2% 2% 1%
[libx264 # 0x5588338c2d00] i8c dc,h,v,p: 99% 0% 0% 0%
[libx264 # 0x5588338c2d00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 # 0x5588338c2d00] ref P L0: 86.7% 1.2% 8.8% 3.3%
[libx264 # 0x5588338c2d00] ref B L0: 62.7% 35.4% 1.9%
[libx264 # 0x5588338c2d00] ref B L1: 96.1% 3.9%
[libx264 # 0x5588338c2d00] kb/s:127.70
Conversion failed!

Increase Training Iterations in StyleGAN

I’m a complete noob trying to learn/play with StyleGAN.
I’m using StyleGAN to train a model with an image set that I built, but the output image quality is poor. The training stops after 10 ticks.
How can I change the default parameters in the code to continue training past 10 ticks?
Do I need to change the kimg or fid50k settings? Are the settings in this block of the train.py file? or the metrics file?
{ 'D': {'func_name': 'training.networks_stylegan.D_basic'},
'D_loss': {'func_name': 'training.loss.D_logistic_simplegp', 'r1_gamma': 10.0},
'D_opt': {'beta1': 0.0, 'beta2': 0.99, 'epsilon': 1e-08},
'G': {'func_name': 'training.networks_stylegan.G_style'},
'G_loss': {'func_name': 'training.loss.G_logistic_nonsaturating'},
'G_opt': {'beta1': 0.0, 'beta2': 0.99, 'epsilon': 1e-08},
'dataset': {'resolution': 64, 'tfrecord_dir': 'fab_dataset'},
'desc': 'sgan-fab_dataset-1gpu',
'grid': {'layout': 'random', 'size': '4k'},
'metrics': [{'func_name': 'metrics.frechet_inception_distance.FID', 'minibatch_per_gpu': 8, 'name': 'fid50k', 'num_images': 50000}],
'sched': { 'D_lrate_dict': {128: 0.0015, 256: 0.002, 512: 0.003, 1024: 0.003},
'G_lrate_dict': {128: 0.0015, 256: 0.002, 512: 0.003, 1024: 0.003},
'lod_initial_resolution': 8,
'minibatch_base': 4,
'minibatch_dict': {4: 128, 8: 128, 16: 128, 32: 64, 64: 32, 128: 16, 256: 8, 512: 4}},
'tf_config': {'rnd.np_random_seed': 1000},
'train': {'mirror_augment': False, 'run_func_name': 'training.training_loop.training_loop', 'total_kimg': 25000}}
Training output log:
tick 1 kimg 140.3 lod 4.00 minibatch 128 time 8m 38s sec/tick 461.9 sec/kimg 3.29 maintenance 56.1 gpumem 3.0
network-snapshot-000140 time 13m 11s fid50k 353.7462
tick 2 kimg 280.6 lod 4.00 minibatch 128 time 29m 42s sec/tick 453.7 sec/kimg 3.23 maintenance 809.9 gpumem 3.4
tick 3 kimg 420.9 lod 4.00 minibatch 128 time 37m 16s sec/tick 453.8 sec/kimg 3.23 maintenance 0.9 gpumem 3.4
tick 4 kimg 561.2 lod 4.00 minibatch 128 time 44m 52s sec/tick 454.4 sec/kimg 3.24 maintenance 0.9 gpumem 3.4
tick 5 kimg 681.5 lod 3.87 minibatch 128 time 1h 01m 06s sec/tick 973.4 sec/kimg 8.09 maintenance 0.9 gpumem 4.5
tick 6 kimg 801.8 lod 3.66 minibatch 128 time 1h 21m 43s sec/tick 1235.8 sec/kimg 10.27 maintenance 1.6 gpumem 4.5
tick 7 kimg 922.1 lod 3.46 minibatch 128 time 1h 42m 20s sec/tick 1235.3 sec/kimg 10.27 maintenance 1.2 gpumem 4.5
tick 8 kimg 1042.4 lod 3.26 minibatch 128 time 2h 02m 57s sec/tick 1235.9 sec/kimg 10.27 maintenance 1.2 gpumem 4.5
tick 9 kimg 1162.8 lod 3.06 minibatch 128 time 2h 23m 34s sec/tick 1236.4 sec/kimg 10.28 maintenance 1.2 gpumem 4.5
tick 10 kimg 1283.1 lod 3.00 minibatch 128 time 2h 43m 58s sec/tick 1222.6 sec/kimg 10.16 maintenance 1.2 gpumem 4.5
network-snapshot-001283 time 14m 20s fid50k 349.5387
I can post the complete train.py file if required but it is standard version available on git.
https://github.com/NVlabs/stylegan/blob/master/train.py

Video frame difference with FFMPEG

I need to compute the frame differences between a source video and a compressed one.
For now I'm using OpenCV with Java, by extracting each frame and doing a simple difference, but it's quite slow (working a 0.5 fps, meaning that a 500 frames video will take more than 15 mins) so I was thinking to move to FFMPEG.
FFMPEG feels a lot faster (everything's done under 1 minute) but it has one big issue that makes the results useless: when compressing the source file, done with FFMPEG too, an extra gray frame is added at the beginning and this fakes the results because different frames are compared.
This is what I'm doing now (knowing that the extra frame messes it all):
ffmpeg -y -i src.avi -i compressed.avi -filter_complex "blend=all_mode=difference,hue=s=0" -c:v libx264 -crf 18 -c:a copy difference.avi
To fix the frame issue I was trying to remove the first frame by re-encoding the compressed video with this command
ffmpeg -y -ss 0.02 -i compressed.mpg -an -f mpeg2video compressed-cut.mpg"
(Note that -ss is 0.02 because it's a 50 fps video, so I did 1/FPS as suggested here)
But I get this response
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
So, finally, the question is: since extracting all the frames and then compute differences with OpenCV is really slow, how can I use FFMPEG to produce a video containing the difference between two sources while keeping in mind that one of them has an extra frame at the beginning?
EDIT: I wanted to avoid posting endless console outputs but since you asked for it, here we go.
1) Encoding
Input
ffmpeg -i "720p50_mobcal_ter.avi" -an -f mpeg2video -y "720p50_mobcal_ter.mpg"
Output
ffmpeg version N-76684-g1fe82ab Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 6.100 / 55. 6.100
libavcodec 57. 15.100 / 57. 15.100
libavformat 57. 14.100 / 57. 14.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 15.100 / 6. 15.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, avi, from '720p50_mobcal_ter.avi':
Metadata:
encoder : Lavf57.14.100
Duration: 00:00:10.08, start: 0.000000, bitrate: 552974 kb/s
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720, 554059 kb/s, SAR 1:1 DAR 16:9, 50 fps, 50 tbr, 50 tbn, 50 tbc
Output #0, mpeg2video, to '720p50_mobcal_ter.mpg':
Metadata:
encoder : Lavf57.14.100
Stream #0:0: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 50 fps, 50 tbn, 50 tbc
Metadata:
encoder : Lavc57.15.100 mpeg2video
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
frame= 41 fps=0.0 q=31.0 size= 984kB time=00:00:00.78 bitrate=10330.5kbits/frame= 80 fps= 78 q=31.0 size= 1323kB time=00:00:01.56 bitrate=6948.1kbits/frame= 124 fps= 80 q=31.0 size= 1725kB time=00:00:02.44 bitrate=5790.0kbits/frame= 168 fps= 81 q=31.0 size= 2084kB time=00:00:03.32 bitrate=5142.8kbits/frame= 212 fps= 81 q=31.0 size= 2482kB time=00:00:04.20 bitrate=4841.4kbits/frame= 255 fps= 82 q=31.0 size= 2840kB time=00:00:05.06 bitrate=4597.2kbits/frame= 296 fps= 82 q=31.0 size= 3133kB time=00:00:05.88 bitrate=4364.5kbits/frame= 338 fps= 82 q=24.8 size= 3453kB time=00:00:06.72 bitrate=4209.2kbits/frame= 382 fps= 82 q=31.0 size= 3723kB time=00:00:07.60 bitrate=4013.4kbits/frame= 426 fps= 83 q=31.0 size= 4005kB time=00:00:08.48 bitrate=3869.1kbits/frame= 470 fps= 83 q=24.8 size= 4276kB time=00:00:09.36 bitrate=3742.5kbits/frame= 504 fps= 83 q=31.0 Lsize= 4469kB time=00:00:10.06 bitrate=3639.3kbits/s
video:4469kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
This adds the extra grey frame at the beginning, it just duplicates the first one
2) Removing first frame
Input
ffmpeg -y -i "720p50_mobcal_ter.mpg" -an -f mpeg2video -vf select=gte(n\,1) "CUT-720p50_mobcal_ter.mpg"
Output
ffmpeg version N-76684-g1fe82ab Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 6.100 / 55. 6.100
libavcodec 57. 15.100 / 57. 15.100
libavformat 57. 14.100 / 57. 14.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 15.100 / 6. 15.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mpegvideo, from '720p50_mobcal_ter.mpg':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: mpeg2video (Main), yuv420p(tv), 1280x720 [SAR 1:1 DAR 16:9], max. 104857 kb/s, 50 fps, 50 tbr, 1200k tbn, 100 tbc
Output #0, mpeg2video, to 'CUT-720p50_mobcal_ter.mpg':
Metadata:
encoder : Lavf57.14.100
Stream #0:0: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 50 fps, 50 tbn, 50 tbc
Metadata:
encoder : Lavc57.15.100 mpeg2video
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
frame= 255 fps=0.0 q=31.0 size= 2781kB time=00:00:05.10 bitrate=4467.3kbits/frame= 503 fps=0.0 q=31.0 Lsize= 4415kB time=00:00:10.08 bitrate=3588.5kbits/s
video:4415kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
3) Frame difference
Input
ffmpeg -y -i "720p50_mobcal_ter.avi" -i "CUT-720p50_mobcal_ter.mpg" -filter_complex "blend=all_mode=difference,hue=s=0" -c:v libx264 -crf 18 -c:a copy "DIFF-720p50_mobcal_ter.mpg"
Output
ffmpeg version N-76684-g1fe82ab Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 6.100 / 55. 6.100
libavcodec 57. 15.100 / 57. 15.100
libavformat 57. 14.100 / 57. 14.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 15.100 / 6. 15.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, avi, from '720p50_mobcal_ter.avi':
Metadata:
encoder : Lavf57.14.100
Duration: 00:00:10.08, start: 0.000000, bitrate: 552974 kb/s
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720, 554059 kb/s, SAR 1:1 DAR 16:9, 50 fps, 50 tbr, 50 tbn, 50 tbc
Input #1, mpegvideo, from 'CUT-720p50_mobcal_ter.mpg':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: mpeg2video (Main), yuv420p(tv), 1280x720 [SAR 1:1 DAR 16:9], max. 104857 kb/s, 50 fps, 50 tbr, 1200k tbn, 100 tbc
[libx264 # 000002784dbeb980] using SAR=1/1
[libx264 # 000002784dbeb980] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 # 000002784dbeb980] profile High, level 3.2
[mpeg # 000002784dbeaf20] VBV buffer size not set, using default size of 130KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'D:\DOWNLOADS\TMP\Video TDI\AVI\DIFF-720p50_mobcal_ter.mpg':
Metadata:
encoder : Lavf57.14.100
Stream #0:0: Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 50 fps, 90k tbn, 50 tbc (default)
Metadata:
encoder : Lavc57.15.100 libx264
Stream mapping:
Stream #0:0 (rawvideo) -> blend:top
Stream #1:0 (mpeg2video) -> blend:bottom
hue -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
frame= 504 fps= 39 q=-1.0 Lsize= 32182kB time=00:00:10.04 bitrate=26258.5kbits/s
video:32061kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.377054%
[libx264 # 000002784dbeb980] frame I:30 Avg QP:19.69 size:149974
[libx264 # 000002784dbeb980] frame P:299 Avg QP:23.28 size: 69423
[libx264 # 000002784dbeb980] frame B:175 Avg QP:24.48 size: 43280
[libx264 # 000002784dbeb980] consecutive B-frames: 30.6% 69.4% 0.0% 0.0%
[libx264 # 000002784dbeb980] mb I I16..4: 18.3% 51.4% 30.4%
[libx264 # 000002784dbeb980] mb P I16..4: 0.6% 5.6% 2.4% P16..4: 35.9% 22.9% 15.6% 0.0% 0.0% skip:17.0%
[libx264 # 000002784dbeb980] mb B I16..4: 0.2% 0.5% 0.3% B16..8: 49.5% 12.4% 5.6% direct:15.5% skip:16.1% L0:47.8% L1:42.1% BI:10.1%
[libx264 # 000002784dbeb980] 8x8 transform intra:57.5% inter:38.5%
[libx264 # 000002784dbeb980] coded y,uvDC,uvAC intra: 90.7% 0.0% 0.0% inter: 50.3% 0.0% 0.0%
[libx264 # 000002784dbeb980] i16 v,h,dc,p: 32% 23% 35% 10%
[libx264 # 000002784dbeb980] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 11% 41% 7% 5% 6% 5% 6% 8%
[libx264 # 000002784dbeb980] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 14% 23% 8% 7% 7% 7% 7% 8%
[libx264 # 000002784dbeb980] i8c dc,h,v,p: 100% 0% 0% 0%
[libx264 # 000002784dbeb980] Weighted P-Frames: Y:33.8% UV:0.0%
[libx264 # 000002784dbeb980] ref P L0: 58.1% 16.3% 14.2% 9.4% 2.0%
[libx264 # 000002784dbeb980] ref B L0: 79.3% 20.7%
[libx264 # 000002784dbeb980] kb/s:26056.02
The second command made everything work while the second one in the first part didn't (the one with the -ss option), so I could be quite happy about it but I'm not that sure if FFMPEG duplicates the first frame for every video or if it's just related to the one I'm using now, so it could be better to start off with a compressed video that has the same frame count of the original one.
So let's get to one final question: why does FFMPEG add a duplicated first frame at the beginning of the compressed video and how can I avoid that?
Encoding with
ffmpeg -i "720p50_mobcal_ter.avi" -c:v mpeg2video "720p50_mobcal_ter.mpg"
instead of
ffmpeg -i "720p50_mobcal_ter.avi" -an -f mpeg2video -y "720p50_mobcal_ter.mpg"
prevents the creation of the duplicate frame and makes everything work correctly.

ffmpeg options for playing in iPad WebView with <video> tag

I'm trying to convert a video to be played in a tag in a WebView in iOS. I've tried the options at this link but it still doesn't seem to play. I've found videos that do successfully play, though, so I'm sure it's possible, I just can't seem to get any working. Here's the ffmpeg -i output for something that works.
Here's what I tried from the wiki:
ffmpeg -i {filename} -acodec aac -ac 2 -strict experimental -ab 160k -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -b 1200k -f mp4 -threads 0 {filename}.ipad.mp4
But the file doesn't play in the WebView.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.m4v':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: M4V M4A mp42isom
creation_time : 2005-12-20 20:20:15
Duration: 00:01:25.50, start: 0.000000, bitrate: 209 kb/s
Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 115 kb/s
Metadata:
creation_time : 2005-12-20 20:20:15
handler_name : Apple Sound Media Handler
Stream #0:1(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240, 90 kb/s, 10 fps, 10 tbr, 1k tbn, 2k tbc
Metadata:
creation_time : 2005-12-20 20:20:15
handler_name : Apple Video Media Handler
And here's the output for my input file:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cheerfulness.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2013-07-31 00:47:22
Duration: 00:00:06.00, start: 0.000000, bitrate: 120849 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1200x1920, 120823 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc
Metadata:
creation_time : 2013-07-31 00:48:33
handler_name : Apple Alias Data Handler
edit: Here's the full output of the command:
wlue:$ ffmpeg -i cheerfulness.mov -acodec aac -ac 2 -strict experimental -ab 160k -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -b 1200k -f mp4 -threads 0 output.ipad.mp4
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Sep 18 2013 18:44:15 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cheerfulness.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2013-07-31 00:47:22
Duration: 00:00:06.01, start: 0.000000, bitrate: 120849 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1200x1920, 120823 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc
Metadata:
creation_time : 2013-07-31 00:48:33
handler_name : Apple Alias Data Handler
Please use -b:a or -b:v, -b is ambiguous
[libx264 # 0x7fa67401fa00] frame MB size (75x120) > level limit (1620)
[libx264 # 0x7fa67401fa00] DPB size (5 frames, 17280000 bytes) > level limit (0 frames, 3110400 bytes)
[libx264 # 0x7fa67401fa00] MB rate (269730) > level limit (40500)
[libx264 # 0x7fa67401fa00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 # 0x7fa67401fa00] profile Constrained Baseline, level 3.0
[libx264 # 0x7fa67401fa00] 264 - core 125 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=0 ref=5 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=abr mbtree=1 bitrate=1200 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=10000 vbv_bufsize=10000 nal_hrd=none ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.ipad.mp4':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
encoder : Lavf54.63.104
Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1200x1920, q=-1--1, 1200 kb/s, 30k tbn, 29.97 tbc
Metadata:
creation_time : 2013-07-31 00:48:33
handler_name : Apple Alias Data Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Press [q] to stop, [?] for help
frame= 180 fps= 16 q=-1.0 Lsize= 828kB time=00:00:06.00 bitrate=1129.2kbits/s
video:826kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.177851%
[libx264 # 0x7fa67401fa00] frame I:2 Avg QP:32.23 size: 20942
[libx264 # 0x7fa67401fa00] frame P:178 Avg QP:41.03 size: 4515
[libx264 # 0x7fa67401fa00] mb I I16..4: 90.1% 0.0% 9.9%
[libx264 # 0x7fa67401fa00] mb P I16..4: 6.8% 0.0% 0.0% P16..4: 16.8% 0.6% 0.2% 0.0% 0.0% skip:75.5%
[libx264 # 0x7fa67401fa00] final ratefactor: 37.56
[libx264 # 0x7fa67401fa00] coded y,uvDC,uvAC intra: 1.2% 16.4% 2.1% inter: 0.1% 3.4% 0.1%
[libx264 # 0x7fa67401fa00] i16 v,h,dc,p: 49% 23% 4% 24%
[libx264 # 0x7fa67401fa00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 8% 36% 8% 12% 9% 8% 4% 2%
[libx264 # 0x7fa67401fa00] i8c dc,h,v,p: 88% 6% 5% 1%
[libx264 # 0x7fa67401fa00] ref P L0: 47.7% 22.0% 16.7% 5.7% 7.9%
[libx264 # 0x7fa67401fa00] kb/s:1126.21

av_interleaved_write_frame(): Connection reset by peer mjpeg : What is wrong with mjpeg stream, ffserver and ffplay?

I'm creating mjpeg stream from image files using ffmpeg and write it to ffserver's feed:
sudo ffmpeg -loop 1 -i fon.jpeg -vcodec mjpeg -f mjpeg http://localhost:8090/feed1.ffm
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 19 2013 23:10:58 with gcc 4.7 (Debian 4.7.2-5)
configuration:
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
Input #0, image2, from 'fon.jpeg':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Output #0, mjpeg, to 'http://localhost:8090/feed1.ffm':
Metadata:
encoder : Lavf55.12.100
Stream #0:0: Video: mjpeg, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> mjpeg)
Press [q] to stop, [?] for help
ffserver is configured as
Port 8090
RTSPPort 8594
BindAddress 0.0.0.0
MaxClients 100
MaxBandwidth 20000
NoDaemon
<Feed feed.ffm>
File /tmp/feed.ffm
FileMaxSize 3M
</Feed>
<Stream test.rtsp>
Feed feed.ffm
Format rtsp
VideoCodec mjpeg
VideoFrameRate 30
VideoBufferSize 80000
VideoBitRate 200
VideoQMin 1
VideoQMax 5
VideoSize 1280x720
PreRoll 1
Noaudio
</Stream>
<Stream test.swf>
Feed feed.ffm
Format swf
VideoCodec flv
VideoFrameRate 30
VideoBufferSize 50000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 1280x720
PreRoll 0
Noaudio
</Stream>
Then I'm trying to retrieve the rtsp stream from the ffserver:
ffplay http://localhost:8090/test.rtsp -loglevel debug
avplay version 0.8.5-6:0.8.5-1, Copyright (c) 2003-2012 the Libav developers
built on Jan 13 2013 12:05:48 with gcc 4.7.2
configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra- version='6:0.8.5-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avutil configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avcodec configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
avformat configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
swscale configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
postproc configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:0.8.4-1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
libavutil 51. 22. 1 / 51. 22. 1
libavcodec 53. 35. 0 / 53. 35. 0
libavformat 53. 21. 1 / 53. 21. 0
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 15. 0 / 2. 15. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 52. 0. 0 / 52. 0. 0
http://localhost:8090/test.rtsp: Invalid data found when processing input
So, what is wrong in this streaming example, if I have no problem when I substitute streams to the files?
I create a mjpeg file using the same parameters 9i.e. file is an output insteadof stream)
sudo ffmpeg -loop 1 -i fon.jpeg -vcodec mjpeg -f mjpeg test.mjpg
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 19 2013 23:10:58 with gcc 4.7 (Debian 4.7.2-5)
configuration:
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
Input #0, image2, from 'fon.jpeg':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Output #0, mjpeg, to 'test.mjpg':
Metadata:
encoder : Lavf55.12.100
Stream #0:0: Video: mjpeg, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> mjpeg)
Press [q] to stop, [?] for help
frame= 36 fps=0.0 q=0.0 size= 888kB time=00:00:01.36 bitrate=5349.2kbits/sframe= 78 fps= 76 q=0.0 size= 1711kB time=00:00:03.04 bitrate=4609.9kbits/sframe= 120 fps= 78 q=0.0 size= 2533kB time=00:00:04.72 bitrate=4396.9kbits/sframe= 161 fps= 79 q=0.0 size= 3336kB time=00:00:06.36 bitrate=4297.5kbits/sframe= 202 fps= 79 q=0.0 size= 4139kB
time=00:00:08.00 bitrate=4238.8kbits/sframe= 243 fps= 79 q=0.0 size= 4943kB
time=00:00:09.64 bitrate=4200.1kbits/sframe= 282 fps= 79 q=0.0 size= 5706kB
time=00:00:11.20 bitrate=4173.9kbits/sframe= 321 fps= 79 q=0.0 size= 6470kB
time=00:00:12.76 bitrate=4154.0kbits/sframe= 358 fps= 78 q=0.0 size= 7195kB
time=00:00:14.24 bitrate=4139.2kbits/sframe= 397 fps= 68 q=0.0 size= 7959kB
time=00:00:15.80 bitrate=4126.6kbits/s
[1]+ Stopped sudo ffmpeg -loop 1 -i fon.jpeg -vcodec mjpeg -f mjpeg test.mjpg
And then I playback this mjpeg file with ffplay. The play back is correct, I see no errors or exceptions.
ffplay test.mjpg
avplay version 0.8.5-6:0.8.5-1, Copyright (c) 2003-2012 the Libav developers
built on Jan 13 2013 12:05:48 with gcc 4.7.2
[mjpeg # 0x7fc3680008c0] max_analyze_duration reached
[mjpeg # 0x7fc3680008c0] Estimating duration from bitrate, this may be inaccurate
Input #0, mjpeg, from 'test.mjpg':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: mjpeg, yuvj420p, 1280x720 [PAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1200k tbn, 1200k tbc
[avsink # 0x7fc360001020] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale # 0x7fc360001700] w:1280 h:720 fmt:yuvj420p -> w:1280 h:720 fmt:yuv420p flags:0x4
27.99 A-V: 0.000 s:0.0 aq= 0KB vq= 0KB sq= 0B f=0/0 0/0
So, what is the configuration issue for ffserver, or may be it is a bug of the ffserver?
UPD. I have realized, that i fed file1.ffm instead of file.ffm; that caused some ffserver problem:
Mon Sep 9 11:43:20 2013 [ffm # 0x2110000]Format ffm probed with size=2048 and score=101
Mon Sep 9 11:43:20 2013 Deleting feed file 'feed1.ffm' as stream counts differ (1 != 2)
Mon Sep 9 11:43:20 2013 [AVIOContext # 0x210d660]Statistics: 4096 bytes read, 0 seeks
Mon Sep 9 11:43:20 2013 [AVIOContext # 0x210a9a0]Statistics: 0 seeks, 1 writeouts
Mon Sep 9 11:43:20 2013 FFserver started.
Mon Sep 9 11:44:18 2013 File '/feed1.ffm' not found
Mon Sep 9 11:44:18 2013 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 404 149
After i set a correct feed, i got another exception on ffmpeg side:
sudo ffmpeg -loop 1 -i fon.jpeg -vcodec mjpeg -f mjpeg http://localhost:8090/feed.ffm
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 19 2013 23:10:58 with gcc 4.7 (Debian 4.7.2-5)
configuration:
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
Input #0, image2, from 'fon.jpeg':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Output #0, mjpeg, to 'http://localhost:8090/feed.ffm':
Metadata:
encoder : Lavf55.12.100
Stream #0:0: Video: mjpeg, yuvj420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg -> mjpeg)
Press [q] to stop, [?] for help
av_interleaved_write_frame(): Connection reset by peer
While ffserver shows no error at all:
sudo ffserver -f /etc/ffserver3.conf
ffserver version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 19 2013 23:10:58 with gcc 4.7 (Debian 4.7.2-5)
configuration:
libavutil 52. 38.100 / 52. 38.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.100 / 55. 12.100
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 79.101 / 3. 79.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
Mon Sep 9 12:08:19 2013 FFserver started.
Mon Sep 9 12:08:40 2013 127.0.0.1 - - [POST] "/feed.ffm HTTP/1.1" 200 4096
Mon Sep 9 12:12:28 2013 127.0.0.1 - - [GET] "/ HTTP/1.1" 200 1847
So, what is the problem now?
the short answer is: you can't do that, at least not in that way. ffserver decides the expected input format by looking at the feed output name. when it sees you sending the data to feed.ffm it assumes ffm data, and so when libavformat/utils.c routine avformat_open_input calls s->iformat->read_header(s), it uses the ffm_read_header routine in libavformat/ffmdec.c:
/* header */
tag = avio_rl32(pb);
if (tag == MKTAG('F', 'F', 'M', '2'))
return ffm2_read_header(s);
if (tag != MKTAG('F', 'F', 'M', '1')) {
ret = AVERROR_INVALIDDATA;
goto fail;
}
here is where it sees the <ff><d8><ff><e0> at the beginning of the JPEG data, sees it is not equal to FFM2 or FFM1, and fails with "Invalid data found when processing input", although that message is never shown.
I can't yet tell you the right way to do it, but at least now you know what is happening.

Resources