我正在尝试编写 bash 脚本,我可以使用它来启动我的网络播放器的视频编码,并且在启动/完成时将其记录到文件中。
它看起来像这样:
#!/bin/bash
>/var/www/stat/encode.txt
echo "on $(date +%s)" > /var/www/stat/encode.txt
ffmpeg -i 'suzumiya.mkv' -preset slow -crf 18 -c:v libx264 -c:a aac -strict -2 -movflags faststart -tune animation -profile:v baseline -vf "ass=suzumiya.ass" 'suzu.mp4'
echo "off $(date +%s)" > /var/www/stat/encode.txt
当我运行它时,它告诉我:
'NULL @ 0x20ad4c0] Unable to find a suitable output format for 'suzu.mp4
: Invalid argument
当我将 ffmpeg 代码复制粘贴到控制台时,它运行良好,没有错误。问题可能出在哪里?
完整输出:
ffmpeg version N-63938-g684a915 Copyright (c) 2000-2014 the FFmpeg developers
built on Jun 13 2014 18:07:52 with gcc 4.7 (Debian 4.7.2-5)
configuration: --enable-gpl --enable-gray --enable-runtime-cpudetect --enable-bzlib --enable-gnutls --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libcdio --enable-libdc1394 --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libv4l2 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-openal --enable-zlib --enable-nonfree --enable-version3 --enable-x11grab
libavutil 52. 89.100 / 52. 89.100
libavcodec 55. 66.100 / 55. 66.100
libavformat 55. 43.100 / 55. 43.100
libavdevice 55. 13.101 / 55. 13.101
libavfilter 4. 8.100 / 4. 8.100
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, matroska,webm, from 'suzumiya.mkv':
Metadata:
title : The Melancholy of Haruhi Suzumiya: Special Ending
encoder : libebml v0.7.7 + libmatroska v0.8.0
creation_time : 2007-05-09 12:50:35
Duration: 00:01:11.97, start: 0.000000, bitrate: 3580 kb/s
Stream #0:0(jpn): Video: h264 (High), yuv420p, 704x480, SAR 229:189 DAR 5038:2835, 23.98 fps, 23.98 tbr, 1k tbn, 59.94 tbc (default)
Metadata:
title : The Melancholy of Haruhi Suzumiya: Special Ending
Stream #0:1(jpn): Audio: vorbis, 48000 Hz, stereo, fltp (default)
Metadata:
title : 2ch Vorbis
Stream #0:2(eng): Subtitle: ssa (default)
Metadata:
title : Styled ASS
Stream #0:3(eng): Subtitle: ssa
Metadata:
title : Styled ASS (Simple)
Stream #0:4(eng): Subtitle: subrip
Metadata:
title : Plain SRT
Stream #0:5: Attachment: ttf
Metadata:
filename : GosmickSansBold.ttf
mimetype : application/x-truetype-font
Stream #0:6: Attachment: ttf
Metadata:
filename : epmgobld_ending.ttf
mimetype : application/x-truetype-font
'NULL @ 0x20ad4c0] Unable to find a suitable output format for 'suzu.mp4
: Invalid argument
答案1
您应该测试脚本文件的“编码”是否错误。我在 Windows 机器上创建脚本文件并在 Linux 机器上运行它时也遇到了同样的问题。
尤其是换行符的编码方式。应该是(如果)在 Linux 上,而不是像我的 Windows 机器那样写成 (CR LF)。
在 Windows 上的 Notepad++ 中,您可以轻松更改此设置,或者只需在 Linux 机器上创建一个新文件,然后将代码复制粘贴到那里。