Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
Sync video only streaming using pts
26 février 2014, par user2846108I am using ffmpeg for streaming video alone (no audio) and SDL 2.0 for display. So far, I have decoded the packets as soon as they arrive and present it to the renderer. But I would like to display the video frames by syncing with PTS value so that the receiver does not go out of sync with the sender (Since I am streaming real time video over RTSP). I have read dranger tutorial but I cannot understand it. My pseudo code looks like this:
//Create SDL window SDL_Window * window = SDL_CreateWindow("SDL", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, w, h, 0); //Create renderer for the window SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0); //Allocate frame frame = avcodec_alloc_frame(); //Read frame while (av_read_frame(format_context, &avpacket) >= 0) { if (avpacket.stream_index == videostream) { //Decode the frame avcodec_decode_video2(codec_context, frame, &frame_finished, &avpacket); if (frame_finished) { //update the YUV texture with the decoded frame (SDL_UpdateYUVTexture) //Copy the texture to the renderer (SDL_RendererCopy) //Present the rederer (SDL_RenderPresent) } //Handle SDL event SDL_PollEvent(&event) }
Can one help me how and where I can use PTS in the above code (a pseudo code is much better) and implement the synchronization between sender and receiver (such that if more packets are accumulated in the buffer, I should drop some packets so that latency between sender and receiver does not grow up as the time goes)?
Thanks in advance.
-
Debian Wheezy ffmpeg version 1.2.5 and OpenVC
26 février 2014, par user3135427I recently installed "ffmpeg version 1.2.5" from "deb ftp://ftp.deb-multimedia.org wheezy-backports main" on my Debian Wheezy.
I wrote some code with OpenCV and now I get the following error when I try to open a video.
[NULL @ 0x21e2ec0] Value 4613937818241073152.000000 for parameter 'thread_type' out of range [NULL @ 0x21e2ec0] Value -4616189618054758400.000000 for parameter 'request_sample_fmt' out of range [mov,mp4,m4a,3gp,3g2,mj2 @ 0x282d580] decoding for stream 0 failed [mov,mp4,m4a,3gp,3g2,mj2 @ 0x282d580] Could not find codec parameters (Video: h264 (avc1 / 0x31637661), 23069 kb/s) [IMGUTILS @ 0x7ffff1da3fd0] Picture size 0x0 is invalid [IMGUTILS @ 0x7ffff1da3fe0] Picture size 0x0 is invalid
-
FFMPEG options for video streaming
26 février 2014, par YorgZI am trying to use ffmpeg to stream video using ffserver. You will find below the ffserver1.conf file, and the log output from the ffmpeg command.
One of the errors references presets, and everytime I try to use presets I get the error "File not found, even after copying all the preset files in the current directory.
Thanks for the help.
YorgZ
FFSERVER CONF YorgZ-Macbook$cat ffserver1.conf Port 8090 BindAddress 0.0.0.0 MaxHTTPConnections 2000 MaxClients 1000 MaxBandwidth 4000 CustomLog -
File feed1.ffm FileMaxSize 1G ACL allow 127.0.0.1 ACL allow localhost ACL allow 10.0.0.0 10.0.255.255 Feed feed1.ffm Format mp4 VideoFrameRate 29.97 VideoBitRate 500 VideoSize 640x352 Format status ACL allow localhost ACL allow 10.0.0.0 10.0.255.255 YorgZ-Macbook$ FFMPEG COMMAND AND LOG YorgZ-Macbook$./ffmpeg -loglevel debug -i TestStream.mp4 -codec:v libx264 -b:v 500k -vf "scale=640:352" -r 29.97 -codec:a aac -b:a 128k http://127.0.0.1:8090/feed1.ffm ffmpeg version 2.1.3-tessus Copyright (c) 2000-2013 the FFmpeg developers built on Jan 16 2014 13:50:59 with llvm-gcc 4.2.1 (LLVM build 2336.1.00) configuration: --prefix=/Users/tessus/data/ext/ffmpeg/sw --as=yasm --extra-version=tessus --disable-shared --enable-static --disable-ffplay --enable-gpl --enable-pthreads --enable-postproc --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-fontconfig --enable-libfreetype --enable-libass --enable-libbluray --enable-filters --enable-runtime-cpudetect libavutil 52. 48.101 / 52. 48.101 libavcodec 55. 39.101 / 55. 39.101 libavformat 55. 19.104 / 55. 19.104 libavdevice 55. 5.100 / 55. 5.100 libavfilter 3. 90.100 / 3. 90.100 libswscale 2. 5.101 / 2. 5.101 libswresample 0. 17.104 / 0. 17.104 libpostproc 52. 3.100 / 52. 3.100 Splitting the commandline. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option '-i' ... matched as input file with argument 'TestStream.mp4'. Reading option '-codec:v' ... matched as option 'codec' (codec name) with argument 'libx264'. Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '500k'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'scale=640:352'. Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '29.97'. Reading option '-codec:a' ... matched as option 'codec' (codec name) with argument 'aac'. Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '128k'. Reading option 'http://127.0.0.1:8090/feed1.ffm' ... matched as output file. Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input file TestStream.mp4. Successfully parsed a group of options. Opening an input file: TestStream.mp4. [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] ISO: File Type Major Brand: mp42 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] File position before avformat_find_stream_info() is 33783 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] File position after avformat_find_stream_info() is 64138 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'TestStream.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2014-02-17 10:17:06 Duration: 00:01:40.10, start: 0.000000, bitrate: 582 kb/s Stream #0:0(und), 15, 1/30000: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 1001/60000, 483 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(und), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default) Metadata: creation_time : 2014-02-17 10:17:06 handler_name : IsoMedia File Produced by Google, 5-11-2011 Successfully opened the file. Parsing a group of options: output file http://127.0.0.1:8090/feed1.ffm. Applying option codec:v (codec name) with argument libx264. Applying option b:v (video bitrate (please use -b:v)) with argument 500k. Applying option vf (set video filters) with argument scale=640:352. Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 29.97. Applying option codec:a (codec name) with argument aac. Applying option b:a (video bitrate (please use -b:v)) with argument 128k. Successfully parsed a group of options. Opening an output file: http://127.0.0.1:8090/feed1.ffm. [ffm @ 0x102037200] Format ffm probed with size=2048 and score=101 [AVIOContext @ 0x101d04fe0] Statistics: 4096 bytes read, 0 seeks Mon Feb 24 11:53:05 2014 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 4175 Successfully opened the file. detected 8 logical cores [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'time_base' to value '1/44100' [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'sample_rate' to value '44100' [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'sample_fmt' to value 'fltp' [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'channel_layout' to value '0x3' [graph 0 input from stream 0:1 @ 0x101d05a20] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3 [audio format for output stream 0:0 @ 0x102d004e0] Setting 'sample_fmts' to value 's16' [audio format for output stream 0:0 @ 0x102d004e0] Setting 'sample_rates' to value '22050' [audio format for output stream 0:0 @ 0x102d004e0] Setting 'channel_layouts' to value '0x4' [audio format for output stream 0:0 @ 0x102d004e0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:0' [AVFilterGraph @ 0x101d03ea0] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed 0.500000 0.500000 [auto-inserted resampler 0 @ 0x102d00ca0] ch:2 chl:stereo fmt:fltp r:44100Hz -> ch:1 chl:mono fmt:s16 r:22050Hz [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'video_size' to value '640x360' [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'pix_fmt' to value '0' [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'time_base' to value '1/30000' [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'pixel_aspect' to value '1/1' [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'sws_param' to value 'flags=2' [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'frame_rate' to value '30000/1001' [graph 1 input from stream 0:0 @ 0x103b003a0] w:640 h:360 pixfmt:yuv420p tb:1/30000 fr:30000/1001 sar:1/1 sws_param:flags=2 [scaler for output stream 0:1 @ 0x103b00900] Setting 'w' to value '640' [scaler for output stream 0:1 @ 0x103b00900] Setting 'h' to value '352' [scaler for output stream 0:1 @ 0x103b00900] Setting 'flags' to value '0x4' [scaler for output stream 0:1 @ 0x103b00900] w:640 h:352 flags:'0x4' interl:0 [format @ 0x103b00dc0] compat: called with args=[yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16] [format @ 0x103b00dc0] Setting 'pix_fmts' to value 'yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16' [AVFilterGraph @ 0x102d00fc0] query_formats: 5 queried, 4 merged, 0 already done, 0 delayed [scaler for output stream 0:1 @ 0x103b00900] w:640 h:360 fmt:yuv420p sar:1/1 -> w:640 h:352 fmt:yuv420p sar:44/45 flags:0x4 [libx264 @ 0x102049800] broken ffmpeg default settings detected [libx264 @ 0x102049800] use an encoding preset (e.g. -vpre medium) [libx264 @ 0x102049800] preset usage: -vpre-vpre [libx264 @ 0x102049800] speed presets are listed in x264 --help [libx264 @ 0x102049800] profile is optional; x264 defaults to high Output #0, ffm, to 'http://127.0.0.1:8090/feed1.ffm': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : now Stream #0:0(und), 0, 1/1000000: Audio: aac (libvo_aacenc), 22050 Hz, mono, s16, 128 kb/s (default) Metadata: creation_time : 2014-02-17 10:17:06 handler_name : IsoMedia File Produced by Google, 5-11-2011 Stream #0:1(und), 0, 1/1000000: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x352 [SAR 44:45 DAR 16:9], 1001/30000, q=2-31, 500 kb/s, 1000k tbn, 29.97 tbc (default) Metadata: handler_name : VideoHandler Stream mapping: Stream #0:1 -> #0:0 (aac -> libvo_aacenc) Stream #0:0 -> #0:1 (h264 -> libx264) Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height [AVIOContext @ 0x101d04fe0] Statistics: 0 seeks, 0 writeouts [AVIOContext @ 0x101d03fa0] Statistics: 65536 bytes read, 0 seeks Mon Feb 24 11:53:05 2014 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 200 0 YorgZ-Macbook$ -
How to show audio bitrate or volume(in Db) information
26 février 2014, par pocThe ffmpeg only shows the video bitrate.How can I show the
audio bitrate
when I dump a streaming to fileffmpeg -i rtsp://172.19.1.40/live.sdp -acodec copy -vcodec copy export.avi
-
Compile ffmpeg on Ubuntu 13.10 with libfdk_aac
26 février 2014, par nitsujI tried this guide, but I have an error that permission is denied when I try to run a script from PHP using exec(). I think that this is because ffmpeg is in /root.
How can I install this where my PHP script can access it?