I am trying to play the stream from ip camera in the browser. I am using ffmpeg and ffserver stack for that (both 2.4.2).
For now I can easily play video stream in browser using flash. But I would like to have ability to play it in native html5 player. And I need webm format to do that.
ffserver config snippet:
<Feed 0_webm.ffm>
File /tmp/0_webm.ffm
FileMaxSize 5M
ACL allow localhost
</Feed>
<Stream 0.webm>
Feed 0_webm.ffm
Format webm
NoAudio
</Stream>
<Stream test2.swf>
Feed feed2.ffm
Format swf
VideoCodec flv
VideoFrameRate 30
VideoBufferSize 50000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 352x288
PreRoll 0
Noaudio
</Stream>
I execute this command to get stream from camera and pass it to a client through ffserver:
ffmpeg -rtsp_transport tcp -i rtsp://admin:admin#192.168.10.76:80 -vcodec libvpx r 10 -f webm http://localhost:8090/0_webm.ffm
But get "Broken pipe" error message (full ffmeg output):
ffmpeg version 2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
built on Oct 6 2014 17:33:05 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/opt/ffmpeg --libdir=/opt/ffmpeg/lib/ --enable-shared --enable-avresample --disable-stripping --enable-gpl --enable-version3 --enable-runtime-cpudetect --build-suffix=.ffmpeg --enable-postproc --enable-x11grab --enable-libcdio --enable-vaapi --enable-vdpau --enable-bzlib --enable-gnutls --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libfaac --enable-libvo-aacenc --enable-nonfree --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfdk_aac --enable-libopus --enable-pthreads --enable-zlib --enable-libvpx --enable-libfreetype --enable-libpulse --enable-debug=3
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 4.101 / 56. 4.101
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 1.100 / 5. 1.100
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://admin:admin#192.168.10.76:80':
Metadata:
title : RTSP Session/2.0
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709), 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1: Audio: pcm_alaw, 16000 Hz, 1 channels, s16, 128 kb/s
[swscaler # 0xcf97a0] deprecated pixel format used, make sure you did set range correctly
[libvpx # 0xd86fc0] v1.3.0
Output #0, webm, to 'http://localhost:8090/0_webm.ffm':
Metadata:
title : RTSP Session/2.0
encoder : Lavf56.4.101
Stream #0:0: Video: vp8 (libvpx), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 200 kb/s, 10 fps, 1k tbn, 10 tbc
Metadata:
encoder : Lavc56.1.100 libvpx
Stream #0:1: Audio: vorbis (libvorbis), 16000 Hz, mono, fltp
Metadata:
encoder : Lavc56.1.100 libvorbis
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> vp8 (libvpx))
Stream #0:1 -> #0:1 (pcm_alaw (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
av_interleaved_write_frame(): Broken pipe
Last message repeated 1 times
frame= 2 fps=0.0 q=0.0 Lsize= 40kB time=00:00:00.23 bitrate=1371.2kbits/s
video:36kB audio:1kB subtitle:0kB other streams:0kB global headers:3kB muxing overhead: 7.514220%
Conversion failed!
If I run the same command without -f webm, I get no error and it looks like working. But in this case I can't play it in browser (Chrome for instance).
Does anybody know how to fix "Broken pipe issue"? Will be happy to get any your help or advises. Thanks in advance.
Related
Here is the http-livestream setup: The server is running ffmpeg with the DASH protocol and h264 encoding. The client is using Dash.js. Resolution is fixed to 1920x1080, with 24 bit depth, and 60hz.
The artefacting (image below) is only present when the last row of the video is within chrome viewport (so it disapears if the page is scrolled up). It manifests itself as stretching of the center row of pixels downwards, and appears to only affect some color channels.
I have attempted changing the bitrate, and cutting the last row from the source, thinking the issue could be on the server side, without any impact. The fact that the issue depends on the position in the viewport makes me suspect a glitch in chrome itself.
I have also attempted to force hardware decoding off in chrome:\flags and it does not solve the issue.
Please submit your hypothesis on what could be the cause of this issue. Thanks.
Update #1
Here is the ffmpeg command line and logs:
export DISPLAY=:0 && ffmpeg -f x11grab -framerate 60 -video_size 1920x1080 -i :0.0+0,0 -draw_mouse 0 -f dash -utc_timing_url https://time.akamai.com/?iso -streaming 1 -seg_duration 2 -frag_duration 0.033 -fflags nobuffer -fflags flush_packets -c:v h264 -preset ultrafast data/stream.mpd
And the logs:
ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=/usr --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[x11grab # 0x561ca34b9980] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, x11grab, from ':0.0+0,0':
Duration: N/A, start: 1618941693.853256, bitrate: N/A
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 60 fps, 1000k tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 # 0x561ca34c5300] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 # 0x561ca34c5300] profile High 4:4:4 Predictive, level 4.2, 4:4:4 8-bit
[libx264 # 0x561ca34c5300] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=6 threads=6 lookahead_threads=1 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=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
[dash # 0x561ca34c3740] No bit rate set for stream 0
[dash # 0x561ca34c3740] Opening 'data/init-stream0.m4s' for writing
Output #0, dash, to 'data/stream.mpd':
Metadata:
encoder : Lavf58.29.100
Stream #0:0: Video: h264 (libx264), yuv444p, 1920x1080, q=-1--1, 60 fps, 15360 tbn, 60 tbc
Metadata:
encoder : Lavc58.54.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
[dash # 0x561ca34c3740] Opening 'data/chunk-stream0-00001.m4s.tmp' for writing
frame= 34 fps=0.0 q=15.0 size=N/A time=00:00:00.43 bitrate=N/A dup=5 drop=0 speed=0.836x
frame= 65 fps= 64 q=15.0 size=N/A time=00:00:00.95 bitrate=N/A dup=5 drop=0 speed=0.929x
frame= 96 fps= 62 q=15.0 size=N/A time=00:00:01.46 bitrate=N/A dup=5 drop=2 speed=0.955x
frame= 126 fps= 62 q=15.0 size=N/A time=00:00:01.96 bitrate=N/A dup=5 drop=3 speed=0.962x
frame= 157 fps= 62 q=15.0 size=N/A time=00:00:02.48 bitrate=N/A dup=5 drop=3 speed=0.973x
frame= 188 fps= 61 q=15.0 size=N/A time=00:00:03.00 bitrate=N/A dup=5 drop=3 speed=0.98x
frame= 217 fps= 61 q=15.0 size=N/A time=00:00:03.48 bitrate=N/A dup=5 drop=3 speed=0.977x
frame= 247 fps= 61 q=15.0 size=N/A time=00:00:03.98 bitrate=N/A dup=6 drop=3 speed=0.976x
[dash # 0x561ca34c3740] Opening 'data/stream.mpd.tmp' for writing
[dash # 0x561ca34c3740] Opening 'data/chunk-stream0-00002.m4s.tmp' for writing
frame= 279 fps= 61 q=15.0 size=N/A t
Add the -vf format=yuv420p output option for YUV 4:2:0 chroma subsampling. This is the only widely supported chroma subsampling scheme for H.264.
Your input pixel format is bgr0. Your output is yuv444p. ffmpeg tries to preserve as much fidelity as it can so it auto converts it to a pixel format supported by the selected encoder that most resembles the source. In this case it is yuv444p (YUV 4:4:4) which is not universally supported.
I'm using ffmpeg to capture the activity of chrome (thanks to chrome driver) and record it into an mp4 file. However, the memory consumed by ffmpeg is quickly blowing up, and after a minute or so my 8GB of memory get saturated and I have to reboot the PC.
Unbuntu 16.0
ALSA loopback (installed by modprobe snd-aloop)
ffmpeg version 4.2.2-1ubuntu1~16.04.york0
This is the command line to ffmpeg:
ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -thread_queue_size 4096
-i :0.0+0,0 -f alsa -thread_queue_size 4096 -i plug:cloop -acodec aac -strict -2 -ar 44100
-c:v libx264 -preset veryfast -profile:v main -level 3.1 -pix_fmt yuv420p -r 30
-crf 25 -g 60 -tune zerolatency -f mp4 file.mp4
If I remove all the sound input (-i plug:cloop -acodec aac -strict -2 -ar 44100) then the memory is OK, stable, but the file generated can't be played with VLC or media player.
The logs from ffmpeg looks normal to me:
root$ ffmpeg -rtbufsize 15M -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -thread_queue_size 4096 -i :0.0+0,0 -f alsa -thread_queue_size 4096 -i hw:0 -acodec ac3_fixed -strict -2 -ar 44100 -c:v libx264 -preset veryfast -profile:v main -level 3.1 -pix_fmt yuv420p -r 30 -crf 25 -g 60 -tune zerolatency -f mp4 /tmp/recordings/stuff.mp4
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Input #0, x11grab, from ':0.0+0,0':
Duration: N/A, start: 1587042601.295126, bitrate: N/A
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x720, 30 fps, 30 tbr, 1000k tbn, 30 tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:0':
Duration: N/A, start: 1587042601.304179, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
[libx264 # 0x928ee0] using cpu capabilities: MMX2 SSE Cache64
[libx264 # 0x928ee0] profile Main, level 3.1
Output #0, mpegts, to '/tmp/recordings/stuff.ts':
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: h264 (libx264), yuv420p, 1280x720, q=-1--1, 30 fps, 90k tbn, 30 tbc
Metadata:
encoder : Lavc56.60.100 libx264
Stream #0:1: Audio: ac3 (ac3_fixed), 44100 Hz, stereo, s16p, 192 kb/s
Metadata:
encoder : Lavc56.60.100 ac3_fixed
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> ac3 (ac3_fixed))
Press [q] to stop, [?] for help
frame= 7 fps=0.0 q=21.0 size= 5kB time=00:00:00.23 bitrate= 180.5kbits/s frame= 15 fps= 15 q=21.0 size= 15kB time=00:00:00.50 bitrate= 240.6kbits/s frame= 21 fps= 14 q=21.0 size= 21kB time=00:00:00.70 bitrate= 249.2kbits/s frame= 28 fps= 14 q=21.0 size= 28kB time=00:00:00.93 bitrate= 246.5kbits/s frame= 35 fps= 13 q=21.0 size= 35kB time=00:00:01.16 bitrate= 244.9kbits/s frame= 42 fps= 13 q=21.0 size= 44kB time=00:00:01.40 bitrate= 260.0kbits/s frame= 49 fps= 13 q=21.0 size= 51kB time=00:00:01.63 bitrate= 256.9kbits/s frame= 56 fps= 13 q=21.0 size= 58kB time=00:00:01.86 bitrate= 254.6kbits/s frame= 63 fps= 13 q=22.0 size= 66kB time=00:00:02.10 bitrate= 255.7kbits/s frame= 70 fps= 13 q=21.0 size= 75kB time=00:00:02.33 bitrate= 263.0kbits/s frame= 77 fps= 13 q=21.0 size= 82kB time=00:00:02.56 bitrate= 261.3kbits/s frame= 79 fps= 13 q=21.0 Lsize= 85kB time=00:00:02.63 bitrate= 264.4kbits/s
video:8kB audio:61kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 22.604090%
[libx264 # 0x928ee0] frame I:2 Avg QP: 5.10 size: 760
[libx264 # 0x928ee0] frame P:77 Avg QP: 6.78 size: 88
[libx264 # 0x928ee0] mb I I16..4: 99.9% 0.0% 0.1%
[libx264 # 0x928ee0] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0% skip:100.0%
[libx264 # 0x928ee0] coded y,uvDC,uvAC intra: 0.0% 0.1% 0.0% inter: 0.0% 0.0% 0.0%
[libx264 # 0x928ee0] i16 v,h,dc,p: 91% 0% 9% 0%
[libx264 # 0x928ee0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 0% 0% 100% 0% 0% 0% 0% 0% 0%
[libx264 # 0x928ee0] i8c dc,h,v,p: 98% 2% 0% 0%
[libx264 # 0x928ee0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 # 0x928ee0] kb/s:25.23
Exiting normally, received signal 2.
This is my .asoundrc file.
# playback PCM device: using loopback subdevice 0,0
pcm.amix {
type dmix
ipc_key 219345
slave.pcm "hw:Loopback,0,0"
}
# capture PCM device: using loopback subdevice 0,1
pcm.asnoop {
type dsnoop
ipc_key 219346
slave.pcm "hw:Loopback,0,1"
}
# duplex device combining our PCM devices defined above
pcm.aduplex {
type asym
playback.pcm "amix"
capture.pcm "asnoop"
}
# ------------------------------------------------------
# for jack alsa_in and alsa_out: looped-back signal at other ends
pcm.ploop {
type plug
slave.pcm "hw:Loopback,1,1"
}
pcm.cloop {
type dsnoop
ipc_key 219348
slave.pcm "hw:Loopback,1,0"
}
# ------------------------------------------------------
# default device
pcm.!default {
type plug
slave.pcm "aduplex"
}
I'm not sure how to debug this kind of issue, any idea why the memory blow up so fast like that ?
I am experiencing an issue while playing media on my application. I am using html5 player which works fine on another browser but the media not worked on Google Chrome. Below is the ffmpeg output.
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sources-5a6b388fb093f.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2017-10-31T01:45:10.000000Z
Duration: 00:04:55.72, start: 0.000000, bitrate: 10300 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 9975 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
Metadata:
creation_time : 2017-10-31T01:45:10.000000Z
handler_name : Alias Data Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2017-10-31T01:45:10.000000Z
handler_name : Alias Data Handler
The issue is replicable on Windows, Linux/Ubuntu and Mac on Google Chrome browser.
UPDATED:
render_id: 56
player_id: 0
origin_url: https://example.com/
frame_url: https://example.com/node/83810
frame_title:
url: https://example.com/sites/default/files/sources-5a6b388fb093f.mp4
total_bytes: 380754023
streaming: false
single_origin: true
passed_cors_access_check: false
range_header_supported: true
pipeline_state: kStopped
info: Selected FFmpegVideoDecoder for video decoding, config: codec: h264 format: 1 profile: h264 main coded size: [1920,1080] visible rect: [0,0,1920,1080] natural size: [1920,1080] has extra data? true encryption scheme: Unencrypted rotation: 0°
audio_channels_count: 2
audio_codec_name: aac
audio_sample_format: Float 32-bit planar
audio_samples_per_second: 48000
bitrate: 10300299
found_audio_stream: true
found_video_stream: true
height: 1080
max_duration: 295.722667
start_time: 0
time_base: 1/60000
video_codec_name: h264
video_format: PIXEL_FORMAT_I420
video_is_encrypted: false
width: 1920
audio_dds: false
audio_decoder: FFmpegAudioDecoder
video_dds: false
video_decoder: FFmpegVideoDecoder
audio_buffering_state: BUFFERING_HAVE_ENOUGH
video_buffering_state: BUFFERING_HAVE_ENOUGH
for_suspended_start: false
pipeline_buffering_state: BUFFERING_HAVE_ENOUGH
duration: 295.722667
event: PAUSE
error: video decode error
pipeline_error: PIPELINE_ERROR_DECODE
Added chrome Player Properties for specific media.
I am trying to encode a video to use in the HTML5 video-Element. However, it doesn't work in IE Edge on my PC. It does, however, work on:
Chrome, Firefox
My android smartphone (Chrome, Firefox)
I have two very similar files (one being the big bucks bunny trailer, the second being the video I'm trying to encode):
Picture: Encoding-Settings
As you can see "1.mp4" is playing correctly, and "3.mp4" is not.
You can download the files here: 3.mp4 - change 3.mp4 to 1.mp4 to get the other video.
My ffmpeg-commandline is this:
ffmpeg.exe -i in.mp4 -c:v libx264 -movflags faststart -profile:v baseline -level 3.1 -preset slower -crf 30 -c:a copy 3.mp4
However, I have also tried:
ffmpeg.exe -i in.mp4 -c:v libx264 -profile:v baseline -level 3.1 -preset slower -crf 30 -c:a copy 3.mp4
and
ffmpeg.exe -i in.mp4 -c:v libx264 -preset slower -crf 30 -c:a copy 3.mp4
The output of ffprobe of the result is (for the file that works):
$ ffprobe.exe 1.mp4
ffprobe version N-81045-g450cf40 Copyright (c) 2007-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --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-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --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. 28.100 / 55. 28.100
libavcodec 57. 50.100 / 57. 50.100
libavformat 57. 42.100 / 57. 42.100
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 47.100 / 6. 47.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.12.102
Duration: 00:00:33.05, start: 0.000000, bitrate: 891 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 512x288, 770 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
and for the file that doesn't work:
$ ffprobe.exe 3.mp4
ffprobe version N-81045-g450cf40 Copyright (c) 2007-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --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-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --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. 28.100 / 55. 28.100
libavcodec 57. 50.100 / 57. 50.100
libavformat 57. 42.100 / 57. 42.100
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 47.100 / 6. 47.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '3.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.42.100
Duration: 00:00:13.10, start: 0.000000, bitrate: 2317 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2143 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 163 kb/s (default)
Metadata:
handler_name : SoundHandler
Can anyone point me in the right direction what the difference between the two videos is and how I can fix my ffmpeg command-line to play "3.mp4" in IE Edge?
3.mp4 doesn't work here in Firefox, but if I re-encode the audio, it works:
ffmpeg -i 3.mp4 -c:v copy -movflags +faststart 3new.mp4
As the title says, I'm having issues with converted videos that are over 30s. They are not playing in chrome but they do work in all other browsers. The thing is, if the video is less than 30s than it plays fine in chrome too.
The input file is mpeg4 encoded and I'm trying to convert it using the h264 codec. The conversion is done on a linux server with the help of a drupal module which converts the video on upload automatically.
This is the command and output:
/opt/ffmpeg/ffmpeg -i '/var/www/html/website/videos/original/2016-02-02-16-52-44-758_1.mp4' -strict experimental -vcodec 'libx264' -pix_fmt 'yuv420p' -vprofile 'baseline' -an -pass '1' -passlogfile '/tmp/1454496233-56b1d9e99deb8-multipass' -y /tmp/1454496233-56b1d9e99dd6f.mp4
ffmpeg version N-61041-g52a2138 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 2 2014 05:45:04 with gcc 4.6 (Debian 4.6.3-1)
configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/html/website/videos/original/2016-02-02-16-52-44-758_1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf56.40.101
Duration: 00:00:54.42, start: 0.000000, bitrate: 840 kb/s
Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 839 kb/s, 24 fps, 24 tbr, 12288 tbn, 24 tbc (default)
Metadata:
handler_name : VideoHandler
[libx264 # 0x38799c0] using SAR=1/1
[libx264 # 0x38799c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
[libx264 # 0x38799c0] profile Constrained Baseline, level 3.1
[libx264 # 0x38799c0] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=1:0:0 analyse=0x1:0 me=dia subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/tmp/1454496233-56b1d9e99dd6f.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf55.33.100
Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, pass 1, 12288 tbn, 24 tbc (default)
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 -> libx264)
Press [q] to stop, [?] for help
frame= 129 fps=0.0 q=28.0 size= 298kB time=00:00:03.41 bitrate= 715.2kbits/s
frame= 268 fps=267 q=28.0 size= 784kB time=00:00:09.20 bitrate= 697.3kbits/s
frame= 409 fps=271 q=28.0 size= 1313kB time=00:00:15.08 bitrate= 712.9kbits/s
frame= 547 fps=272 q=28.0 size= 1744kB time=00:00:20.83 bitrate= 685.8kbits/s
frame= 687 fps=274 q=28.0 size= 2275kB time=00:00:26.66 bitrate= 699.0kbits/s
frame= 827 fps=275 q=28.0 size= 2754kB time=00:00:32.50 bitrate= 694.1kbits/s
frame= 967 fps=275 q=28.0 size= 3273kB time=00:00:38.33 bitrate= 699.4kbits/s
frame= 1106 fps=275 q=28.0 size= 3826kB time=00:00:44.12 bitrate= 710.2kbits/s
frame= 1245 fps=276 q=28.0 size= 4366kB time=00:00:49.91 bitrate= 716.6kbits/s
frame= 1306 fps=268 q=-1.0 Lsize= 4762kB time=00:00:54.41 bitrate= 716.8kbits/s
video:4756kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.125035%
[libx264 # 0x38799c0] frame I:6 Avg QP:17.10 size: 43459
[libx264 # 0x38799c0] frame P:1300 Avg QP:20.34 size: 3545
[libx264 # 0x38799c0] mb I I16..4: 31.1% 0.0% 68.9%
[libx264 # 0x38799c0] mb P I16..4: 3.7% 0.0% 0.0% P16..4: 14.8% 0.0% 0.0% 0.0% 0.0% skip:81.5%
[libx264 # 0x38799c0] coded y,uvDC,uvAC intra: 29.2% 62.3% 14.8% inter: 3.4% 5.8% 0.4%
[libx264 # 0x38799c0] i16 v,h,dc,p: 58% 22% 17% 2%
[libx264 # 0x38799c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 59% 24% 8% 1% 1% 1% 2% 1% 2%
[libx264 # 0x38799c0] i8c dc,h,v,p: 36% 14% 47% 3%
[libx264 # 0x38799c0] kb/s:715.83
I also tried with the latest version of ffmpeg but I have the same problem.
Does anyone have any ideas on why this is happening?
Note that this is a log from doing a two-pass encoding (it was the only way to get a log from drupal). The two-pass encoding works if I specify a bitrate in the ffmpeg command, but as I said, it doesn't work on chrome but works on all other browsers.
The solution was to add qt-faststart as a helper program in drupal's UI.
Go to Configuration>Media>Video, expand Helper Programs and put the path to qt-faststart there. It should be in your ffmpeg binary folder.