سؤال

أريد موقع الويب الخاص بي للانضمام إلى بعض تسجيلات كاميرا ويب في ملفات FLV (مثل هذا واحد).هذا يحتاج إلى القيام به على لينكس دون إدخال المستخدم.كيف يمكنني فعل هذا ؟ من أجل التبسيط سوف تستخدم نفس flv كما كل المدخلات في أمل الحصول flv أن يلعب نفس الشيء مرتين في صف واحد.

وينبغي أن يكون من السهل بما فيه الكفاية ، أليس كذلك ؟ حتى أن هناك الكاملة رمز المثال في ffmpeg التعليمات.

حسنا, يبدو أن أنابيب يكون يسبب لي مشاكل (سواء على تشغيل ماك ليوبارد على أوبونتو 8.04) لذلك دعونا يبقيه بسيط و استخدام الملفات العادية.أيضا, إذا كنت لا تحديد بمعدل 15 إطارا في الثانية, الجزء المرئي يلعب سريع للغاية.المثال النصي وبالتالي يصبح:

ffmpeg -i input.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 \
  - > temp.a < /dev/null
ffmpeg -i input.flv -an -f yuv4mpegpipe - > temp.v < /dev/null
cat temp.v temp.v > all.v
cat temp.a temp.a > all.a
ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
  -f yuv4mpegpipe -i all.v -sameq -y output.flv

حسنا, في استخدام هذا العمل بالنسبة الصوت, ولكن أنا فقط الحصول على الفيديو في المرة الأولى.يبدو أن هذا هو الحال بالنسبة لأي flv أرمي كإدخال.flv, بما في ذلك فيلم teasers التي تأتي مع red5.

أ) لماذا لا المثال النصي العمل المعلن عنها ، على وجه الخصوص لماذا لا تحصل على كل الفيديو انا تتوقع ؟

ب) لماذا يجب أن تحدد فراميراتي حين جبان لاعب يمكن أن تلعب flv في السرعة ؟

الطريقة الوحيدة التي يمكنني العثور على الانضمام إلى اثنين flvs استخدام مينكودر.المشكلة هي مينكودر لا يبدو للانضمام flvs:

mencoder input.flv input.flv -o output.flv -of lavf -oac copy \
-ovc lavc -lavcopts vcodec=flv

أحصل على النقطة العائمة استثناء...

MEncoder 1.0rc2-4.0.1 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Xeon(R) CPU 5150 @ 2.66GHz (Family: 6, Model: 15, Stepping: 6)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2

success: format: 0 data: 0x0 - 0x45b2f
libavformat file format detected.
[flv @ 0x697160]Unsupported audio codec (6)
[flv @ 0x697160]Could not find codec parameters (Audio: 0x0006, 22050 Hz, mono)
[lavf] Video stream found, -vid 0
[lavf] Audio stream found, -aid 1
VIDEO: [FLV1] 240x180 0bpp 1000.000 fps 0.0 kbps ( 0.0 kbyte/s)
[V] filefmt:44 fourcc:0x31564C46 size:240x180 fps:1000.00 ftime:=0.0010
** MUXER_LAVF *****************************************************************
REMEMBER: MEncoder's libavformat muxing is presently broken and can generate
INCORRECT files in the presence of B frames. Moreover, due to bugs MPlayer
will play these INCORRECT files as if nothing were wrong!
*******************************************************************************
OK, exit
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffflv] vfm: ffmpeg (FFmpeg Flash video)
==========================================================================
audiocodec: framecopy (format=6 chans=1 rate=22050 bits=16 B/s=0 sample-0)
VDec: vo config request - 240 x 180 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
videocodec: libavcodec (240x180 fourcc=31564c46 [FLV1])
VIDEO CODEC ID: 22
AUDIO CODEC ID: 10007, TAG: 0
Writing header...
[NULL @ 0x67d110]codec not compatible with flv
Floating point exception

ج) هل هناك طريقة مينكودر إلى فك وتشفير flvs بشكل صحيح ؟

وبالتالي فإن الطريقة الوحيدة لقد وجدت حتى الآن للانضمام إلى flvs, هو استخدام ffmpeg للذهاب ذهابا وإيابا بين flv و avi و استخدام مينكودر للانضمام إلى avis:

ffmpeg -i input.flv -vcodec rawvideo -acodec pcm_s16le -r 15 file.avi
mencoder -o output.avi -oac copy -ovc copy -noskip file.avi file.avi
ffmpeg -i output.avi output.flv

د) يجب أن يكون هناك طريقة أفضل لتحقيق ذلك...أي واحد ؟

هـ) بسبب مشكلة فراميراتي ، flvs مع ثابت فراميراتي (مثل واحد سجلت عن طريق facebook) سيتم تحويلها بشكل صحيح إلى avis, ولكن هذا لن يعمل على flvs يبدو أنني تسجيل (مثل هذا واحد أو هذا واحد).هل هناك طريقة للقيام بذلك من أجل هذه flvs أيضا ؟

أي مساعدة سوف أكون ممتنا للغاية.

هل كانت مفيدة؟

المحلول

اعتقدت أنه سيكون من الجميل التعلم عملية إعادة كتابتها في روبي.

كان عليه.

ستة أشهر و ثلاثة الأحجار الكريمة في وقت لاحق ، هنا صدر المنتج.

سوف لا تزال تعمل قليلا على ذلك ، لكنه يعمل.

نصائح أخرى

سوف تواجه دقيق جدا المشكلة هنا لأن معظم صيغ الفيديو والصوت (وخاصة في الحاويات العادية) استخدام "العالمية الرؤوس" يعني في بداية الملف لديهم رأس واحدة التي تحدد ضغط المعلومات (مثل العرض والارتفاع ، الخ) لكل ملف.Concatting تيارين من الواضح أنه سوف تفشل ، كما لديها الآن اثنين من رؤوس بدلا من واحدة و muxer لا يجوز مثل هذا.تحويل AVI ربما هو حل المشكلة في حالتك لأن مينكودر وقد رمز إلى concat AVIs--هذا الرمز بشكل صحيح يعالج رأس المسألة.

بعد نشر سؤالي على مينكودر القائمة البريدية ، في محاولة أشياء أخرى ، لجأت إلى الكتابة أداة بلدي!بدأت من flvtool و بعد بعض الحفر في الكتابة عن 40 أسطر من التعليمات البرمجية ، وأنها تعمل مع أي خسارة في الجودة (حيث لا يوجد الشفرة).

سوف الافراج في اسرع وقت ممكن في هذه الأثناء أي شخص مهتم يمكن الاتصال بي.

لا أعرف إذا كان هذا سوف تعمل في الواقع ولكن حاول استخدام هذا الأمر :

cat yourVideos/*.flv >> big.flv

وربما هذا الضرر المعلومات الوصفية وذلك بعد تنفيذ هذا الأمر استخدام "flvtool" (روبي النصي يمكنك العثور عليها في google) إلى إصلاحه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top