Làm cách nào để xóa đoạn âm thanh khỏi tệp video mp4?


Câu trả lời:


110

Đầu tiên chạy ffmpeg -i file.mp4để xem luồng nào tồn tại trong tệp của bạn. Bạn sẽ thấy một cái gì đó như thế này:

Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s

Sau đó chạy ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4để sao chép luồng video và luồng âm thanh thứ 2 sang new_file.mp4.


3
Trên Windows, lệnh này đã báo lỗi Option map (set input stream mapping) cannot be applied to input file file.mp4 new_file.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.: để sửa lỗi, chỉ cần thay đổi thứ tự của các đối số:ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
MrLore

Lỗi tương tự như @MrLore trên OS X.
Oskar Persson

1
Ubuntu cũng vậy!
Tommaso

Cũng hoạt động với định dạng MKV
user3405291

1
Bạn có thể sử dụng tùy chọn chung hơn -c copyđể có các luồng giống hệt nhau cho âm thanh, video nhưng cũng có phụ đề : ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4.
Futal

97

Vấn đề liên quan Việc xóa tất cả các bản âm thanh khỏi tệp mp4 có thể được thực hiện như vậy:

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4

1
Điều này mang lại cho tôi lỗi The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.Nhưng tôi đã thêm những lá cờ đó và nó vẫn giống nhau ...?
poshaughnessy


Nhận xét của poshaughnessy: dường như có một số thông tin ở đây: stackoverflow.com/questions/32931685/ nam Cuộc thảo luận cho thấy các phiên bản gần đây của ffmpeg không gặp phải vấn đề "thử nghiệm aac". Theo nguyên tắc chung, sẽ giúp chẩn đoán sự cố của bạn nếu bạn nêu phiên bản phần mềm bạn đang sử dụng và cú pháp chính xác của lệnh (sau khi bạn thêm cờ) gây ra lỗi (xem câu trả lời của freeseek. ). Trong trường hợp cụ thể này, thông tin video từ tệp đầu vào cũng có thể hữu ích.
Greg Marks

8

Xác định số luồng:

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...

Sử dụng -map _file_:_stream_để chọn luồng nào cần xử lý và đầu ra

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4

xem: https://ffmpeg.org/ffmpeg.html#Avised-options


4

Bạn có thể thử avidemuxchỉ xử lý một tệp âm thanh bên trong (và do đó buộc bạn phải chọn một bản nhạc cụ thể). Tôi chưa bao giờ thử nó với .mp4 nhưng nó hoạt động với các định dạng khác.


Không hoạt động tốt. Có thể đó là một lỗi, nhưng âm thanh trở lại bị hỏng, mặc dù nó thực hiện công việc (loại bỏ phần còn lại của các bản âm thanh).
tshepang

3

Tôi đã sử dụng Avidemux (GUI) nhiều lần và ffmpeg (console).

Trong Avidemux, bạn chọn "Âm thanh" -> "Chọn bản nhạc" trong menu chính; sau đó lưu video của bạn dưới dạng tệp mới.

Thật thú vị, trong một số trường hợp, Avidemux tạo ra đầu ra "tốt hơn" so với ffmpeg.

chỉ trong trường hợp, Avidemux và ffmpeg có trong kho Fedora Linux tiêu chuẩn. (Tôi chắc chắn rằng chúng cũng là tiêu chuẩn trong các hương vị Linux khác.)


1

-vnhoặc -ansẽ xóa tất cả các bản nhạc hoặc video. Cung cấp -vn -acodec copysẽ loại bỏ video; -an -vcodec copysẽ loại bỏ tất cả âm thanh.

-vcodec copychỉ định rằng ffmpeg nên sao chép thẳng đoạn video hiện có (và không thực hiện bất kỳ xử lý / mã hóa nào của nó). Nếu bạn không chỉ định nó, thì nó vẫn hoạt động nhưng ffmpeg có thể mã hóa lại đoạn video hiện có và hoạt động sẽ sử dụng nhiều CPU hơn và có thể mất nhiều thời gian hơn.


0

Sử dụng avidemux trong dòng lệnh.

(Trong GUI Avidemux, như đã được giải mã trong https://unix.stackexchange.com/a/85834/4319 ở trên, bạn chỉ cần chọn / bỏ chọn các bản âm thanh và lưu tệp. (Mọi thứ được sao chép vào AVI mới.))

Tôi đã xem loại dự án nào được lưu dưới dạng các chương trình SpiderMonkey hoặc TinyPy cho các hành động của mình và hóa ra dự án SpiderMonkey (JavaScript) thiếu các hành động lựa chọn theo dõi âm thanh mà tôi cần, nhưng dự án TinyPy (Python) đã làm họ

Tôi đã xóa mọi thứ không liên quan (hàng tá dòng không cần thiết) và đây là những gì tôi nhận được trong some_series.py:

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()

adm.audioClearTracks()
adm.audioAddTrack(1)

Nó rời khỏi track 1, nhưng giảm track 0.

Sau đó, tôi đã chạy một chuyển đổi hàng loạt của nhiều tệp với một lệnh như thế này:

for f in *.avi; do avidemux3_cli --nogui --load "$f" --run ../some_series.py --save ../some_series/"${f%%.rus.eng.avi}".eng.avi --quit; done

Nó sao chép tất cả mọi thứ, nhưng bỏ tất cả trừ đoạn âm thanh cần thiết.

Cách chạy avidemux từ dòng lệnh được tôi học từ https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_ Processing , mặc dù họ không đề cập đến các tập lệnh Python, chỉ có các tập lệnh JS ( mà không làm việc cho tôi).


-1

Nếu bạn không quan tâm chương trình là GUI, với trình chỉnh sửa video của Blender , bạn có thể làm điều đó và hơn thế nữa.


-2

Các ffmpegchương trình đã được thay thế bằng avconv. avconvcó cách sử dụng rất giống với ffmpeg, do đó tất cả các lệnh trong bài viết này có thể giống như:

avconv <old ffpmeg command line options>

Theo liên kết này để cài đặt avconvnếu bạn đang trên Ubuntu.


-3

FFMPEG có thể là một giải pháp hữu ích cho bạn.

$ man ffmpeg

Tôi đã có một cái nhìn ngắn gọn, và nó khá dày đặc. Tôi đã tìm kiếm "âm thanh" và "âm thanh theo dõi" và không có gì rõ ràng.
tshepang

@Tshepang, "theo dõi" là mơ hồ, đó có thể là lý do tại sao FFmpeg thích thuật ngữ chính xác hơn. FFmpeg coi âm thanh đi vào "luồng", mỗi luồng bao gồm một hoặc nhiều "kênh". AFAICT, mỗi kênh là đơn âm, với luồng mô tả (các) đầu ra nào sẽ được gửi (pned) theo mặc định. Ví dụ, một luồng âm thanh nổi bao gồm hai kênh, một kênh được gửi đến đầu ra bên trái của soundcard theo mặc định và kênh còn lại được gửi đến đầu ra bên phải của soundcard theo mặc định.
sampablokuper
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.