Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 5 years ago.
Improve this question
I am trying to use ffmpeg's built-in x265 library to process .VOB files through h.265codec.
What I understood from the ffmpeg documentation was that:
-c:v libx265 tells ffmpeg to use the h.265 codec for video streams
-x265-params passes options to x265 encoder instead of ffmpeg
But whenever try to run the command, ffmpeg doesn't seem to recognize/pass the options to x265.
It gives the error
Unrecognized option '-y4m'.
Error splitting the argument list: Option not found
Why is this?
Here's the command (edited spacing):
C:\ffmpeg (20170123-e371f03-win64-static)\bin>
ffmpeg -i concat:'input1.VOB'\'input.VOB'
-map 0:v -map 0:a -r 24000/1001 -f yuv4mpegpipe
-c:v libx265 -x265-params
--y4m --fps 24000/1001 -p veryslow --open-gop --bframes 16
--b-p yramid --bitrate 2500 --rect --amp --aq-mode 3 --no-sao --qcomp 0.75
--no-strong -intra-smoothing --psy-rd 1.6 --psy-rdoq 5.0 --rdoq-level 1
--tu-inter-depth 4 --tu-intra-depth 4 --ctu 32 --max-tu-size 16 --pass 1
--slow-firstpass --stats v. stats --sar 1 --range full 'E:\output.hevc'
ffmpeg version N-83195-ge371f03 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --e
nable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --
enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-li
bfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug -
-enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enabl
e-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li
bsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolam
e --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 --ena
ble-zlib
libavutil 55. 44.100 / 55. 44.100
libavcodec 57. 75.100 / 57. 75.100
libavformat 57. 63.100 / 57. 63.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 69.100 / 6. 69.100
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Unrecognized option '-y4m'.
Error splitting the argument list: Option not found
That's not the correct syntax. Use
-x265-params "y4m=1:fps=24000/1001:p=veryslow:...."
"--y4m" is not a param of x265. in the first place, it should not be there. it is the container for the output that is going into the yuv4mpegpipe. In your syntax, the error there is your codec. x265 don't any idea what yuv4mpegpipe is...
ffmpeg -i concat:'input1.VOB'\'input.VOB'
-map 0:v -map 0:a -r 24000/1001 -f yuv4mpegpipe
-c:v libx265(remove this)-x265-params(remove this)and change it to this "yuv4" -o "input1.VOB.output.y4m"
write this b4 x265-params after erasing --y4m
ffmpeg.exe -i "input1.VOB.output.y4m"<<-this is the output file that went into the yuv4mpegpipe that you want converted to HEVC)(y4m is like mp4 mkv avi mov) --c:v libx265 --x265-params -->>> --y4m --fps 24000/1001 -p veryslow --open-gop --bframes 16
--b-pyramid --bitrate 2500 --rect --amp --aq-mode 3 --no-sao --qcomp 0.75
--no-strong-intra-smoothing --psy-rd 1.6 --psy-rdoq 5.0 --rdoq-level 1
--tu-inter-depth 4 --tu-intra-depth 4 --ctu 32 --max-tu-size 16 --pass 1
--slow-firstpass --stats v. stats --sar 1 --range full 'E:\output.hevc'
if I were to write this, it goes like:
ffmpeg.exe -i concat:'input1.VOB'\'input.VOB' --map 0,1 --c:v yuv4 --s 3840x2160 --r 24000/1001 --f yuv4mpegpipe --pix-fmt yuv444p16le -o "output-yuv444p16le.y4m"
ffmpeg.exe -i "yuv444p16le.y4m" --fps 24000/1001 --p veryslow --c:v libx265 --x265-params --open-gop --bframes 16 --b-pyramid --bitrate 2500 --rect --amp --aq-mode 3 --no-sao --qcomp 0.75 --no-strong-intra-smoothing --psy-rd 1.6 --psy-rdoq 5.0 --rdoq-level 1 --tu-inter-depth 4 --tu-intra-depth 4 --ctu 32 --max-tu-size 16 --pass 1 --slow-firstpass --stats v. stats --sar 1 --range full -o E:\output_yuv444p16le.hevc'
Related
I've just switched to Windows 10 Pro.
When I open a shell to use ffmpeg, any time I use an option with a colon I get an error.
for example:
ffmpeg -thread_queue_size 4096 -r 24 -i uncompressed.mov -c:v libx264 -b:v 40m -profile:v main -crf 31 -pix_fmt yuv420p -c:a aac -b:a 192K -strict -2 -vf eq=saturation=1.3 compressed_31.mp4
gives:
[NULL # 0000023184ac8c40] Unable to find a suitable output format for 'libx264'
libx264: Invalid argument
if I get rid of -c:v libx264, then I get the same error with '40m', or with 'main' etc... so it's always trying to read the argument after an option with a colon as the output file.
Is this a windows thing? All my commands work fine in a mac terminal.
I assume the answer is simple. Apologies for my ignorance. Feels like I'm misunderstanding the windows shell or ffmpeg on windows.
I'm encoding with ffmpeg and my audio bitrate varies somewhat, even tho I'm using -b:a 224K it differs with +-1 or 2 kb/s in the finished product. Is there a way to set a strict bitrate? My OCD made me write this post.
Here is my encoding parameters:
-c:v libx264 -preset fast -profile:v high -level 4.0 -crf 23 -x264opts cabac=1:ref=4:vbv_maxrate=15000:vbv_bufsize=31250 -coder 1 -pix_fmt yuv420p -r 24000/1001 -use_editlist 0 -movflags +faststart -g 30 -bf 2 -map 0:1 -map 0:2 -map 0:3 -c:a aac -b:a 224K -ar 48K -ac 2 -profile:a aac_low
I'm working on a project to potentially simplify some of the process to send video to something like Facebook Live.
Right now I'm using this example with a FB Live API RTMP endpoint (neither of these are production or real development commands - by using this example I think I can figure out the limitations of what I'm doing in others):
-i - -map 0 -c:v libx264 -c:a aac -muxrate 1000k -bufsize 2000k -g 50 -f tee "rtmp://rtmp-api.facebook.com:80/rtmp/10104590177564330?ds=1&s_e=4&s_l=1&a=ATgko8JiGpXC0WGf"
Here's the original example:
$ ffmpeg -i input -map 0 -c:v libx264 -c:a aac -bufsize 2000k -g 50 -f tee \ "[f=flv:onfail=ignore]rtmp://facebook|[f=flv:onfail=ignore]rtmp://youtube|local_file.mkv"
However, despite using that example I'm getting:
[NULL # 0xffd840] Unable to find a suitable output format for 'pipe:'
pipe:: Invalid argument
I understand that sometimes this error arises due to spacing issues or incorrect syntax. I've looked around to try to resolve this problem and using many combinations does not change the result.
Thanks!
Edit - Log added:
configuration: --cc=emcc --prefix=/Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist --extra-cflags='-I/Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist/include -v' --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic --disable-ffplay --disable-ffprobe --disable-ffserver --disable-asm --disable-doc --disable-devices --disable-pthreads --disable-w32threads --disable-network --disable-hwaccels --disable-parsers --disable-bsfs --disable-debug --disable-protocols --disable-indevs --disable-outdevs --enable-protocol=file --enable-libvpx --enable-gpl --extra-libs='/Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist/lib/libx264.a /Users/bgrinstead/Sites/videoconverter.js/build/ffmpeg/../dist/lib/libvpx.a'
It specifically fails here:
.../
libavutil 52. 66.100 / 52. 66.100
I have been using ffmpeg to convert a sequence of jpegs to a video using the following syntax:
ffmpeg.exe -f image2 -i image_%05d.png -vcodec mpeg4 -b 800k video.mpg
It doesn't work:
C:\Documents and Settings\Atelier\Mes documents\dev\projets\emptycanvas\testresu
lt\objets\starbuck.tests.TestAnimationSphereInterieur>"c:\Documents and Settings
\Atelier\Mes documents\Téléchargements\ffmpeg-20120608-git-718607b-win32-static\
bin\ffmpeg.exe" -f image2 -i image_%05d.png -vcodec mpeg4 -b 800k video.mpg
ffmpeg version N-41416-g718607b Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 8 2012 12:46:19 with gcc 4.6.3
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass
--enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable
-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libope
njpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libth
eora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
libvorbis --enable-libvpx --ena libavutil 51. 56.100 / 51. 56.100
libavcodec 54. 25.100 / 54. 25.100
libavformat 54. 6.101 / 54. 6.101
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 78.101 / 2. 78.101
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
image_%05d.png: No such file or directory
On Windows XP...
been using ffmpeg to convert a sequence of jpegs
...
-i image_%05d.png
...
image_%05d.png: No such file or directory
You might have better luck with -i image_%05.jpg. That will input images named image_00001.jpg, image_00002.jpg, image_00003.jpg, etc.
Problem is that the window shell expands the %05d. You can prevent that by doubling the %
ffmpeg.exe -f image2 -i image_%%05d.png -vcodec mpeg4 -b 800k video.mpg
I have just finished installing ffmpeg on my centOS server using the below link:
http://www.ultratechhost.com/forums/thread-122.html -> Method 1\
phpinfo() reports that ffmpeg has been successfully installed and i also see the ffmpeg section in phpinfo.
But when I try to encode I get an error. Please try and shed some light what the problem is and what the solution could be.
The command and the error is as follows:
ffmpeg -i greenlantern.mov green1.flv
FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
built on Dec 4 2010 15:35:31 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / 52.72. 2
libavformat 52.64. 2 / 52.64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.19. 0 / 1.19. 0
libswscale 0.11. 0 / 0.11. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mov,mp4,m4a,3gp,3g2,mj2 # 0x1ea4e8b0]Estimating duration from bitrate, this may be inaccurate
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'greenlantern.mov':
Duration: N/A, bitrate: N/A
Output #0, flv, to 'green1.flv':
Output file #0 does not contain any stream
Is this file DRM protected by any chance? If so, converting probably won't work.
It looks like this is a problem with the file, rather than a problem with ffmpeg.