我正在编写一个 bash 脚本来转换一些视频,
问题是当我ffmpeg
直接在终端中运行时,它可以正确转换视频,但是当我在 bash 脚本中使用它时,它会在 stdout 中打印大量数据(例如视频文件的转储)!!!
...
00002000 46 43 11 99 fa e5 cf 2e 40 15 61 6e a3 07 46 f8 [email protected].
00002010 48 33 85 8c 0c de 1b 27 f3 08 b5 e3 31 13 67 93 H3.....'....1.g.
00002020 3a e0 d1 8d d3 be 82 90 a6 19 1b 20 d1 8a ce 06 :.......... ....
00002030 38 4c 14 c2 1e cc 13 23 3b 93 81 e9 16 8a 1e c0 8L.....#;.......
00002040 66 32 31 fc 62 7f a6 34 e0 d9 a9 1b 32 b9 02 64 f21.b..4....2..d
00002050 ce 39 ef 8d a8 e8 64 37 6d e7 c0 28 71 23 ae 52 .9....d7m..(q#.R
00002060 8e 86 4c 95 cf 69 aa 7d 86 6f 18 68 9e 2f 38 33 ..L..i.}.o.h./83
00002070 99 33 c1 8e 98 38 36 68 fe 9a 0a 7f 74 9e 76 71 .3...86h....t.vq
00002080 73 23 bb c1 e0 cf ea 54 c2 37 22 36 33 51 c1 2a s#.....T.7"63Q.*
00002090 8f 90 df ac 66 27 34 36 16 85 32 fe c8 6f 0a 86 ....f'46..2..o..
000020a0 72 ab 8b 9e 1e 7d 9e 1b 34 4c 31 87 b7 ad 0c ff r....}..4L1.....
000020b0 c4 fb e2 6f f2 90 80 b1 98 20 fa f9 76 d2 86 24 ...o..... ..v..$
000020c0 1a bb b6 fe 47 b2 12 85 30 63 e5 d2 66 f5 31 36 ....G...0c..f.16
000020d0 35 b5 f2 21 27 70 09 11 8a 8e 3c 9d b9 9d 36 a7 5..!'p....<...6.
000020e0 5b 5c d1 d0 a7 e0 17 83 36 5f d8 d0 8f 73 90 82 [\......6_...s..
000020f0 15 0d 87 55 0e 0d 20 ad 38 52 b6 e4 3c 94 54 b4 ...U.. .8R..<.T.
00002100 f0 07 85 1c a1 d6 b0 27 04 97 bd 0a 6e 01 62 15 .......'....n.b.
00002110 80 b3 27 1c c4 80 72 7b 9c 61 c2 2e a8 e9 27 85 ..'...r{.a....'.
00002120 ae 10 67 32 76 99 19 df bf b6 49 28 8f 71 3c f5 ..g2v.....I(.q<.
00002130 c5 29 39 a5 84 92 73 8c 35 ea 90 af 85 5a ff 56 .)9...s.5....Z.V
00002140 e2 fe 9a d6 27 52 05 f6 7b 35 29 2b 2d b4 54 b9 ....'R..{5)+-.T.
00002150 c9 87 53 e4 bd 89 6d a3 34 c8 f5 20 a6 77 ac e5 ..S...m.4.. .w..
00002160 88 05 d8 84 75 58 59 31 10 df ba 6c 0c 40 54 b0 ....uXY1...l.@T.
00002170 5a 5a 23 90 f1 b4 58 33 1c 22 87 d6 d7 85 0a 47 ZZ#...X3.".....G
00002180 08 9d b7 79 41 8d 0d 24 74 d6 37 84 a1 48 e6 f8 ...yA..$t.7..H..
00002190 19 f6 90 bb 2d f2 39 80 c3 50 a7 8d 06 14 c6 93 ....-.9..P......
000021a0 bb d5 66 5a 17 0c a7 32 63 29 c9 45 e3 30 ce 18 ..fZ...2c).E.0..
000021b0 f0 63 a7 a3 61 65 e6 06 c2 a0 a6 20 8e f0 f7 a7 .c..ae..... ....
000021c0 18 34 01 51 35 68 db b8 d8 58 33 05 f3 77 a0 39 .4.Q5h...X3..w.9
000021d0 2e 90 6b cb b2 a9 6d 12 ce ad 31 c5 23 20 a6 41 ..k...m...1.# .A
000021e0 76 5c 6c 87 d7 f1 09 a9 59 50 29 f2 20 98 ef e4 v\l.....YP). ...
000021f0 66 c6 70 84 67 06 9a 9c 8d fe ce 31 08 1b fc ee f.p.g......1....
00002200 22 87 af e6 0c 06 64 c5 a7 7a 47 d4 83 41 a0 51 ".....d..zG..A.Q
00002210 52 43 39 d0 b1 73 e3 58 64 64 72 22 2e f9 b2 17 RC9..s.Xddr"....
00002220 2c a6 d5 a3 a6 c2 9c ce 24 82 63 29 19 34 e0 c9 ,.......$.c).4..
00002230 47 77 89 d1 7d 3b d3 6a 81 8c 88 65 a7 31 ee 72 Gw..};.j...e.1.r
00002240 29 1a 8a 0f b8 77 9f d3 83 1b bc 2a de f6 1a 4d )....w.....*...M
00002250 f6 14 c8 31 0a 45 3c 23 18 03 8d f4 f1 cd 6e 40 ...1.E<#......n@
00002260 b5 .
[libx264 @ 0x114cfe0] frame= 501 QP=25.80 NAL=0 Slice:B Poc:14 I:25 P:404 SKIP:910 size=1116 bytes
[libx264 @ 0x114cfe0] frame= 502 QP=19.72 NAL=2 Slice:P Poc:18 I:22 P:539 SKIP:789 size=3039 bytes
[libx264 @ 0x114cfe0] frame= 503 QP=18.86 NAL=2 Slice:P Poc:26 I:36 P:585 SKIP:729 size=4393 bytes
[libx264 @ 0x114cfe0] frame= 504 QP=24.66 NAL=2 Slice:B Poc:22 I:0 P:399 SKIP:931 size=1494 bytes
[libx264 @ 0x114cfe0] frame= 505 QP=27.85 NAL=0 Slice:B Poc:20 I:0 P:259 SKIP:1086 size=679 bytes
[libx264 @ 0x114cfe0] frame= 506 QP=27.73 NAL=0 Slice:B Poc:24 I:0 P:283 SKIP:1058 size=693 bytes
[libx264 @ 0x114cfe0] frame= 507 QP=19.05 NAL=2 Slice:P Poc:34 I:35 P:431 SKIP:884 size=4321 bytes
[libx264 @ 0x114cfe0] frame= 508 QP=25.88 NAL=2 Slice:B Poc:30 I:2 P:345 SKIP:985 size=1276 bytes
[libx264 @ 0x114cfe0] frame= 509 QP=28.23 NAL=0 Slice:B Poc:28 I:0 P:225 SKIP:1118 size=616 byt
...
我尝试像这样重定向输出:
ffmpeg -i "$input" -strict -2 "$out" 2>&1 /dev/null
但我得到了
[NULL @ 0x18ae440] Unable to find a suitable output format for '/dev/null'
/dev/null: Invalid argument
有什么问题?如何ffmpeg
在 Bash 脚本中使用?
答案1
您的命令重定向不起作用,您将标准错误重定向到标准输出,但没有将其重定向到任何地方。
重定向所有输出的正确命令是:
ffmpeg -i "$input" -strict -2 "$out" > /dev/null 2>&1