0

こんにちは、gem rvideo を使用してビデオ ファイルをトランスコードしようとしていますが、期待どおりの結果が得られません。http://ffmpeg.zeranoe.com/builds/から ffmpeg ファイルをダウンロードし、rvideo gem をインストールしました。

ffmpeg_binary を指定しないと機能しないことがわかり、エラーが発生しました。入力時に出力されるいくつかの問題があります

require 'rvideo'

video = RVideo::Inspector.new(:file => "D:/The Vault/josh ruby/video transcoding/test1.mp4", :ffmpeg_binary => "C:/ffmpeg/bin/ffmpeg.exe")

上記のコマンドを入力すると、ビルドの日付、構成オプションなどのような出力の混乱が表示されます (投稿の下部に含まれています)。

しかし、ドキュメントで見たところ、次のようなコマンドを入力できます。

  • ビデオ.fps
  • ビデオ解像度

彼らは私に nil を返すだけです。

Windows では rvideo を使用できませんか?

上からの出力:

=> #<RVideo::Inspector:0x213ba48 @ffmpeg_binary="C:/ffmpeg/bin/ffmpeg.exe",  @filename="test1.mp4", @path="D:/The Vau
lt/josh ruby/video transcoding", @full_filename="D:/The Vault/josh ruby/video transcoding/test1.mp4", @raw_response=
"ffmpeg version N-51106-g17c1881 Copyright (c) 2000-2013 the FFmpeg developers\n  built on Mar 19 2013 13:49:37 with
gcc 4.7.2 (GCC)\n  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bz
lib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable
-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-am
rwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspe
ex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-
libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib\n  libavutil      52. 19.101 / 52. 19.101\n
libavcodec     55.  1.100 / 55.  1.100\n  libavformat    55.  0.100 / 55.      0.100\n      libavdevice    55.  0.100 / 55.
 0.100\n  libavfilter     3. 47.104 /  3. 47.104\n  libswscale      2.  2.100 /  2.  2.100\n  libswresample   0. 17
.102 /  0. 17.102\n  libpostproc    52.  2.100 / 52.  2.100\nD:/The: No such file or directory\n", @unknown_format=t
rue>

更新:以下のrmtsukuruの回答に従って変更されましたが、最終的には. また、これは上記のファイルとは異なるファイルであることに注意してください(別のPC上)。

 irb(main):002:0> response = %x(C:/ffmpeg/bin/ffmpeg.exe -i "C:/Users/Josh/Desktop/joshruby/videoTranscoding/test1.mp4")
ffmpeg version N-51205-gac9b056 Copyright (c) 2000-2013 the FFmpeg developers
built on Mar 22 2013 00:04:52 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnu
tls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable- libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore
-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable- librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex -
-enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc  --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxa
vs --enable-libxvid --enable-zlib
libavutil      52. 22.100 / 52. 22.100
libavcodec     55.  1.100 / 55.  1.100
libavformat    55.  0.100 / 55.  0.100
libavdevice    55.  0.100 / 55.  0.100
libavfilter     3. 48.100 /  3. 48.100
libswscale      2.  2.100 /  2.  2.100
libswresample   0. 17.102 /  0. 17.102
libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:/Users/Josh/Desktop/joshruby  /videoTranscoding/test1.mp4':
  Metadata:
major_brand     : mp42
minor_version   : 1
compatible_brands: isommp41avc1
creation_time   : 2009-02-19 18:49:05
 Duration: 00:00:08.04, start: 0.000000, bitrate: 3129 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 3009 kb/s, 25 fps, 25 tbr, 600 tbn, 50 tbc
Metadata:
  creation_time   : 2009-02-19 18:49:05
  handler_name    : ?Apple Video Media Handler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
Metadata:
  creation_time   : 2009-02-19 18:49:05
  handler_name    : ?Apple Sound Media Handler
Stream #0:2(eng): Data: none (mp4s / 0x7334706D), 0 kb/s
Metadata:
  creation_time   : 2009-02-19 18:49:05
  handler_name    : ?
Stream #0:3(eng): Data: none (mp4s / 0x7334706D), 0 kb/s
Metadata:
  creation_time   : 2009-02-19 18:49:05
At least one output file must be specified
=> ""
4

1 に答える 1

0

ffmpeg は入力ファイル名のスペースを嫌い、rvideo は入力を適切にエスケープしません。シェルからコマンドを手動で実行すると、ffmpeg が正しく実行され、生の応答が rvideo インスペクタに渡されて正しくインスタンス化されます。

response = %x('#{bin_path}' -i "#{filename}")
video = RVideo::Inspector.new(:raw_response => response)

bin_pathffmpeg バイナリへfilenameのパスと入力ファイルへのパスに置き換えます。スペースが含まれていない限り、ffmpeg バイナリ パスを引用符で囲む必要はありません。

于 2013-03-22T03:09:49.900 に答える