Created
January 1, 2016 04:45
-
-
Save nikhan/26ddd9c4e99bbf209dd7 to your computer and use it in GitHub Desktop.
twitter ffmpeg
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ffmpeg -i test.mov -vcodec libx264 -vf 'scale=640:trunc(ow/a/2)*2' -acodec aac -vb 1024k -minrate 1024k -maxrate 1024k -bufsize 1024k -ar 44100 -strict experimental -r 30 out.mp4 |
@Pomax remark fixed my issue. The aspect ratio was the problem in my case but nothing tells it is the case.
@hertzsprung This one worked for me
@hertzsprung thank you, your command worked for a troublesome DVD rip.
@hertzsprung This one worked for me
It's also necessary to round to an even number of pixel dimensions:
ffmpeg -i test.mov -vcodec libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -pix_fmt yuv420p -strict experimental -r 30 -t 2:20 -acodec aac -vb 1024k -minrate 1024k -maxrate 1024k -bufsize 1024k -ar 44100 -ac 2 out.mp4
Great!
-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"
This is sadly insufficient for narrow/tall inputs.
I'm sorry, this is complex.
ffmpeg_ar
#!/bin/bash
eval $(ffprobe -v error -show_entries stream=width,height -of default=noprint_wrappers=1 "$1")
#results in e.g.
#width=300
#height=1200
echo "height=$height"$'\n'"width=$width"
newenv=$(bc <<< "width=$width; height=$height;"$'\nscale=3; aspect=width / height;\nprint "aspect=", aspect;
print "''\n'$'";\n\nif (aspect>3) { r=(height) * (aspect/3); print "height=";}
if (aspect<(1/3)) {r=(width) / (aspect/(1/3)); print "width=";}\nscale=0
if (r) { print r/1 }')
[ ! -z "$newenv" ] && echo "$newenv" && export $newenv
echo "aspect=""$(bc <<< "scale=3; $width/$height")"
Example I/O
ffmpeg_ar /tmp/modem.mkv
height=100
width=1000
aspect=10.000
height=333
aspect=3.003
ffmpeg
You can then:
export $( ffmpeg_ar /tmp/in.mkv );
ffmpeg -i in.mkv -filter_complex 'fps=30,format=yuv420p,pad='"ceil($width/2)*2:ceil($height/2)*2"':(ow-iw)/2:(oh-ih)/2' -c:v h264_nvenc -t 02:20 -c:a aac -ac 2 -ar 44100 -r 30 /tmp/out.mp4
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I definitely needed a
-t
as I was trying to send a 5 second video (using the standard UI) and the screen error was generic ... had to examine the JSON in the response to know they thought it was too short.