Đồng bộ hóa âm thanh và video Python

Càng làm việc với FFmpeg, tôi càng khám phá ra nhiều khả năng của nó và nhận ra sức mạnh của nó. Cho đến nay tôi đã đề cập đến nhiều chức năng của FFmpeg bên cạnh các chuyển đổi định dạng thông thường. Với FFmpeg, bạn có thể truyền màn hình, ghi podcast, cắt tệp và thậm chí trộn các tệp âm thanh và video. Tuy nhiên, có nhiều hơn nữa để FFmpeg. Trong video YouTube này, tôi giải thích cách đồng bộ hóa âm thanh và video với FFmpeg

TLDW;

Để khắc phục vấn đề đồng bộ hóa, trước tiên, chúng ta phải biết bản chất của nó. Về cơ bản, tất cả các vấn đề về âm thanh và video không đồng bộ hóa đều do một trong hai nguyên nhân,

  • Âm thanh ở phía trước video [hoặc video phía sau âm thanh]
  • Âm thanh ở phía sau video [hoặc video ở phía trước âm thanh]

Một phần hơi khó hiểu là cả hai vấn đề đều có một giải pháp rất giống nhau, chỉ khác nhau về mức độ phiền toái. Đó là lý do tại sao tôi tách các giải pháp như sau

Sửa âm thanh trước video

Trong trường hợp này, chúng tôi phải trì hoãn việc phát âm thanh

nguồn

Để làm được điều đó, chúng tôi chạy ffmpeg như thế này,

$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:v:0 -map 1:a:0 out.mkv

Đừng hoảng sợ vì lệnh dài dòng. Thật dễ dàng khi bạn tìm hiểu cách thức hoạt động của từng công tắc

  • $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    2 – là viết tắt của
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    3. Nó được sử dụng để chuyển một tệp đầu vào tới FFmpeg. Trong trường hợp của chúng tôi, chúng tôi có hai tệp
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    4 và
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    5, vì vậy chúng tôi sử dụng hai tệp
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    2
  • $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    7 – đây là một tham số quan trọng trong lệnh này vì nó hướng dẫn FFmpeg thêm độ trễ ba giây vào luồng đầu vào.
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    8 nghĩa đen là bắt đầu đầu vào thứ hai sau ba giây kể từ khi đầu vào đầu tiên bắt đầu
  • $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    0 – yêu cầu FFmpeg cho codec âm thanh chỉ cần sao chép nó. Nếu chúng tôi muốn có thể chỉ định các mã khác như
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    1
  • $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    2 – giống như cái trước, ngoại trừ codec video
  • $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    3 – hướng dẫn FFmpeg sao chép/ánh xạ video của đầu vào đầu tiên sang tệp đầu ra
  • $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    4 – giống như trên, ngoại trừ nó sao chép âm thanh của đầu vào thứ hai sang tệp đầu ra

Điều gì xảy ra là đầu vào thứ hai mà chúng tôi lấy âm thanh của nó bắt đầu với độ trễ ba giây

Ở đây, giả định là âm thanh đi trước video trong ba giây. Thật không may, nếu bạn không biết chính xác độ trễ, không có cách nào dễ dàng hơn là thử và sai. Với một vài lần thử, bạn sẽ nhận được kết quả tốt. Tin tốt là, bạn có thể chi tiết như mili giây

Sửa âm thanh đằng sau video

Để sửa lỗi này, chúng tôi phải bắt đầu phát âm thanh sớm hơn. Nói cách khác, chúng ta phải bắt đầu video với độ trễ

nguồn

Để làm được điều đó, chúng ta có thể sử dụng lệnh trên và chỉ cần chỉnh sửa một chút,

$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv

Lưu ý rằng sự khác biệt duy nhất là các phần

$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
5. Chúng tôi đã hướng dẫn FFmpeg sao chép luồng video của đầu vào thứ hai [luồng bắt đầu với độ trễ ba giây] vào tệp đầu ra và sao chép âm thanh từ đầu vào [luồng phát không có độ trễ]

Về cơ bản, điều đó có nghĩa là phát âm thanh trước rồi phát video với độ trễ ba giây

Chuyển dấu thời gian tới
$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
7

Để đơn giản, trong tất cả các ví dụ đã cho, chúng tôi chuyển

$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
8 sang
$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
7. Nhưng tham số chấp nhận dấu thời gian dưới dạng hạt tính bằng mili giây. Ví dụ,

aeneas là một thư viện Python/C và một bộ công cụ để tự động đồng bộ hóa âm thanh và văn bản [còn gọi là căn chỉnh bắt buộc]

  • Phiên bản. 1. 7. 3
  • Ngày. 2017-03-15
  • Được phát triển bởi. Đọc Ngoài
  • Nhà phát triển chính. Alberto Pettarin
  • Giấy phép. Giấy phép Công cộng GNU Affero Phiên bản 3 [AGPL v3]
  • Tiếp xúc. aeneas@readbeyond. nó
  • đường dẫn nhanh. Trang chủ - GitHub - PyPI - Tài liệu - Hướng dẫn - Điểm chuẩn - Danh sách gửi thư - Ứng dụng web

Mục tiêu

aeneas tự động tạo bản đồ đồng bộ hóa giữa danh sách các đoạn văn bản và tệp âm thanh chứa lời tường thuật của văn bản. Trong khoa học máy tính, nhiệm vụ này được gọi là [tính toán tự động a] căn chỉnh bắt buộc

Ví dụ: với tệp văn bản này và tệp âm thanh này, aeneas xác định, đối với mỗi đoạn, khoảng thời gian tương ứng trong tệp âm thanh

________số 8

Bản đồ đồng bộ hóa này có thể được xuất thành tệp ở một số định dạng, tùy thuộc vào ứng dụng của nó

  • nghiên cứu. Sự táo bạo [AUD], ELAN [EAF], TextGrid;
  • xuất bản kỹ thuật số. CƯỜI cho EPUB 3;
  • phụ đề chi tiết. SubRip [SRT], SubViewer [SBV/SUB], TTML, WebVTT [VTT];
  • mạng. JSON;
  • chế biến thêm. CSV, SSV, TSV, TXT, XML

Cài đặt

Trình cài đặt tất cả trong một có sẵn cho Mac OS X và Windows và tập lệnh Bash cho các bản phân phối Linux dựa trên deb [Debian, Ubuntu] được cung cấp trong kho lưu trữ này. Cũng có thể tải xuống máy ảo VirtualBox + Vagrant. Vui lòng xem tệp CÀI ĐẶT để biết quy trình cài đặt chi tiết, từng bước cho các hệ điều hành khác nhau

Quy trình chung không phụ thuộc vào hệ điều hành rất đơn giản

  1. Cài đặt Python [2. 7. x được ưu tiên], FFmpeg và eSpeak

  2. Đảm bảo rằng các tệp thực thi sau có thể được gọi từ trình bao của bạn.

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    2,
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    3,
    pip install numpy
    pip install aeneas
    
    0,
    pip install numpy
    pip install aeneas
    
    1 và
    pip install numpy
    pip install aeneas
    
    2

  3. Đầu tiên cài đặt

    pip install numpy
    pip install aeneas
    
    3 với
    pip install numpy
    pip install aeneas
    
    1 và sau đó là
    pip install numpy
    pip install aeneas
    
    5

    pip install numpy
    pip install aeneas
    

  4. Để kiểm tra xem bạn đã cài đặt aeneas đúng chưa, hãy chạy

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    6

Cách sử dụng

  1. Chạy mà không có đối số để nhận thông báo sử dụng

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    7

    Bạn cũng có thể nhận danh sách các ví dụ trực tiếp mà bạn có thể chạy ngay trên máy của mình nhờ các tệp đi kèm

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    8

  2. Để tính toán bản đồ đồng bộ hóa

    pip install numpy
    pip install aeneas
    
    6 cho một cặp [
    pip install numpy
    pip install aeneas
    
    7,
    pip install numpy
    pip install aeneas
    
    8 ở định dạng văn bản thuần túy], bạn có thể chạy

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    2

    [Lệnh đã được chia thành các dòng với

    pip install numpy
    pip install aeneas
    
    9 để dễ nhìn; trong sản xuất, bạn có thể có toàn bộ lệnh trên một dòng và/hoặc bạn có thể sử dụng các biến trình bao. ]

    Để tính toán bản đồ đồng bộ hóa

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    60 cho một cặp [
    pip install numpy
    pip install aeneas
    
    7, trang. xhtml chứa các đoạn được đánh dấu bằng thuộc tính
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    62 như
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    63], bạn có thể chạy

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    8

    Như bạn có thể thấy, đối số thứ ba [chuỗi cấu hình] chỉ định các tham số kiểm soát các định dạng I/O và các tùy chọn xử lý cho tác vụ. Tham khảo tài liệu để biết chi tiết

  3. Nếu bạn có một số nhiệm vụ cần xử lý, bạn có thể tạo một bộ chứa công việc để xử lý chúng hàng loạt

    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    9

Tệp

$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
64 phải chứa tệp cấu hình
$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
65 hoặc
$ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
66, cung cấp cho aeneas tất cả thông tin cần thiết để phân tích nội dung đầu vào và định dạng tệp bản đồ đồng bộ hóa đầu ra. Tham khảo tài liệu để biết chi tiết

Tài liệu này chứa một hướng dẫn được đề xuất cao giải thích cách sử dụng các công cụ dòng lệnh tích hợp

Tài liệu và hỗ trợ

  • Tài liệu. http. //www. đọc xa hơn. nó/aeneas/docs/
  • Hướng dẫn công cụ dòng lệnh. http. //www. đọc xa hơn. nó/aeneas/docs/clitutorial. html
  • thư viện hướng dẫn. http. //www. đọc xa hơn. nó/aeneas/docs/libtutorial. html
  • Hướng dẫn cũ, dài dòng. Giới thiệu thực tế về gói aeneas
  • Danh sách gửi thư. https. //các nhóm. Google. com/d/forum/aeneas-buộc-liên kết
  • Nhật ký thay đổi. http. //www. đọc xa hơn. nó/aeneas/docs/changelog. html
  • Mô tả cấp cao về cách hoạt động của aeneas. LÀM THẾ NÀO NÓ HOẠT ĐỘNG
  • lịch sử phát triển. LỊCH SỬ
  • thử nghiệm. KIỂM TRA
  • bộ điểm chuẩn. https. // đọc được. github. io/aeneas-benchmark/

Các tính năng được hỗ trợ

  • Nhập tệp văn bản ở định dạng
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    67,
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    68,
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    69 hoặc
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    70 [XML]
  • Các tệp văn bản đầu vào đa cấp ở định dạng
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    71 và
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    72 [XML]
  • Trích xuất văn bản từ XML [e. g. , XHTML] sử dụng các thuộc tính
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    62 và
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    74
  • Độ chi tiết của đoạn văn bản tùy ý [từ đơn, cụm từ phụ, cụm từ, đoạn văn, v.v. ]
  • Nhập định dạng tệp âm thanh. tất cả những thứ có thể đọc được bởi
    $ ffmpeg -i file.mkv -itsoffset 3 -i file.mkv -c:a copy -c:v copy -map 0:a:0 -map 1:v:0 out.mkv
    
    3
  • Đầu ra các định dạng bản đồ đồng bộ hóa. AUD, CSV, EAF, JSON, SMIL, SRT, SSV, SUB, TEXTGRID, TSV, TTML, TXT, VTT, XML
  • Xác nhận làm việc trên 38 ngôn ngữ. AFR, ARA, BUL, CAT, CYM, CES, DAN, DEU, ELL, ENG, EPO, EST, FAS, FIN, FRA, GLE, GRC, HRV, HUN, ISL, ITA, JPN, LAT, LAV, LIT,
  • MFCC và DTW được tính toán thông qua phần mở rộng Python C để giảm thời gian xử lý
  • Một số trình bao bọc động cơ TTS tích hợp. AWS Polly TTS API, eSpeak [mặc định], eSpeak-ng, Festival, MacOS [thông qua say], Nuance TTS API
  • TTS mặc định [eSpeak] được gọi thông qua tiện ích mở rộng Python C để tổng hợp âm thanh nhanh
  • Khả năng chạy trình bao bọc Python của công cụ TTS tùy chỉnh, do người dùng cung cấp [e. g. , bao gồm ví dụ cho bài phát biểu]
  • Xử lý hàng loạt nhiều cặp âm thanh/văn bản
  • Tải xuống âm thanh từ video YouTube
  • Trong chế độ đa cấp, căn chỉnh đệ quy từ đoạn này sang câu khác đến cấp độ từ
  • Trong chế độ đa cấp độ, độ phân giải MFCC, mặt nạ MFCC, lề DTW và công cụ TTS có thể được chỉ định độc lập cho từng cấp độ
  • Mạnh mẽ chống lại các từ viết sai chính tả/phát âm sai, sắp xếp lại các từ cục bộ, tiếng ồn xung quanh/đột biến rời rạc
  • Thời gian tách có thể điều chỉnh, bao gồm giới hạn ký tự/giây tối đa cho các ứng dụng CC
  • Tự động phát hiện đầu/đuôi âm thanh
  • Xuất tệp HTML để tinh chỉnh bản đồ đồng bộ theo cách thủ công [dự án ____176]
  • Các tham số thực thi có thể điều chỉnh trong thời gian chạy
  • Mã phù hợp cho việc triển khai ứng dụng Web [e. g. , phiên bản điện toán đám mây theo yêu cầu]
  • Bộ thử nghiệm mở rộng bao gồm hơn 1.200 thử nghiệm đơn vị/tích hợp/hiệu suất, chạy và phải vượt qua trước mỗi lần phát hành

Giấy phép

aeneas được phát hành theo các điều khoản của Giấy phép Công cộng GNU Affero Phiên bản 3. Xem tệp GIẤY PHÉP để biết chi tiết

Bạn có thể tìm thấy giấy phép cho mã của bên thứ ba và các tệp có trong aeneas trong thư mục giấy phép

Không có quyền sao chép nào bị tổn hại trong quá trình tạo dự án này

nhà tài trợ

  • tháng 7 năm 2015. Michele Gianella đã hào phóng hỗ trợ phát triển mã điều chỉnh ranh giới [v1. 0. 4]

  • tháng 8 năm 2015. Michele Gianella đã tài trợ một phần việc chuyển mã MFCC/DTW sang C [v1. 1. 0]

  • tháng 9 năm 2015. những người bạn ở Tây Phi đã tài trợ một phần cho việc phát triển mã phát hiện đầu/đuôi [v1. 2. 0]

  • tháng 10 năm 2015. một khoản đóng góp ẩn danh đã tài trợ cho việc phát triển tùy chọn "Trình tải xuống YouTube" [v1. 3. 0]

  • tháng 4 năm 2016. Quỹ Fruch vui lòng tài trợ cho sự phát triển và tài liệu của v1. 5. 0

  • tháng 12 năm 2016. Centro Internazionale Del Libro Parlato "Adriano Sernagiotto" [Feltre, Ý] đã tài trợ một phần cho sự phát triển của phiên bản v1. 7 loạt

    Có ứng dụng nào để đồng bộ hóa âm thanh và video không?

    WeVideo là một ứng dụng có sẵn cho cả nền tảng Android và iOS . Bạn có thể sử dụng ứng dụng này để đồng bộ hóa video và âm thanh mà không làm giảm chất lượng ban đầu. Giao diện đơn giản hóa cho phép truy cập trực tiếp vào các tính năng, giảm bớt quá trình chỉnh sửa.

Chủ Đề