Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
ffmpeg force format when I using tcp protocol as output
22 janvier 2019, par Moein MohammadianI want to cut a video and start a tcp server with ffmpeg and a tcp client reads the cut video's content but I have to force a format.
ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -f mpeg2video tcp://127.0.0.1:8010?listen=1
If I don't specify a format I get an error
Unable to find a suitable output format for 'tcp://127.0.0.1:8010?listen=1'
but if I save cut video to a file I don't have to enter a format
ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 output.mp4
The problem is when I specify a format it takes more time to create cut video. Is there any way I don't specify format when I create a tcp server.
Basically I want to cut a video and send the cut video over tcp/ip as fast as I could.
-
muxing overhead when convert .wav to .ogg using ffmpeg
22 janvier 2019, par TwenteMasterI want to convert .wav file to .ogg file using ffmpeg, the command line order as follow:
ffmpeg.exe -acodec pcm_s16le -i audio.wav -acodec libvorbis audio.ogg
then it tells muxing overhead and the duration of the output .ogg is not right as well
Is anyone know the reason, thanks!
you can download the audio file that I used from here: audio.wav
-
Trying to change extension of filename on an ffmpeg script
22 janvier 2019, par prat67(first time posting a question here)
So I'm looking to write a ffmmpeg script to automate encoding my files to VP9. The problem I'm having is when I try to strip the extension and add a new one.
For example Demo.mp4
Should change to Demo.webm
I'm running this on a Ubuntu-16.04 (Server Non-GI Version) I've tried a few different ways to accomplish this (using google and other posts on StackOverflow) but I can't seem to make it work
This is the error I keep getting..
line 31: Demo.mp4+.vp9: syntax error: invalid arithmetic operator (error token is ".mp4+.vp9")
I've also commented (in the code below) where the syntax error is pointing to..
#!/bin/bash # Welcome Message clear printf "====================================\n" printf "FFMPEG Encoder\n" printf "(Using HDR-4k Profile)\n" printf "====================================\n\n" printf " Loading Files in Current Directory...\n\n" sleep 3s # Variables i=1 ext=".webm" vadd=4000000 vsub=2000000 # Iterate through files in current directory for j in *.{mp4,mkv}; do echo "$i.$j" file[i]=$j i=$(( i + 1 )) done # Select File & Bitrate printf "Enter file number\n" read fselect printf "${file[$fselect]}: Selected for encoding\n\n" printf "Enter Average Bitrate (Eg: 8000000)\n\n" read bselect # ***THIS IS WHERE THE PROBLEM IS*** # Prepare output file, strip trailing extension (eg .mkv) and add .webm ftemp1="${file[$fselect]}" ftemp2="${ftemp1::-4}" fout="$(($ftemp2+$ext))" printf "Output file will be: $fout" printf "Preparing to encode..." sleep 5s # Encode with User-Defined Parameters ffmpeg -y -report -i ${file[$fselect]} -b:v $bselect -speed 4 -pass 1 \ -pix_fmt yuv420p10le \ -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \ -maxrate "$(($bselect+$vadd))" -minrate "$(($bselect-$vsub))" \ -profile:v 2 -vcodec libvpx-vp9 -f webm /dev/null && \ ffmpeg -y -report -i ${file[$fselect]} -b:v $bselect -pass 2 \ -pix_fmt yuv420p10le \ -color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \ -maxrate "$(($bselect+$vadd))" -minrate "$(($bselect-$vsub))" \ -profile:v 2 -vcodec libvpx-vp9 \ $fout
I'm certain there is a much cleaner way to do this - but I'm not expecting help with that :P
My suspicion is that I'm trying to add two different types of variables? But I thought I defined them as strings..I could be wrong
Please Help... lol
-
FFMPEG intermittent failures reading live RTMP stream
22 janvier 2019, par stevendesuThe Command
I'm attempting to read a live RTMP stream and save the result to a file with the following command:
ffmpeg -re -rtmp_live live -y -i "rtmp://
/ / " -c copy -f flv /tmp/dump.flv I run this command then after 10-15 seconds I kill the process and check
/tmp/dump.flv
. I'm trying to do this for stream diagnostic purposes (determine the encoding, bitrate, resolution, pixel format, and key frame interval of the live stream)This command works about 25-50% of the time. When it works FFMPEG takes about 5 seconds to connect to the stream, then it begins dumping data to disk. After I kill the process, I can find a couple of megabytes of video data in
/tmp/dump.flv
which can be probed usingffprobe
.When the command fails, it goes into one of two failure states:
Failure State 1
stderr is flooded with a series of messages about "missing picture in access unit with size X", and the output file
/tmp/dump.flv
is created but contains 0 bytesffmpeg version 3.4.4-1~16.04.york0 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609 configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 [NULL @ 0x55b72d568920] pps_id 381 out of range [AVBSFContext @ 0x55b72d5692c0] Invalid NAL unit 0, skipping. Last message repeated 1 times [h264 @ 0x55b72d568920] Invalid NAL unit 0, skipping. Last message repeated 1 times [h264 @ 0x55b72d568920] no frame! [h264 @ 0x55b72d568920] missing picture in access unit with size 2200 [AVBSFContext @ 0x55b72d5692c0] Invalid NAL unit 0, skipping. Last message repeated 2 times [h264 @ 0x55b72d568920] Invalid NAL unit 0, skipping. Last message repeated 2 times [h264 @ 0x55b72d568920] no frame! [h264 @ 0x55b72d568920] missing picture in access unit with size 3171 [AVBSFContext @ 0x55b72d5692c0] Invalid NAL unit 0, skipping. [h264 @ 0x55b72d568920] Invalid NAL unit 0, skipping. [h264 @ 0x55b72d568920] no frame! [NULL @ 0x55b72d568920] missing picture in access unit with size 80572 [h264 @ 0x55b72d568920] missing picture in access unit with size 1560 [h264 @ 0x55b72d568920] missing picture in access unit with size 2608 [h264 @ 0x55b72d568920] non-existing PPS 0 referenced [h264 @ 0x55b72d568920] missing picture in access unit with size 2734 [h264 @ 0x55b72d568920] missing picture in access unit with size 2885 [h264 @ 0x55b72d568920] missing picture in access unit with size 77739 [h264 @ 0x55b72d568920] non-existing PPS 254 referenced [h264 @ 0x55b72d568920] missing picture in access unit with size 3360 [h264 @ 0x55b72d568920] missing picture in access unit with size 2804 [h264 @ 0x55b72d568920] missing picture in access unit with size 3051 [h264 @ 0x55b72d568920] missing picture in access unit with size 3067 [h264 @ 0x55b72d568920] missing picture in access unit with size 77693 [h264 @ 0x55b72d568920] non-existing PPS 0 referenced [h264 @ 0x55b72d568920] missing picture in access unit with size 2421 [h264 @ 0x55b72d568920] missing picture in access unit with size 2779 [h264 @ 0x55b72d568920] missing picture in access unit with size 2442 [h264 @ 0x55b72d568920] missing picture in access unit with size 2678 [h264 @ 0x55b72d568920] missing picture in access unit with size 76877 [h264 @ 0x55b72d568920] sps_id 15 out of range [h264 @ 0x55b72d568920] missing picture in access unit with size 1342 [h264 @ 0x55b72d568920] missing picture in access unit with size 2412 [h264 @ 0x55b72d568920] missing picture in access unit with size 2238 [h264 @ 0x55b72d568920] missing picture in access unit with size 3550 [h264 @ 0x55b72d568920] missing picture in access unit with size 3075 ... (after hitting Ctrl+C:) Input #0, flv, from 'rtmp://
/ / ': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Duration: 00:00:00.00, start: 5285.919000, bitrate: N/A Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080, 2543 kb/s, 24 fps, 24 tbr, 1k tbn, 48 tbc Output #0, flv, to '/tmp/dump.flv': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Stream #0:0: Video: h264 (Constrained Baseline) ([7][0][0][0] / 0x0007), yuv420p, 1920x1080, q=2-31, 2543 kb/s, 24 fps, 24 tbr, 1k tbn, 1k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 0 fps=0.0 q=-1.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A speed= 0x video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Exiting normally, received signal 2. Failure State 2
The message "No start code is found." is displayed and FFMPEG immediately terminates after less than a half-second. When this happens the file
/tmp/dump.flv
is not created.ffmpeg version 3.4.4-1~16.04.york0 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609 configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 [NULL @ 0x56274b0be920] missing picture in access unit with size 3710 [AVBSFContext @ 0x56274b0bf2c0] No start code is found. rtmp://
/ / : could not find codec parameters Input #0, flv, from 'rtmp:// / / ': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Duration: 00:00:00.00, start: 0.000000, bitrate: N/A Stream #0:0: Video: h264, none, 2543 kb/s, 24 fps, 1k tbn Output #0, flv, to '/tmp/dump.flv': Output file #0 does not contain any stream What I've tried
- Adding or removing
-re
to try and limit the input frame rate to the source frame rate - Adding or removing
-rtmp_live live
- Adding or removing
-timeout 5
(or any other timeout value) - Using RTMP URL parameters (e.g.
-i "rtmp://
)/ / live=1 timeout=5"
Does anyone know why this command's success is so intermittent or how I can get more consistent results?
Alternate Acceptable Solution
The only reason I'm using
ffmpeg
to dump the stream to a temporary file at all is because I plan to perform multiple tests on the file (at least two at the moment -- one to get the encoding, and another to get the key frame interval). By downloading the stream I reduce bandwidth usage and reduce runtime. However it's perfectly acceptable to foregoffmpeg
and just useffprobe
directly on the RTMP URL if this would help.Note that I did try this and I get the same two failure states with
ffprobe
- Adding or removing
-
Add current localtime timestamp to ffmpeg video screen capture [duplicate]
22 janvier 2019, par Mikael EllingsenThis question already has an answer here:
These are the command line paramters I use at the moment:
ffmpeg.exe -f gdigrab -framerate 8 -offset_x %X% -offset_y %Y% -video_size %Width%x%Height% -i desktop -f segment -segment_time 30 -segment_wrap 3 -reset_timestamps 1 "Profile\#\Video capture\Screen %A_Index%%PrimaryMonitor% `%03d".mp4
Is it possible to add current local computer time overlay on the video?