2012-04-12 58 views
8

Tôi thực sự sẽ đánh giá cao nếu ai đó có thể cung cấp cho một số gợi ý liên quan đến việc sử dụng của nó với ffmpeg. Tôi đã đọc một số bài viết về chủ đề này, một số người trong số họ giải thích rất rõ ràng làm thế nào để tái đồng bộ hóa âm thanh và video với -itsoffset, nhưng tôi đã không thể làm cho nó hoạt động. file avi của tôi được mã hóa với ffmpeg, trong hai đèo, sử dụng lệnh sau đây để đèo thứ hai:ffmpeg dòng lệnh bù đắp (-itsoffset) không làm việc

ffmpeg -i whole-vts_01.avs -pass 2 -y -vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k output.avi 

Đối với bất cứ lý do, tôi kết thúc với một sự chậm trễ 1 giây trong đoạn video (hoặc audio là 1 giây đầu). Nó không xảy ra quá thường xuyên nhưng thỉnh thoảng tôi thấy nó. Trong nỗ lực khác, tôi đã thử như sau:

(1) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.avi -vcodec copy -acodec copy -map 0:0 -map 1:1 output-resynched.avi 
(2) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched2.avi 
(3) ffmpeg -itsoffset -00:00:01.00 -i output.avi output-resynched8.avi 
(4) ffmpeg -i output.avi -itsoffset -1.0 -i output.avi -vcodec copy -acodec copy -map 0:1 -map 1:0 output-resynched13.avi 

Dưới đây là kết quả:

  1. âm thanh bị cắt xén và chỉ dài 5m 35 s vs 1h 41m.
  2. (Output.ac3 là thành phần âm thanh của output.avi) Video và âm thanh giống hệt với gốc, offset không hoạt động
  3. Âm thanh đã được thay đổi, nhưng các tham số mã hóa ban đầu được thay thế bằng mặc định (như mong đợi).
  4. Âm thanh bị cắt xén và chỉ dài 9m 56s so với 1h 41m.

Tôi thấy rằng nhiều người giải thích và dường như sử dụng quy trình được mô tả ở trên, nhưng dường như nó không hoạt động đối với tôi. Tôi có thiếu một cái gì đó hiển nhiên? Tôi rất muốn có thể sử dụng -bắt đầu vì nó sạch hơn giải pháp workaround của tôi.

FWIW, đây là một cách khác nhau, và còn thu được các kết quả mong muốn:

Đầu tiên tạo ra một đoạn video chuyển chỉ nộp bằng -ss:

ffmpeg -i output.avi -ss 1.0 -vcodec copy -an oupput_videoshifted.avi 

Sau đó giải nén âm thanh:

ffmpeg -i output.avi -vn -acodec copy outputaudioonly.ac3 

Và cuối cùng remux cả hai thành phần:

ffmpeg -i output_videoshifted.avi -i output_audioonly.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched14.avi 

Quy trình hoạt động, đủ nhanh, nhưng tôi thực sự thích sử dụng giải pháp pass -itsoffset.

+0

Có một [lỗi mở] (http://roundup.libav.org/issue359) với cờ '-itsoffset' có thể có liên quan đến vấn đề bạn đang gặp phải. Mặt khác, âm thanh bị cắt xén và cắt ngắn như âm thanh nghiêm trọng hơn là không ổn. Nếu đây vẫn là một vấn đề, bạn đang sử dụng phiên bản FFmpeg nào? – blahdiblah

Trả lời

4

Đây là những gì tôi đã làm và nó làm việc cho tôi

Các đầu vào đầu tiên thiết lập -i và đầu vào thứ hai được xuất phát từ một file video tương tự.

trễ 1 giây trong video đầu vào đầu tiên và âm thanh đầu vào thứ hai vừa tạo một bản sao

ffmpeg -y -itsoffset 00:00:01.000 -i "d:\Video1.mp4" -i "d:\Video1.mp4" 
-map 0:v -map 1:a -vcodec copy -acodec copy 
-f mp4 -threads 2 -v warning "Video2.mp4" 

trễ 1 giây trong âm thanh đầu vào thứ hai và video đầu vào đầu tiên chỉ tạo một bản sao

ffmpeg -y -i "d:\Video1.mp4" -itsoffset 00:00:01.000 -i "d:\Video1.mp4" 
-map 0:v -map 1:a -vcodec copy -acodec copy 
-f mp4 -threads 2 -v warning "Video2.mp4" 
0

Vấn đề nằm ở -vcodec copy -acodec copy vì chuyển dịch sẽ chỉ hoạt động trên khung hình chính. Tôi đã có cùng một vấn đề.

Chỉ cần đừng sao chép (audio /) video, hãy thử điều với -itsoffset, nhưng sử dụng

-vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k 

tái mã hóa. Nó sẽ hoạt động.

Các vấn đề liên quan