ffplay - วิธีการเล่นไฟล์วิดีโอและเสียงแยกกัน


9

ดังนั้นฉันสามารถแปลงรหัสไฟล์วิดีโอและไฟล์เสียงแยกเป็นไฟล์ภาพยนตร์เดียวเช่น:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

และดูและได้ยินภาพยนตร์ที่เป็นผลลัพธ์ดังนี้:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

อย่างไรก็ตามเพื่อหลีกเลี่ยงการแปลงรหัสภาพยนตร์และเสียงเป็นไฟล์เดียวก่อนที่จะสามารถดูได้ฉันต้องการเล่นสองไฟล์แยกกัน เท่าที่ฉันรู้ ffplay ไม่อนุญาตให้คุณรวมสองไฟล์ที่แตกต่างกัน (ใช่ไหม)

อ่านฟอรั่มนี้มันดูเหมือนว่าคุณสามารถท่อผลผลิต ffmpeg เพื่อ ffplay ต่อไปนี้ใกล้เคียงกับที่ฉันได้รับ มันไม่ใกล้เคียง :( ข้อมูลวิดีโอกำลังดำเนินการอยู่อย่างชัดเจน แต่เป็น "หิมะ" สีเขียวในขนาดเฟรมที่เหมาะสมพร้อมคำแนะนำของการเต้นของภาพที่เกิดขึ้นจริงภายในหิมะสีเขียวที่น่ากลัววิธีนี้ฉันรู้ว่ามีบางสิ่งที่ข้อมูลภาพจริงถืออยู่ เพียงแค่แสดงผลไม่ถูกต้องเลย

และไม่มีเสียงเล่น เสียงไม่ได้ถูกยก (ฉันไม่คิด) ตอนนี้ ... ฉันติดอยู่ ต่อไปนี้แนะนำสิ่งที่ฉันพยายามทำ แต่มันไม่ทำงาน:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -

คำตอบ:


4

ข้อมูลวิดีโอได้รับการดำเนินการอย่างชัดเจน แต่มันเป็น "หิมะ" สีเขียวในขนาดเฟรมที่เหมาะสมพร้อมคำแนะนำของการเต้นของภาพที่เกิดขึ้นจริงภายในหิมะสีเขียวที่น่ากลัว

นี่ต้องเป็นรูปแบบพิกเซล คุณกำลังใช้xyz2rgbตัวกรองที่แปลง colorspace DCP เข้า RGB ffplayและจากนั้นคุณท่อวิดีโอดิบ ที่นี่คุณกำลังใช้xyz2rgbตัวกรองอีกครั้งซึ่งอาจทำให้เกิดการบิดเบือนเนื่องจาก FFmpeg ไม่ทราบว่าวิดีโอดิบมีการเข้ารหัสอย่างไร มันจะทำทุกอย่างที่คุณต้องการด้วยวิดีโอแม้กระทั่งแปลงพื้นที่สีสองครั้ง


ฉันได้ผลลัพธ์ที่ดีในการวางรูปแบบ Matroska ffplayเป็นrawvideoซึ่งจะช่วยให้คุณสามารถถอดรหัสเสียงได้ (ดูด้านล่าง) รูปแบบ Matroska สามารถมีตัวแปลงสัญญาณชนิดใดก็ได้

โปรดทราบว่าลำดับของตัวเลือกมีความสำคัญใน FFmpeg และคุณควรใช้รุ่นที่ใหม่กว่าเนื่องจากมีความเข้มงวดมากขึ้นเกี่ยวกับตำแหน่งที่คุณวางตัวเลือก:

  • ตัวเลือกระดับโลกเช่น-yมาก่อน
  • จากนั้นระบุตัวเลือกสำหรับการอ่านไฟล์อินพุต - -r 24บังคับอัตราเฟรมสำหรับpicture.mxfไฟล์
  • จากนั้นระบุไฟล์อินพุตทั้งหมด
  • จากนั้นมาตัวเลือกตัวแปลงสัญญาณเช่นตัวกรองวิดีโอบิตเรตวิดีโอเป็นต้น

ในสถานการณ์ของคุณคุณควรคัดลอกสตรีมเสียงเนื่องจากเราไม่จำเป็นต้องแปลงรหัสจริงๆ วิดีโอจะต้องมีการแปลงรหัสเพื่อให้สามารถใช้ตัวกรอง

สิ่งนี้ควรทำ สังเกตว่าเรากำหนดรูปแบบผลลัพธ์อย่างชัดเจนเป็นอย่างไรmatroskaและให้ffplayคิดออกเอง:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

ผมเคยใช้ (IMO น้อยคลุมเครือ) ไวยากรณ์สำหรับตัวเลือกเช่น-filter:vแทน-vf, -b:vแทน-vbและแทน-c:a-acodec

หากรูปแบบนั้นใช้ไม่ได้ให้ลอง AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

สิ่งนี้ใช้ได้กับฉันโดยไม่มีปัญหาและมันไม่ได้ต้องการให้ฉันใช้ตัวกรองที่คุณต้องการ เสียงก็ใช้งานได้เช่นกัน


slhck ขอบคุณสำหรับสิ่งนี้! ตกลงฉันได้รับสิ่งนี้: <br/> <br/> ไม่พบรูปแบบผลลัพธ์ที่เหมาะสมสำหรับ '-filter: v' -filter: v: อาร์กิวเมนต์ไม่ถูกต้อง <br> <br> (เหมือนกันสำหรับ -vf) ตัวแปลงสัญญาณและตัวกรองมาจากที่นี่: goo.gl/avE1f - ผู้เขียนเขียนและออกแบบการติดตั้งแบบกำหนดเองของ ffmpeg (รุ่นหนึ่งเท่านั้นที่ทำงานกับขั้นตอนนี้และไฟล์ของเขา) ที่มีตัวแปลงสัญญาณที่เป็นกรรมสิทธิ์และตัวกรองพื้นที่สี สามารถถอดรหัสได้ การติดตั้ง ffmeg ที่กำหนดเองจะต้องสามารถอ่านลำดับภาพ JPEG2000 MJPEG ที่เป็นกรรมสิทธิ์ซึ่งอยู่ภายในรูปภาพ MFX ถ้านั่นช่วยให้ทราบ :)
Bill Rudolph Yaber Russell

อ๊ะฉันเป็นคนบ้าฉันลืมลบตัวแบ่ง "\" ในบรรทัดคำสั่ง อย่างไรก็ตามตอนนี้เมื่อฉันป้อนคำแนะนำของคุณตัวเลขแสดงการสตรีม แต่ไม่มีหน้าต่างเปิดขึ้นจากนั้นประมาณ 20 วินาทีต่อมามันหยุดด้วย: <br /> <br /> การแบ่งกลุ่มผิด: 1136.0 ขนาด = 138kB เวลา = 00: 00: 00.08 บิตเรต = 13445.2kbits / s
Bill Rudolph Yaber Russell

รูปภาพเป็นสิ่งที่คุ้มค่านับพัน - ที่นี่วิดีโอจับหน้าจอที่มีประโยชน์นี้แสดงสิ่งที่ทำงานและสิ่งที่ไม่ได้เป็น: dl.dropbox.com/u/11290938/screen_grab_ffdcp_750.mov
Bill Rudolph Yaber Russell

ขอบคุณมากสำหรับวิดีโอ ก่อนอื่นคำสั่ง rawvideo แรกของคุณมีปัญหาที่คุณระบุขนาดผิด ข้อมูลที่คุณป้อนมี 500x270 หรืออย่างน้อยนั่นก็คือสิ่งที่ส่งเข้าffplayมา นอกจากนี้การส่งออกของคุณมีrgb48leเป็นรูปแบบพิกเซล (เพราะของตัวกรอง) แต่ffplayถือว่าดังนั้นคุณจำเป็นต้องระบุว่าyuv420p ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -สำหรับ segfault: ไม่มีความคิด…คุณอาจสร้างและอัปโหลดไฟล์ทดสอบขนาดเล็กที่ไหนสักแห่ง?
slhck

Ooo goodie ไฟล์ทดสอบ! แน่นอนขอบคุณ เหตุผลสำหรับ 500x270 คือฉันระบุ "lores 2" ซึ่งลดขนาดเป็นสองเท่า (เพื่อให้พอดีกับหน้าจอที่เป็นระเบียบสำหรับคุณ :) ดังนั้นดูเหมือนว่าฉันพลาดไป ไฟล์นี้เป็นไฟล์ DCP แบบโฮมเมด (คิดว่า "การพิมพ์ฟิล์มดิจิทัล" สำหรับโรงภาพยนตร์ซึ่งเป็นสาเหตุที่สื่อแปลกประหลาดมาก) 2K ที่ 1998x1080 (กว้าง 1.85 ตารางพิกเซล) เมื่อแยกลำดับภาพมันถูกต้องแล้วฉันและส่งแพคเกจเมื่อวานนี้และพวกเขาเล่นมันใน DLP ในโรงภาพยนตร์ที่จะแสดง (สำหรับคืนหนึ่งในเทศกาล) - & มันถูกต้อง (ว้าว!)
Bill Rudolph Yaber Russell

3

สิ่งนี้จะไม่แปลงรหัสสตรีม:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1= ไฟล์ที่สองสตรีม 1 (โดยปกติจะเป็นไฟล์เสียง) -c copy= -c:v copy -c:a copy. โดยค่าเริ่มต้นไฟล์ muxed นั้นจะยาวเท่ากับไฟล์ที่ยาวกว่า แต่-shortestจะทำให้ยาวเท่ากับไฟล์ที่สั้นกว่า


ขอบคุณสำหรับ intel นี้ ฉันไม่ต้องการไฟล์เอาต์พุต แต่สวิตช์เหล่านี้ดีมากที่รู้
Bill Rudolph Yaber Russell

3
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

สำหรับวัตถุประสงค์ของฉันนี้จะช่วยให้ได้อย่างรวดเร็วการทบทวนเนื้อหาของ DCP (Cinema แพคเกจดิจิตอล) ที่คุณสามารถสร้างด้วยเครื่องมือมาเปิด DCP ใช้พื้นที่สี xyz ดังนั้นคุณต้องติดตั้งตัวกรองวิดีโอ xyzมิฉะนั้นคุณจะไม่สามารถใช้มันในบรรทัดด้านบน (ไม่เป็นไรมันจะเป็นแค่สีส้มที่เข้มมากคุณจะไม่เห็นสีที่แท้จริง)

ฉันเพิ่ม mpeg2video codec b / c ถึงแม้ว่าจะลดคุณภาพลง แต่ก็มีอัตราที่ต่ำและบัฟเฟอร์เพียงเล็กน้อยดังนั้นมันจึงทำงานได้อย่างราบรื่นมากขึ้นบนเครื่องของฉัน (นอกจากนี้ด้วยเหตุผลบางอย่างโดยไม่มีการแปลงรหัสครั้งแรกฉันจะได้รับเฟรมค้างจาก jpeg2000 mjpeg ลำดับการให้อาหารที่ยิ่งใหญ่ 125mb / s จาก MXF เว้นแต่ฉันจะเริ่ม "- ss 0" นั่นคือที่จุดเริ่มต้นของ ไฟล์) ด้วยเครื่อง VAST FAST โดยไม่ระบุตัวแปลงสัญญาณ (ลบ "-c: v mpeg2video") ขนาดเต็ม ("-lores 0") และเริ่มต้นที่ 0 (-ss 0) คุณสามารถตรวจสอบทฤษฎีภาพยนตร์ 2K DCP ที่มีคุณภาพตรงตามที่เป็นอยู่ ดียกเว้นคำแนะนำพิเศษที่รวมอยู่ใน XML ของ - คำบรรยายหรือการเขียนโปรแกรมอื่น ๆ แต่โดยทั่วไปแล้ว (BTW "-ac: 2" downmixes 5.1 ถึง 2.0 - แม้ว่าคุณอาจมีฮาร์ดแวร์ที่รองรับการคัดเลือก 5.1 ซึ่งในกรณีนี้ใช้ "-c: a copy")

ขอขอบคุณแมทเธียสส์ที่เบล - นูทและslhckด้านบนสำหรับผู้ป่วยที่เดินผ่านสิ่งนี้ ขอบคุณ!!!! มันมีประโยชน์มากทีเดียว และในความเป็นจริงช่วยให้ฉันรอดพ้นจากการฉายภาพยนตร์ที่น่าอับอายที่โรงละคร Aero ในเย็นวันอาทิตย์ ลำดับหมายเลขภาพของฉันไม่อยู่ในลำดับ - พบกับสิ่งนี้และแก้ไข!

ว้าวทั้งหมดนี้แค่บรรทัดคำสั่งเดียวใครจะรู้;)

Cheereo - b worldpoop.com


ฉันพบข้อผิดพลาดนี้: ไม่มีตัวกรองดังกล่าว: 'xyz2rgb'
Dr.jacky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.