I want to convert a bunch of photos into a video with crossfade between them. The number of photos I am converting is variable
I am using the code from HERE to apply the crossfade:
Since the number of photos are variable I looped over all the photos in the directory and generated the -loop and also the second part ([0:v]fade=t=out:st=4:d=1[v0];):
for i in range(os.listdir('photos')):
if i == 0:
text += f'\n-loop 1 -t 60 -i photos/Image{i+1}.jpg \\\n'
text2 = '\n[0:v]fade=t=out:st=4:d=1[v0]; \\\n'
else:
text += f'-loop 1 -t 60 -i photos/Image{i+1}.jpg \\\n'
text2 += f' [{i}:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v{i}]; \\\n'
#And the Subprocess part
command = f'ffmpeg \
{text} \
-filter-complex \
{text2} -map "[v]" video/out.mp4'
p = subprocess.call(command, shell=True)
But this thing didn't create any video but said this:
Use -h to get full help or, even better, run 'man ffmpeg'
The full output:
ffmpeg version git-2019-11-11-20c5f4d Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20191010
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. 35.101 / 56. 35.101
libavcodec 58. 61.100 / 58. 61.100
libavformat 58. 34.101 / 58. 34.101
libavdevice 58. 9.100 / 58. 9.100
libavfilter 7. 66.100 / 7. 66.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
Related
I do not have much expertise. I have been trying to convert a 240 jpeg long sequence (in a folder named plane) in to a 24fps mp4 file. each file is named 0001.jpeg , 0002.jpeg and so on.
I have tried this
ffmpeg -framerate 24 -i C:\Desktop\plane\image%4d.jpg output.mp4 and some variations on that but nothing seems to work.
the above command results in this
C:\Users\username>ffmpeg -framerate 24 -i C:\Desktop\plane\image%4d.jpg output.mp4
ffmpeg version 2022-07-31-git-1368b5a725-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 57. 30.100 / 57. 30.100
libavcodec 59. 40.100 / 59. 40.100
libavformat 59. 29.100 / 59. 29.100
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 46.101 / 8. 46.101
libswscale 6. 8.101 / 6. 8.101
libswresample 4. 8.100 / 4. 8.100
libpostproc 56. 7.100 / 56. 7.100
[image2 # 0000018847e4d500] Could find no file with path 'C:\Desktop\plane\image%4d.jpg' and index in the range 0-4
C:\Desktop\plane\image%4d.jpg: No such file or directory
Any help will be greatly appreciated
I am attempting to write a script that takes a photo every 3 seconds from camera source "1", the -pix_fmt I think is unique to my USB camera.
Here is the script:
#!/bin/bash
set -e
while :
do
nice_num=$(date +%s)
ffmpeg -ss 00:00:00 -f avfoundation -pix_fmt yuyv422 -r 30.000030 -i "1" -t 1 -frames:v 1 -q:v 2 "image_$nice_num_%03d.jpg"
wait
sleep 3
done
The issue is half the time it successfully takes the photo, and half the time it just hangs forever echoing this (not useful):
ffmpeg version 5.0.1 Copyright (c) 2000-2022 the FFmpeg developers
built with Apple clang version 13.1.6 (clang-1316.0.21.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/5.0.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100
Then I CTRL-C 3 times and get:
^C^C^CReceived > 3 system signals, hard exiting
Other methods of "taking a photo every n seconds from bash" are also appreciated.
I try to convert a sequence of pictures to video file.
But I get from ffmpeg the response, that no such file or directory
Does someone have a solution for it?
My command line:
ffmpeg -r 1/5 -start_number 0 -i "C:\Users\USER\Desktop\Pictures\%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p C:\Users\USER\Desktop\Pictures\out.mp4
The error:
C:\Users\USER>ffmpeg -r 1/5 -start_number 0 -i "C:\Users\USER\Desktop\Pictures\%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p C:\Users\USER\Desktop\Pictures\out.mp4
ffmpeg version git-2020-05-01-39fb1e9 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200328
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-libsrt --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-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 43.100 / 56. 43.100
libavcodec 58. 82.100 / 58. 82.100
libavformat 58. 42.101 / 58. 42.101
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 80.100 / 7. 80.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
[image2 # 000002169186c440] Could find no file with path 'C:\Users\USER\Desktop\Pictures\%3d.png' and index in the range 0-4
C:\Users\USER\Desktop\Pictures\%3d.png: No such file or directory
The %3d means a file name with 3 digits (range 000 to 999).
solution A : You must rename your files as 001.png or 016.png (not as 1.png or 16.png).
solution B : Use %d to avoid needing zeroes (no renaming).
-i "C:\Users\USER\Desktop\Pictures\%d.png"
I'm working with headphone filter command from official documentation - https://ffmpeg.org/ffmpeg-filters.html#Examples-20
ffmpeg -i input.wav -lavfi-complex "amovie=azi_270_ele_0_DFC.wav[sr],amovie=azi_90_ele_0_DFC.wav[sl],amovie=azi_225_ele_0_DFC.wav[br],amovie=azi_135_ele_0_DFC.wav[bl],amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe],amovie=azi_35_ele_0_DFC.wav[fl],amovie=azi_325_ele_0_DFC.wav[fr],[a:0][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
output.wav
but I'm getting error
Unrecognized option 'lavfi-complex'.
Here is my ffmpeg version info -
ffmpeg -version
ffmpeg version N-92377-g0c6d4e7ba4 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181017
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --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-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 23.101 / 56. 23.101
libavcodec 58. 39.100 / 58. 39.100
libavformat 58. 22.100 / 58. 22.100
libavdevice 58. 6.100 / 58. 6.100
libavfilter 7. 43.100 / 7. 43.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Those examples are malformed. I've pushed the corrections, but here's the correct form:
ffmpeg -i input.wav -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
output.wav
I am attempting to add audio to a MP4 file using ffmpeg at a specific time, eventually I also want the audio to only play until a certain point, so if you can help with that also that would be great, otherwise if you can just assist me in figuring out what is causing this error.
The arguments I use
-y "E:\Documents\Content Bar/Photo Booth\PhotosDrop\2018-05-15 14-01-16OUT.mp4" -itsoffset -i "E:\Downloads\wetransfer-250b26\05 Call of Love.mp3" -map 0:0 -map 1:0 -c:v copy -shortest "E:\Documents\Content Bar\Photo Booth\PhotosDrop\2018-05-15 14-01-16OUTOUT.mp4"
This results in the following error:
ffmpeg version N-81646-gc19da0c Copyright (c) 2000-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-libopenh264 --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. 29.100 / 55. 29.100
libavcodec 57. 55.101 / 57. 55.101
libavformat 57. 48.103 / 57. 48.103
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 62.100 / 6. 62.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Output #0, mp4, to 'E:\Documents\Content Bar/Photo Booth\PhotosDrop\2018-05-15 14-01-16OUT.mp4':
Output file #0 does not contain any stream
Okay so I figured it out using the following command
-i "E:\Documents\Content Bar/Photo Booth\PhotosDrop\2018-05-15 14-01-16OUT.mp4" -i "E:\Downloads\wetransfer-250b26\05 Call of Love.mp3" -filter_complex "[1]atrim=end=20,asetpts=PTS-STARTPTS[aud1];[aud1]adelay=6000|6000[aud];[0][aud]amix" -c:v copy out.mp4