On windows I could do something like this to list input devices:
ffmpeg -list_devices true -f dshow -i dummy
On Linux I try doing something like this:
ffmpeg -list_devices true -f <x11grab/avfoundation>
And I get an error (I have also tried the latest git build from here):
ffmpeg version n4.2.4 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-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. 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
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Unrecognized option 'list_devices'.
Error splitting the argument list: Option not found
How can I list my input devices?
avfoundation is only available for Apple devices. x11grab is meant to capture X Window servers and does not have a list_devices option available.
Please take a look at Pulse Audio:
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/Clients/Samples/AsyncDeviceList/
Example:
pactl list sources
Other alternatives using alsa:
/proc/asound/cards
/proc/asound/devices
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 have found and downloaded the m3u8 file using the developer tools in Edge. However, it won't play directly in VLC.
I then downloaded all the segments referred to in the m3u8 file as well as the key and put them in the same folder as ffmpeg. The partial contents of the m3u8 file are:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="keyfile.txt",IV=0x00000000000000000000000000000001
#EXTINF:12,
seg-1-z.ts
#EXT-X-KEY:METHOD=AES-128,URI="keyfile.txt",IV=0x00000000000000000000000000000002
#EXTINF:12,
seg-2-z.ts
...
#EXT-X-KEY:METHOD=AES-128,URI="keyfile.txt",IV=0x0000000000000000000000000000013E
#EXTINF:8,
seg-318-z.ts
#EXT-X-ENDLIST
The keyfile.txt contents are: eyJwYXNzcGhyYXNlIjoiNjE0YjQ5NTYzYTdlYiIsImNpcGhlcnRleHQiOiJlamZOTWRSZjltY3Z4R1JRTFg2cVMralJJTmZaUGJyMXVyaFhhTVZ1QVptSUpXZVdYMkZLQ0t1Q0ZCYUQwY3FYIiwiaXYiOiIxZTNlNzg3ZjNjYmRlOGViZDdlZTBkNWVhZDA1NmEzNCIsInNhbHQiOiIwNjc3M2I1OWE1Y2IxZjA3ODdkYmEzZTAwYWZmNGIzNyJ9
This is what I get when I run ffmpeg:
C:\Test\download>ffmpeg -allowed_extensions ALL -i "play.m3u8" -c copy "test.ts"
ffmpeg version 2021-09-16-git-8f92a1862a-essentials_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 10.3.0 (Rev5, 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-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-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. 5.100 / 57. 5.100
libavcodec 59. 7.103 / 59. 7.103
libavformat 59. 5.100 / 59. 5.100
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 9.100 / 8. 9.100
libswscale 6. 1.100 / 6. 1.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
[hls # 000001c67608d140] Skip ('#EXT-X-VERSION:3')
[hls # 000001c67608d140] Opening 'keyfile.txt' for reading
[hls # 000001c67608d140] Opening 'crypto:seg-1-z.ts' for reading
[hls # 000001c67608d140] Error when loading first segment 'seg-1-z.ts'
play.m3u8: Invalid data found when processing input
Can anyone help? Thanks
I am trying to split a video from a URL.... this is my CMD command:
ffmpeg -i 'https://mediasite-ondemand.maastrichtuniversity.nl/MediasiteDeliver/ondemand/MP4Video/90e0ea3d-4087-4a3d-8a78-7acf7906c4cb.mp4?playbackTicket=fb14f2f3baf84412bc6463d4e312ec27&site=mediasite.maastrichtuniversity.nl' -ss 00:00:00 -t 0:25:00 -c copy SplicedVid.wav
Why does it return:
'site' is not recognized as an internal or external command,
operable program or batch file.
My version:
ffmpeg -version output:
ffmpeg version 4.3.1-2020-11-19-essentials_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.2.0 (Rev5, 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-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-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llv
m --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 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
Put the URL in quotes:
ffmpeg -i "https://mediasite-ondemand.maastrichtuniversity.nl/MediasiteDeliver/ondemand/MP4Video/90e0ea3d-4087-4a3d-8a78-7acf7906c4cb.mp4?playbackTicket=fb14f2f3baf84412bc6463d4e312ec27&site=mediasite.maastrichtuniversity.nl" -t 00:25:00 output.wav
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