ffplay - cách phát các tệp video và âm thanh riêng biệt


9

Vì vậy, tôi có thể chuyển mã các tệp video và âm thanh riêng biệt thành một tệp phim, như vậy:

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

Và xem và nghe bộ phim kết quả như vậy:

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

Tuy nhiên, để tránh phải chuyển mã phim và âm thanh thành một tệp trước khi có thể xem, tôi chỉ muốn phát hai tệp riêng biệt với nhau. Theo tôi biết, ffplay không cho phép bạn kết hợp hai tệp khác nhau (phải không?).

Đọc những diễn đàn này có vẻ như bạn có thể chuyển một đầu ra ffmpeg sang ffplay . Sau đây là gần như tôi đã nhận. Nó không gần lắm đâu. :( Thông tin video rõ ràng đang được chuyển qua, nhưng đó là "tuyết" màu xanh lá cây ở kích thước khung hình phù hợp, với gợi ý về hình ảnh thực tế nhảy múa bên trong tuyết xanh khủng khiếp. Bằng cách này, tôi biết rằng có gì đó của dữ liệu hình ảnh thực tế đang truyền qua , chỉ không hiển thị chính xác.

Và không có âm thanh phát. Âm thanh không phát ra (tôi không nghĩ vậy.) Bây giờ ... tôi bị kẹt. Sau đây cho thấy những gì tôi đang cố gắng thực hiện, nhưng nó không hoạt động:

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 -

Câu trả lời:


4

Thông tin video rõ ràng đang được chuyển qua, nhưng đó là "tuyết" màu xanh lá cây ở kích thước khung hình phù hợp, với gợi ý về hình ảnh thực tế đang nhảy múa bên trong tuyết xanh khủng khiếp.

Đây phải là định dạng pixel. Bạn đang áp dụng xyz2rgbbộ lọc chuyển đổi không gian màu DCP thành RGB và sau đó bạn đang chuyển video thô sang ffplay. Ở đây, bạn đang áp dụng các xyz2rgbbộ lọc một lần nữa , mà có lẽ làm cho distortiions, vì FFmpeg không có ý tưởng như thế nào video thô được mã hóa. Nó sẽ làm bất cứ điều gì bạn muốn với video, thậm chí chuyển đổi không gian màu hai lần.


Tôi đã có kết quả tốt khi định dạng Matroska ffplaythay vì rawvideo, điều này cũng mang đến cho bạn khả năng giải mã âm thanh (xem bên dưới). Định dạng Matroska có thể chứa bất kỳ loại tiền mã hóa nào.

Lưu ý rằng thứ tự các tùy chọn quan trọng trong FFmpeg và có lẽ bạn nên sử dụng phiên bản mới hơn vì nó nghiêm ngặt hơn về nơi bạn đặt các tùy chọn:

  • Tùy chọn toàn cầu như -yđến đầu tiên.
  • Sau đó, chỉ định các tùy chọn để đọc tệp đầu vào - -r 24buộc tốc độ khung hình cho picture.mxftệp.
  • Sau đó chỉ định tất cả các tập tin đầu vào.
  • Sau đó đến các tùy chọn codec như bộ lọc video, bitrate video, v.v.

Trong tình huống của bạn, thật hợp lý khi chỉ sao chép luồng âm thanh, vì chúng tôi không thực sự cần phải chuyển mã nó. Video phải được chuyển mã để có thể áp dụng bộ lọc.

Một cái gì đó như thế này nên làm. Lưu ý cách chúng tôi thiết lập rõ ràng định dạng đầu ra matroskavà cho phép tự ffplaytìm ra phần còn lại:

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 -

Tôi đã sử dụng cú pháp (IMO ít mơ hồ) cho các tùy chọn như -filter:vthay vì -vf, -b:vthay vì -vb-c:athay vì -acodec.

Nếu định dạng đó không phù hợp với bạn, hãy thử AVI:

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

Điều này làm việc cho tôi mà không gặp vấn đề gì và thậm chí nó không yêu cầu tôi sử dụng bộ lọc bạn cần. Âm thanh đã làm việc là tốt.


slhck, cảm ơn bạn vì điều này! OK, tôi đã nhận được điều này: <br/> <br/> Không thể tìm thấy định dạng đầu ra phù hợp cho '-filter: v' -filter: v: Đối số không hợp lệ <br> <br> ?? (tương tự cho -vf). Bộ giải mã & bộ lọc là từ đây: goo.gl/avE1f - tác giả đã viết nó và thiết kế một bản cài đặt tùy chỉnh của ffmpeg (chỉ có một phiên bản hoạt động với quy trình này và các tệp của anh ta) bao gồm bộ lọc không gian màu và codec độc quyền, và do đó có thể giải mã nó. Cài đặt ffmeg tùy chỉnh cần có khả năng đọc chuỗi hình ảnh JPEG2000 MJPEG độc quyền có trong hình ảnh MFX. Nếu điều đó giúp ghi chú :)
Bill Rudolph Yaber Russell

Ôi trời, tôi là một hình nộm, tôi đã quên xóa dấu ngắt "\" trên dòng lệnh. Dù sao, bây giờ khi tôi nhập đề xuất của bạn, các số hiển thị phát trực tuyến nhưng không có cửa sổ nào mở ra, sau đó khoảng 20 giây, nó dừng lại với: <br /> <br /> Lỗi phân đoạn: 1136.0 kích thước = 138kB thời gian = 00: 00: 00,08 = 13445,2kbit / s
Bill Rudolph Yaber Russell


Cảm ơn bạn rất nhiều cho video. Trước hết, lệnh rawvideo đầu tiên của bạn có vấn đề là bạn chỉ định kích thước sai. Đầu vào của bạn có 500x270, hoặc ít nhất đó là những gì được đưa vào ffplay. Ngoài ra, đầu ra của bạn có rgb48leđịnh dạng pixel (vì bộ lọc), nhưng ffplaygiả sử yuv420p, vì vậy bạn cũng cần chỉ định rằng : ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -. Đối với segfault: Không có ý tưởng nào có thể bạn có thể tạo và tải lên một tệp thử nghiệm nhỏ ở đâu đó?
slhck

Ooo goodie, tập tin thử nghiệm! Thật vậy, cảm ơn. Lý do cho 500x270 là tôi đã chỉ định "lores 2", nó cắt giảm kích thước hai lần (để vừa với màn hình gọn gàng cho bạn :) Vì vậy, dường như tôi đã bỏ lỡ một cái. Nói một cách dễ hiểu, tập tin này là một DCP tự chế (nghĩ về "in phim kỹ thuật số" cho một rạp chiếu phim, đó là lý do tại sao các phương tiện truyền thông rất kỳ lạ), 2K ở 1998x1080 (khía cạnh 1,85 pixel vuông). Khi trích xuất chuỗi hình ảnh, nó chính xác, và tôi đã gửi gói ngày hôm qua và họ đã phát nó trên một DLP trong rạp chiếu phim nơi nó sẽ được chiếu (cho một đêm trong lễ hội) - và nó đã đúng (phew!).
Bill Rudolph Yaber Russell

3

Điều này sẽ không chuyển mã các luồng:

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

-map 1:1= tệp thứ hai, luồng 1 (thường là âm thanh). -c copy= -c:v copy -c:a copy. Theo mặc định, tệp muxed dài bằng tệp dài hơn, nhưng -shortestsẽ làm cho nó dài bằng tệp ngắn hơn.


Cảm ơn bạn cho thông tin này. Tôi không cần một tập tin đầu ra, nhưng những công tắc này thực sự tốt để biết.
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 -

Đối với mục đích của tôi, điều này cho phép xem xét nhanh các nội dung của DCP (Gói rạp chiếu phim kỹ thuật số) mà bạn có thể xây dựng bằng các công cụ nguồn mở . DCP sử dụng không gian màu xyz, vì vậy bạn cần cài đặt bộ lọc video xyz , nếu không bạn không thể sử dụng nó trong dòng trên. (Không sao đâu, nó sẽ trông có màu cam đậm, bạn sẽ không nhìn thấy màu sắc thực sự.)

Tôi đã thêm b / c codec mpeg2video, mặc dù giảm chất lượng, tốc độ thấp và bộ đệm một chút, vì vậy nó hoạt động trơn tru hơn trên máy của tôi. (Ngoài ra, vì một số lý do, trước khi không chuyển mã, tôi chỉ nhận được một khung hình đóng băng từ chuỗi jpeg2000 mjpeg với tốc độ 125mb / s từ MXF, trừ khi tôi bắt đầu "- ss 0", tức là vào lúc bắt đầu tệp.) Với máy RẤT NHANH, chỉ định không có codec (loại bỏ "-c: v mpeg2video"), kích thước đầy đủ ("-lores 0") và bắt đầu từ 0 (-ss 0), về mặt lý thuyết bạn có thể xem lại rạp chiếu phim 2K chất lượng DCP chính xác như là. Chà, ngoại trừ mọi hướng dẫn đặc biệt có trong XML - phụ đề hoặc lập trình khác. Nhưng nói chung. (BTW "-ac: 2" downmixes 5.1 đến 2.0 - mặc dù bạn có thể có phần cứng hỗ trợ thử giọng 5.1, trong trường hợp đó sử dụng "-c: một bản sao".)

Cảm ơn Matthias tại Belle-Nuit , và slhck ở trên vì đã BỆNH NHÂN để tôi vượt qua điều này. Cảm ơn bạn!!!! Điều này khá hữu ích. Và trên thực tế, đã cứu tôi khỏi một buổi chiếu phim có khả năng gây lúng túng tại nhà hát Aero tối chủ nhật. Đánh số thứ tự hình ảnh của tôi nằm ngoài chuỗi - tìm thấy nó với cái này và đã sửa!

Ồ, tất cả điều này chỉ cho một dòng lệnh, ai biết được;)

Che bd - b worldpoop.com


Tôi đã gặp lỗi này: Không có bộ lọc như vậy: 'xyz2rgb'
Dr.jacky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.