Tôi đang cố gắng tự động chuyển đổi video bằng công cụ powershell và ffmpeg. Ffmpeg có đầu ra chi tiết về video nếu được gọi mà không có tất cả tham số nessesary. Thông thường nó báo cáo về lỗi và hiển thị thông tin tập tin đầu vào nếu một quy định. Ex tôi tương tác thực thi lệnh như:powerhell và đầu ra ứng dụng giao diện điều khiển
d: \ video.Enc \ ffmpeg.exe -ID: \ video.Enc \ 1.wmv
đây là PowerShell console đầu ra
ffmpeg.exe : FFmpeg version SVN-r20428, Copyright (c) 2000-2009 Fabrice Bellard, et al.
row:1 char:24
+ d:\video.Enc\ffmpeg.exe <<<< -i d:\video.Enc\1.wmv
+ CategoryInfo : NotSpecified: (FFmpeg version ...Bel
lard, et al.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
built on Nov 1 2009 04:03:50 with gcc 4.2.4
configuration: --enable-memalign-hack --prefix=/mingw --cross-pre
fix=i686-mingw32- --cc=ccache-i686-mingw32-gcc --target-os=mingw32
--arch=i686 --cpu=i686 --enable-avisynth --enable-gpl --enable-vers
ion3 --enable-zlib --enable-bzlib --enable-libgsm --enable-libfaad
--enable-pthreads --enable-libvorbis --enable-libtheora --enable-li
bspeex --enable-libmp3lame --enable-libopenjpeg --enable-libxvid --
enable-libschroedinger --enable-libx264 --enable-libopencore_amrwb
--enable-libopencore_amrnb
libavutil 50. 3. 0/50. 3. 0
libavcodec 52.37. 1/52.37. 1
libavformat 52.39. 2/52.39. 2
libavdevice 52. 2. 0/52. 2. 0
libswscale 0. 7. 1/0. 7. 1
[wmv3 @ 0x144dc00]Extra data: 8 bits left, value: 0
Seems stream 1 codec frame rate differs from container frame rate:
1000.00 (1000/1) -> 15.00 (15/1)
Input #0, asf, from 'd:\video.Enc\1.wmv':
Duration: 00:12:0
2.00, start: 5.000000, bitrate: 197 kb/s
Stream #0.0(eng): Audio: wmav2, 44100 Hz, 1 channels, s16, 48 k
b/s
Stream #0.1(eng): Video: wmv3, yuv420p, 1024x768, 137 kb/s, 15 tbr, 1k tbn, 1k tbc Metadata
title : Silverlight 2.0 Hello World Application
author : Sergey Pugachev
copyright :
comment :
WMFSDKVersion : 11.0.6001.7000
WMFSDKNeeded : 0.0.0.0000
IsVBR : 1
ASFLeakyBucketPairs:
VBR Peak : 715351
Buffer Average : 127036
At least one output file must be specified
Nhưng tôi không thể tìm cách viết kịch bản này và bắt đầu xuất ra bất kỳ loại đối tượng posh nào. Tôi đã thử kịch bản lệnh trực tiếp, trong đó tệp ps1 chứa biểu thức chính xác "d: \ video.Enc \ ffmpeg.exe -i d: \ video.Enc \ 1.wmv" - nó không hoạt động. Ngoài ra tôi đã cố gắng làm điều đó với lệnh gọi và gọi biểu thức. Đầu tiên trả về một chuỗi chính xác với lệnh, thứ hai - lỗi kết xuất cho giao diện điều khiển đầu ra nhưng không phải là -ErrorVariable i được chỉ định (tôi đã đặt tất cả các biến, không chỉ lỗi một - tất cả chúng đều trống).
Bất kỳ ai có thể trỏ chính xác cú pháp để gọi các ứng dụng bảng điều khiển trong chế độ posh và bắt đầu ra không?
Câu hỏi thứ hai sẽ là phân tích cú pháp kết quả đầu ra đó - Tôi sẽ cần dữ liệu độ phân giải video để tính tỷ lệ khung hình chính xác cho chuyển đổi. Vì vậy, nó sẽ là tuyệt vời nếu điểm ai làm thế nào để làm việc với sản lượng lỗi bị bắt và phân tích chuỗi như
Suối # 0.1 (eng): Video: WMV3, yuv420p, 1024x768,
Stderr để stdout hoạt động tốt. Cảm ơn bạn. Có cách nào để có được stderr và stdout riêng biệt? Thu thập dữ liệu có chút khác biệt (có 2 hoặc nhiều luồng thông tin đầu ra tách biệt - cho âm thanh và video), sẽ cần phải trả về hoặc loại trừ cho "Luồng" ít nhất, nhưng một điểm tôi có thể tự hoàn thành. Đánh giá cao cho các điểm khởi đầu bạn đã cho tôi. –
Vâng, bạn có thể chụp chúng một cách riêng biệt - ffmpeg.exe ...> foo.txt 2> foo.err –
:) tôi không hoàn toàn rõ ràng :) là có bất kỳ cách nào để có được luồng dữ liệu riêng biệt. Ex Invoke-Expression có các khóa để chỉ định ErrorVariable và OutVariables. là có cách nào để có được đầu ra bằng cách sử dụng loại cú pháp như vậy, không sử dụng các tập tin tạm thời? –