Hôm nay mình xin chia sẻ cách quay Video màn hình và live stream Youtube bằng ffmpeg. Đây cũng là một thủ thuật nhỏ trong ffmpeg mà ít người chia sẻ tại vì cũng ít khi dùng đến. Đôi khi nó lại cần thiết với một số người nên bài viết này mình cũng chia sẻ những hiểu biết của mình ở mức độ cơ bản về việc quay Video màn hình bằng ffmpeg.
Đầu tiên các bạn cần phải hiểu tại sao phải dùng ffmpeg để quay Video màn hình mà không sử dụng các phần mềm quay màn hình hiện có như OBS Studio hay Mirillis Action, thao tác sử dụng đơn giản, chất lượng Video cao và hỗ trợ Live stream trực tiếp lên Youtube. Một cách hiểu đơn giản đó là khi làm việc với ffmpeg thì chúng ta sử dụng Video đầu vào và tùy chỉnh qua các dòng code và theo như dân MMO Youtube gọi đó là “lách” để đưa Video đó lên Youtube một cách “hợp pháp” hơn.
Và một số trường hợp chúng ta muốn live stream Video đang phát trực tiếp mà không thể nào lấy được link Video đang live thì bắt buộc chúng ta cũng phải quay màn hình. Với việc hỗ trợ của các phần mềm Record màn hình thì lại quá đơn giản nhưng mấy ai đã biết cách live stream Video đang live bằng cách quay Video màn hình bằng ffmpeg.
Đầu tiên các bạn phải tải chương trình này về để hỗ trợ quay video màn hình cùng ffmpeg:
Tải về screen-capture-recorder
Sau khi tải về cài đặt vào máy tính bình thường.
Sử dụng thư viện DirectShow để quay Video màn hình bằng ffmpeg. Bạn mở cmd tại thư mục chứa file ffmpeg.exe và chạy code bên dưới:
ffmpeg.exe -f dshow -framerate 10 -i video="screen-capture-recorder" -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -vsync vfr ouput_video.mp4
Bạn sẽ bắt đầu quá trình Record màn hình bằng ffmpeg, để kết thúc Record bạn nhấn phím q trên bàn phím.
Các bạn Download code quay Video màn hình bằng ffmpeg được thu nhỏ trên Background về tham khảo tại đây: Download.
Download Background sử dụng trong bài viết này: Download.
Code trên chỉ thu mỗi hình ảnh trên màn hình máy tính và Vieo sau khi Record sẽ không có tiếng. Nếu bạn muốn thu luôn âm thanh đang phát trên máy tính hoặc âm thanh từ Micro thì phải thêm Device Audio vào đoạn code của mình.
Đối với mỗi máy tính thì Device Audio khác nhau nên bạn phải Show tất cả các Devices bằng câu lệnh bên dưới (cũng chạy bằng cmd trên thư mục chứa ffmpeg):
ffmpeg -list_devices true -f dshow -i dummy
Bạn sẽ thấy các Devices hiện có, tìm Device âm thanh và copy tên Device âm thanh để đưa vào code. Ở máy tính mình Device âm thanh có tên “virtual-audio-capturer”. Bạn bôi đen và nhấn Ctrl+C để copy trên cmd.
Đưa vào code để thu cả âm thanh và hình ảnh. Bạn thấy mình đã thêm Device Âm thanh đúng với tên Device đã Show ở bên trên: audio=”virtual-audio-capturer”
Code hoàn chỉnh Record màn hình và âm thanh hệ thống (trên máy tính mình):
ffmpeg.exe -f dshow -framerate 10 -i video="screen-capture-recorder":audio="virtual-audio-capturer" -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -vsync vfr ouput_video_screen.mp4
Mình cũng đã thử nghiệm đưa Video quay màn hình đó và thu nhỏ trên một Background như các bạn thấy bên trên. Đây chỉ là code cơ bản và chưa có lách gì nhiều vì mình cũng lâu rồi không làm việc với code ffmpeg đối với Youtube. Các bạn tham khảo việc quay Video màn hình rồi lấy nguồn Video đó và tùy chỉnh qua code live stream của các bạn để có thể thực hiện công việc của mình.
Tham khảo thêm cách Live stream Video đang Live trên Youtube bằng ffmpeg tại bài viết này. Và cũng có một cách khác đó là sử dụng OBS Studio hay Action để quay Video màn hình và giả lập RTMP Server để stream Video và lấy Video live stream trên Server giả lập về sử dụng trong code ffmpeg xem tại bài viết này.
Có lẽ đây cũng là bài viết cuối mình chia sẻ về code ffmpeg. Hy vọng những bài viết trên Blog đã giúp các bạn có được những câu trả lời dù là cơ bản nhất đối với những vấn đề mà các bạn gặp phải. Chúc các bạn thành công.
Admin anh còn code quay màn hình nào của video đang live chia sẻ giúp em với . Code này thì em không chạy được , còn code lấy link *.m3u8 hay chết link nè anh. Em cám ơn vì tinh thần chia sẻ của anh
Code đó chạy được mà, anh record màn hình vẫn ok. Quên mất là bài viết chưa đính kèm screen-capture-recorder. Tải về cài đặt trước rồi chạy ffmpeg lại xem nha.
Còn getlink .m3u8 youtube cũng hơi khó vì mỗi lần sử dụng token truy cập khác nhau. Em thử cách getlink rồi đưa vào ffmpeg trực tiếp mà anh đã ghim trên bài viết xem sao. Cách đó thấy hiệu quả hơn đó.
screen-capture-recorder cái này sửa lại thành gì vậy admin :((
Cảm ơn bạn đã chia sẻ, mình đã theo dõi và đọc tất cả những bài viết của bác, quả thực rất công tâm.
Mình có sử dụng một số code trên nhưng không chạy được, không biết có phải do khác đời máy hay thế nào?
Nếu bác có thể thì share cho mình code live nguyên (không lách thu nhỏ) của một sự kiện trên YouTube. Mã m3u8 làm theo hướng dẫn của bác đã OK, nhưng cho vào code thì không chạy.
Nếu được bác share cho mình với, email: namro.yt@gmail.com
Cảm ơn bác rất nhiều với những series bài viết “chất” mà không mấy ai chia sẻ!
Thanks bác. Viết vì đam mê hồi trước còn dở dang thôi. Nếu bác không muốn lách thì đơn giản mà. Thử code này xem nhé: ffmpeg -re -i “*.m3u8” -vcodec libx264 -preset veryfast -maxrate 2500k -bufsize 3368k -vf “format=yuv420p” -g 60 -acodec libmp3lame -b:a 198k -ar 44100 -f flv -s 1280×720 “rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx”
Rất cảm ơn 2 bác. Bác Sơn Hoàng có số ko em call hỏi một chút được không ạ?
Cảm ơn adm,
Hôm nay mình mới nhận được email.
Vodka: sđt mình: 01643100299