Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
FFMPEG - Why can't i record a video for more than 10 seconds ?
12 février 2020, par gabrielI'm developing a screen recorder for windows with python but for some reason i can't record the video for more than 10 seconds.However i can record the audio for more than 10 seconds. Also i'm using:
FFMPEG - to record the video with mp4 extension
PYAUDIO - to record the sound
TKINTER - to design the GUI
Since the problem is with the video recording i will leave the code that i used with ffmpeg:
""" cmdGen.py generates ffmpeg commands to record your screen """ import os class cmdGen: def __init__(self): self.fps = 60 self.source = "desktop" self.encoder = 'mpeg4' self.hwaccel = None self.drawMouse = 1 self.enableWebcam = False self.audList = 0 def config(self, fps=None,source=None,encoder=None, hwaccel='unchanged',drawMouse=None, webcam=None,audList=None): if fps: self.fps = fps if source: self.source = source if encoder: self.encoder = encoder if hwaccel != 'unchanged': self.hwaccel = hwaccel if drawMouse: self.drawMouse = 0 if not self.drawMouse else 1 if webcam: self.enableWebcam = bool(webcam) if audList: self.audList = audList def setSource(self,isWindow,windowName=""): if not isWindow: self.source = "desktop" else: self.source = "title="+windowName def setFps(self,fps): self.fps = fps def setEncode(self,encoder): self.encoder = encoder def getCmd(self,filename): print("ACK") finalCmd = ["ffmpeg.exe","-f","gdigrab"] finalCmd.extend(['-i',self.source]) finalCmd.extend(['-framerate',str(self.fps)]) finalCmd.extend(['-c:v',self.encoder]) if self.encoder == 'mpeg4': finalCmd.extend(['-q:v','7']) if self.hwaccel: finalCmd.extend(['-hwaccel',self.hwaccel]) finalCmd.extend(['-draw_mouse',str(self.drawMouse)]) finalCmd.extend(["-y", filename]) print(finalCmd) return finalCmd def getCvtCmd(self,filename): # if self.rcchecked.get(): # self.mergeProcess = subprocess.Popen(args= ["ffmpeg","-i",'tmp/tmp.mkv','-i','tmp/tmp.wav','-i','tmp/webcamtmp.mkv','-filter_complex','[2:v] scale=640:-1 [inner]; [0:0][inner] overlay=0:0 [out]',"-shortest",'-map','[out]','-y',"ScreenCaptures/"+self.filename]) # else: # self.mergeProcess = subprocess.Popen(args= ["ffmpeg","-i",'tmp/tmp.mkv','-i','tmp/tmp.wav',"-shortest",'-y',"ScreenCaptures/"+self.filename], startupinfo=startupinfo) print("ACK") finalCmd = ["ffmpeg.exe"] finalCmd.extend(['-i','tmp/tmp.mkv']) for i in range(len(self.audList)): finalCmd.extend(['-i','tmp/tmp_'+str(i)+'.wav']) if len(self.audList) > 0: finalCmd.extend(['-filter_complex','amerge=inputs='+str(len(self.audList)),'-ac',str(len(self.audList))]) # finalCmd.extend(['-c:v',self.encoder]) if self.enableWebcam: finalCmd.extend(['-i','tmp/webcamtmp.mkv','-filter_complex','[2:v] scale=640:-1 [inner]; [0:0][inner] ' 'overlay=0:0 [out]','-map','[out]']) #finalCmd.extend(['-shortest']) finalCmd.extend(["-y", filename]) print(finalCmd) return finalCmd if __name__ == "__main__": cg = cmdGen() cg.setEncode("h264_nvenc") cg.setFps(60) cg.setSource(False) print(cg.getCmd("tmp"))
Thanks guys
Full log trying to record 1 minute :
C:\Users\FabianoFreitas\AppData\Local\Programs\Python\Python37\python.exe C:/Users/FabianoFreitas/Desktop/PowerShare-v2.0/screenRecorder.py ACK ['ffmpeg.exe', '-f', 'gdigrab', '-i', 'desktop', '-framerate', '60', '-c:v', 'mpeg4', '-q:v', '7', '-draw_mouse', '1', '-y', 'tmp/tmp.mkv'] * recording ACK ['ffmpeg.exe', '-i', 'tmp/tmp.mkv', '-i', 'tmp/tmp_0.wav', '-filter_complex', 'amerge=inputs=1', '-ac', '1', '-y', 'Videos/ScreenCapture24.mp4'] * done recording ffmpeg version git-2020-02-05-e6891d1 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.2.1 (GCC) 20200122 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 39.100 / 56. 39.100 libavcodec 58. 67.101 / 58. 67.101 libavformat 58. 37.100 / 58. 37.100 libavdevice 58. 9.103 / 58. 9.103 libavfilter 7. 74.100 / 7. 74.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, matroska,webm, from 'tmp/tmp.mkv': Metadata: ENCODER : Lavf58.37.100 Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: mpeg4 (Simple Profile), yuv420p, 2560x1080 [SAR 1:1 DAR 64:27], 29.97 fps, 29.97 tbr, 1k tbn, 30k tbc (default) Metadata: ENCODER : Lavc58.67.101 mpeg4 Guessed Channel Layout for Input Stream #1.0 : stereo Input #1, wav, from 'tmp/tmp_0.wav': Duration: 00:01:09.08, bitrate: 1411 kb/s Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s Stream mapping: Stream #1:0 (pcm_s16le) -> amerge (graph 0) amerge (graph 0) -> Stream #0:0 (aac) Stream #0:0 -> #0:1 (mpeg4 (native) -> h264 (libx264)) Press [q] to stop, [?] for help [Parsed_amerge_0 @ 00000218cb4c1640] No channel layout for input 1 [libx264 @ 00000218cb4acdc0] using SAR=1/1 [libx264 @ 00000218cb4acdc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 00000218cb4acdc0] profile High, level 5.0, 4:2:0, 8-bit [libx264 @ 00000218cb4acdc0] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 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=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 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 'Videos/ScreenCapture24.mp4': Metadata: encoder : Lavf58.37.100 Stream #0:0: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s Metadata: encoder : Lavc58.67.101 aac Stream #0:1: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 2560x1080 [SAR 1:1 DAR 64:27], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc (default) Metadata: encoder : Lavc58.67.101 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A [matroska,webm @ 00000218cb44af00] File ended prematurely frame= 297 fps=113 q=-1.0 Lsize= 2325kB time=00:01:09.07 bitrate= 275.8kbits/s dup=22 drop=0 speed=26.2x video:1713kB audio:591kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.900237% [aac @ 00000218cb4ab780] Qavg: 24995.135 [libx264 @ 00000218cb4acdc0] frame I:4 Avg QP:15.13 size:199596 [libx264 @ 00000218cb4acdc0] frame P:85 Avg QP:21.15 size: 9466 [libx264 @ 00000218cb4acdc0] frame B:208 Avg QP:24.93 size: 725 [libx264 @ 00000218cb4acdc0] consecutive B-frames: 5.1% 2.7% 6.1% 86.2% [libx264 @ 00000218cb4acdc0] mb I I16..4: 48.0% 45.3% 6.7% [libx264 @ 00000218cb4acdc0] mb P I16..4: 1.6% 1.9% 0.8% P16..4: 1.4% 0.4% 0.3% 0.0% 0.0% skip:93.7% [libx264 @ 00000218cb4acdc0] mb B I16..4: 0.1% 0.1% 0.0% B16..8: 3.0% 0.1% 0.0% direct: 0.0% skip:96.6% L0:51.2% L1:48.3% BI: 0.6% [libx264 @ 00000218cb4acdc0] 8x8 transform intra:44.4% inter:69.1% [libx264 @ 00000218cb4acdc0] coded y,uvDC,uvAC intra: 23.8% 27.4% 19.5% inter: 0.2% 0.3% 0.1% [libx264 @ 00000218cb4acdc0] i16 v,h,dc,p: 54% 45% 1% 0% [libx264 @ 00000218cb4acdc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 20% 41% 2% 2% 1% 2% 1% 5% [libx264 @ 00000218cb4acdc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 35% 17% 2% 3% 3% 4% 2% 4% [libx264 @ 00000218cb4acdc0] i8c dc,h,v,p: 61% 25% 11% 2% [libx264 @ 00000218cb4acdc0] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 00000218cb4acdc0] ref P L0: 68.0% 6.3% 16.6% 9.1% [libx264 @ 00000218cb4acdc0] ref B L0: 70.2% 23.7% 6.1% [libx264 @ 00000218cb4acdc0] ref B L1: 91.1% 8.9% [libx264 @ 00000218cb4acdc0] kb/s:1415.80
-
ffmpeg erorr as "video4linux2 Dequeued v4l2 buffer contains corrupted data (0 bytes). " when captured image,in beaglebone black,
12 février 2020, par Deepak Poulwhen i'm capturing a image using ffmpeg 4.2.1 in debian 9.5 of Beaglebone black its not showing this error as [video4linux2,v4l2 @ 0x2e0f1e0] Dequeued v4l2 buffer contains corrupted data (0 bytes). i used this command to capture image "ffmpeg -y -i /dev/video0 -ss 00:00:06 -vframes 1 image.jpg"
-
is that possible to serv hls and dash mpeg both at a time
12 février 2020, par Rahul Mactually i'm a kind a newbie to the Nginx RTMP server. I had setup my nginx.conf file to accept both hls and dash-mpeg. but the now problem is at a once I can able to serve either of the hls or dash-mpeg. so now my question is that possible to serve both hls and dash-mpeg at the same time for two different videos? I'm streaming video from OBS Studio.
here are my MPEG and hls code in nginx.conf filertmp { server { listen 1935; # Listen on standard RTMP port chunk_size 4000; application show { live on; # Turn on HLS hls on; hls_path /nginx/hls/; hls_fragment 3; hls_playlist_length 60; deny play all; } application dash { live on; dash on; dash_path /nginx/dash; } }
}
thank you advance.
-
PHP-FFMPeg Converts Video Twice
12 février 2020, par 127-0-0-1I'm using FFMpeg's library for PHP (see https://github.com/PHP-FFMpeg/PHP-FFMpeg). After starting the convert process, the converted video's file size gradually increases (I constantly refresh the folder) and after converting finishes, the file size becomes 0 again and converting starts again. So converting is done twice, I could not understand if it is normal or there is something wrong.
My converting code is:
require 'vendor/autoload.php'; $ffmpeg = FFMpeg\FFMpeg::create([ 'ffmpeg.binaries' => 'C:/ffmpeg/ffmpeg.exe', 'ffprobe.binaries' => 'C:/ffmpeg/ffprobe.exe', 'timeout' => 0 ]); $video = $ffmpeg->open($fileName); $video ->filters() ->resize(new FFMpeg\Coordinate\Dimension(1920, 1080 )) ->synchronize(); $format = new FFMpeg\Format\Video\X264('libmp3lame'); try { $video->save($format, $outFileName); } catch (Exception $e) { echo $e->getMessage(); }
-
how do surface blur to a video using FFMPEG common line ?
12 février 2020, par zuiluolike above two image , it is one frame of the video ,
origin video:https://youtu.be/Qmoc7VyX2f8
surface blur video:https://youtu.be/zbw1XVXjn4c
Is there a way to use FFMPEG common line do that , thank you very much