Захоплення відео на екрані Android


195

Забудьте про скріншоти, чи можливо знімати відео запущеної програми в android? Укорінене чи не вкорінене, мені все одно, я хочу принаймні 15 кадрів в секунду.

Оновлення: я не хочу зовнішнього обладнання. Завдання полягає в тому, щоб зробити його ідеально портативним, і кожен кадр буде зроблений в ОС Android. Якщо він перетинає межі sdk програми, я хочу перейти на зміни рівня ОС, але мені знадобиться відправна точка.


Я повністю бачу, що тут говорять. Схоже, емулятор повинен мати функцію перенаправлення поточного екрана також у відеофайл. Я б хотіла подібну функцію, щоб я могла робити інформативні відео про свої ігри та програми.
Роберт Массайолі

1
Ви отримали рішення для цього? якщо так, будь ласка, поділіться з нами. Я теж повинен caputre відео андроїд екрану.
деепа

@deepa nope немає хорошого способу зробити це.
Taranfx

Перевірте цей проект: sourceforge.net/projects/ashot
Nirmal Patel

Чи можна читати з апаратного буфера екрана?
мП.

Відповіді:


244

Android 4.4 (KitKat) та новіші пристрої мають утиліту оболонки для запису екрана пристрою Android. Підключіть пристрій у режимі розробника / налагодження під керуванням KitKat із утилітою adb через USB та введіть наступне:

adb shell screenrecord /sdcard/movie.mp4
(Press Ctrl-C to stop)
adb pull /sdcard/movie.mp4

Запис екрана обмежений максимум 3 хвилинами.

Довідка: https://developer.android.com/studio/command-line/adb.html#screenrecord


дає мені відповідь, як screenrecord: не знайдено adb застаріло чому?
Отрута

1
Здається, ваш Android SDK застарів. Відкрийте диспетчер SDK для Android та завантажте найновіші інструменти SDK.
Джо Фернандес

1
Соромно, що аудіо з цим немає. Але дивовижне, тим не менше.
Мартін Каподічі

1
Додамо лише, що на цій сторінці є пакет з окремим сценарієм adb + "ScreenRecord.bat", який можна двічі клацнути, щоб почати запис відео на екрані Android. Skipser.com/p/2/p/record-screen-video-in -android.html
arunskrish

1
Я отримую помилку ПОПЕРЕДЖЕННЯ: linker: libsac3d.so має переїзд тексту. Це витрачає пам'ять і є ризиком для безпеки. Виправте, будь ласка. ПОМИЛКА: не вдалося налаштувати кодек (помилка = -2147483648) ПОПЕРЕДЖЕННЯ: не вдалось у 1080x1920, повторне повторення у
720x1280

17

Я знаю, що це давнє запитання, але оскільки це, здається, не відповідає на вподобання ОП. Існує додаток, який підтверджує це у посиланні Android Market Screencast


29
Варто згадати, що для цього потрібен корінь, btw.
themightyjon

Не працює на моєму HTC One. Хоча добре працював і на моєму Galaxy S II.
MiloDC

1
Для цього не потрібен корінь. Поки що здається перспективним ... droid-at-screen.ribomation.com/installation
Fraggle

дроїд на екрані не робить відео, @Fraggle. Просто скріншоти. Він може робити безперервне захоплення, але зі швидкістю близько 1 кадрів в секунду.
Майкл Петротта

В даний час я використовую цей sourceforge.net/projects/ashot, щоб просто показати екран на моєму комп'ютері, а потім використовую мої стандартні інструменти (SnapPro X) для зйомки фільму з цієї частини екрана. Не впевнений, яка частота кадрів є на ашоті, але я думаю, що вище 1 кадрів в секунду.
Fraggle

8

Так, використовуйте телефон із відеовиходом та використовуйте відеореєстратор для захоплення потоку

Дивіться цю статтю http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html


Це я міг би зробити, але моя вимога - робити все, що знаходиться всередині Android. Змусити це працювати на ходу - це наміри.
Таранфкс

1
Я думаю, що вам не пощастило - вимоги по обробці такої великої кодування відео, на льоту, на мобільному пристрої, виходять за рамки того, що більшість фізично здатні, Android (AFAIK) не має інтерфейсу для доступу до потоку , і навіть якщо це станеться, це потенційно величезна діра в безпеці, оскільки додаток може шпигувати за користувачем.
Оллі С

4

@taranfx, без додаткової інформації, я припускаю, оскільки ви перебуваєте на StackOverFlow, що у вас встановлені Android Developer Tools. Якщо це так, ви можете запустити емулятор, а потім скористатися однією з безлічі програм зйомки екрану робочого столу для захоплення запущеної програми. Екран потоку на Mac працює чудово для цього. Я впевнений, що є багато хороших програм для зйомки екрана, якщо ви перебуваєте в Windows або платформі Nix, і я знаю, що є і деякі онлайн-сервіси, але я не маю жодних посилань і не використовував їх. Ось посилання на довідковий документ про налаштування та запуск емулятора. Android SDK включає емулятор мобільного пристрою ...


2
Вибачте? Я попросив зробити захоплення відео в Android не на Mac чи емуляторі.
Taranfx

2
MWR пропонує захопити екран Android через емулятор
Ollie C

3
Не всі апси можуть бути запущені в емуляторі.
RajV

4

Моя пропозиція також використовувати екранний диктофон, наприклад, SMRecorder. Замість того, щоб використовувати емулятор, який повільно - особливо для ігор та речей, про які ви хотіли б відео, я рекомендую використовувати VirtualBox VM з встановленим Android. Ви можете підключити до нього налагоджувач Dalvik і там налагодити додаток. Якщо налагоджувач сповільнить ваш додаток занадто сильно, відключіть його для запису відео. Існує багато посилань, які пояснюють, як налаштувати Android VM для налагодження. Я вважаю це набагато краще, ніж емулятор. Тепер це не стосується зйомки екранів безпосередньо на пристрої, якщо ви використовуєте акселерометр або камеру, яка недоступна на ПК. Для цього я б використовував згаданий вище додаток для ринку Android.


на добрий захід: spkaa.com/…
Реубен Л.

3

Я думаю, що скріншот не є причиною несумісності tegra 2, я вже пробував це, але немає сироватки! Тому я спробував використовувати Z-ScreeNRecorder з ринку, встановив його на моєму LG Optimus 2x, але він записує лише порожній екран, я намагався протягом 5 хв. і там я отримую 5хв. файл порожнього екрана розміром 6 Мб ... тому немає сенсу намагатися, поки вони не звільнять трохи програмного забезпечення, сумісного з чіпсетом tegra2!



1

Можна записувати відео на екрані безпосередньо з телефону або планшета, якщо ваш пристрій вкорінений. Я працюю над додатком SCR Screen Recorder . Наскільки мені відомо, це єдиний додаток, що підтримує пристрої Tegra (включаючи Nexus 7) та Android 4.2. На даний момент додаток записує між 9-18 кадрів в секунду залежно від пристрою, але я працюю над тим, щоб покращити це. Запис екрана SCR все ще знаходиться у фазі бета-тестування, тож сміливо тестуйте його та дайте відгуки.


1
Поділіться своїм дослідженням, як це можна зробити програмно в андроїді, щоб мовчки захопити віртуоз екрана?
Аджай С

@Iwo Чи можете ви поділитися своїми дослідженнями щодо того, як граматично записувати відео на екрані? Дякую.
Шріні Кандула

1

Дзеркальне відображення та записування екрана AirPlay тепер знаходиться в CyanogenMod із дзеркальним APK (Beta).


1

Якщо ви розробляєте програми для відеокамер, то буде добре знати API, який використовуватиметься для зйомки відео:

http://developer.android.com/training/camera/videobasics.html

(вищезазначене посилання показує лише те, як можна зробити запис відео через подання наміру, а не як відбувається власне запис)

https://www.linux.com/learn/tutorials/729988-android-app-development-how-to-capture-video

і якщо ви хочете написати програму adb "screenrecord" самостійно:

https://android.googlesource.com/platform/frameworks/av/+/android-cts-4.4_r1/cmds/screenrecord/screenrecord.cpp

І ключова дія запису робиться тут:

static status_t recordScreen(const char* fileName) {
    status_t err;

<...>

    // Configure, but do not start, muxer.
    sp<MediaMuxer> muxer = new MediaMuxer(fileName,
            MediaMuxer::OUTPUT_FORMAT_MPEG_4);
    if (gRotate) {
        muxer->setOrientationHint(90);
    }

    // Main encoder loop.
    err = runEncoder(encoder, muxer);
    if (err != NO_ERROR) {
        encoder->release();
        encoder.clear();

        return err;
    }

Для телефону Samsung є додаткові налаштування (хак "cam_mode"):

CamcorderProfile.QUALITY_HIGH роздільна здатність створює мерехтливе відео із зеленим кольором

Більше корисних посилань:

Як я можу зробити відеозапис на Android?


1

Я цього не реалізував, але все ж даю вам ідею це зробити.

Перш за все отримайте код, щоб зробити знімок екрана пристрою Android . І викликайте ту саму функцію для створення зображень через проміжок часу. Додайте потім знайдіть код для створення відео з кадрів / зображень .

Редагувати

також перегляньте це посилання та змініть його відповідно до розміру екрана. Головне - розділити свою роботу на кілька невеликих завдань, а потім об'єднати її як свою потребу.

Найкращий спосіб зробити це FFMPEG . але раз я спробував, але це дуже довга процедура. Спочатку вам потрібно завантажити бібліотеку cygwin та Native C ++ та багато чого іншого та підключитися, потім ви зможете працювати над FFMPEG (він вбудований у C ++).


Я робив те саме, що ви запропонували робити знімки через проміжок часу або без інтервалу, у мене є прокрутка, в якій я роблю прокрутку, і в іншій нитці я захоплюю область екрана, але те ж саме захоплення повертається для 6-7 зображень і чим інша інша область захоплена. Мені потрібна повна послідовність зображень.
Farrakh Javed,

1

Погляньте на віддалений менеджер . Але мені здається, він не працює належним чином із пристроями, які мають великий екран. Хоча, ви можете спробувати DEMO раніше.


Обидві ланки мертві: /
rahulserver

@rahulserver, Google заблокував їх, тому що я використовував Androidім'я програми. Незабаром я опублікую їх знову без Androidслова.
Нолеш

дякую за відгук. Я відчайдушно потребую. Тому, будь ласка, повідомте тут, коли ви опублікували.
rahulserver

@rahulserver, я знову їх опублікував і виправив посилання.
Нолеш

1

Якщо ви хочете записати користувацьку навігацію, щоб ви могли перевірити користувальницький інтерфейс та інші речі, рекомендую скористатися TestFairy

Це дозволяє надіслати apk деяким тестовим користувачам електронною поштою та переглянути відео з усіма сеансами в додатку та навіть збоєм програми та статистикою пристрою.


1

В Android Lollipop (5) додана нова функція, яка дозволяє знімати екран, що пояснено тут

Ось приклад

Виклик startActivityForResult так

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

Тоді фіксуйте результат

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode != PERMISSION_CODE) {
        Log.e(TAG, "Unknown request code: " + requestCode);
        return;
    }
    if (resultCode != RESULT_OK) {
        Toast.makeText(this,
                "User denied screen sharing permission", Toast.LENGTH_SHORT).show();
        return;
    }
    mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
    mVirtualDisplay = createVirtualDisplay();
}

0

Це старе, а як щодо ASC ?


Через несумісність із пристроями, що працюють на Tegra? .. так .. У мене з’явився трансформатор Asus: C
Річард Котріна,

Він вимагає запуску "активатора" на ПК / Mac, але не підписаний і не пояснює, що він робить, а також як зробити "активацію" вручну. Це звучить як вектор ризику безпеки та загрози.
Хлоя

0

Якщо ви перебуваєте на ПК, ви можете запустити My Phone Explorer на ПК, клієнт MyPhoneExplorer на телефоні, встановити зйомку екрана для постійного оновлення та використовувати Wink для зйомки власної прямокутної області екрана через вікно My Phone Explorer із власним коефіцієнтом захоплення. Потім перетворіть на FLV в Wink, а потім перетворіть з Flash відео в MPG за допомогою WinFF .


Слід додати, що тут "ПК" означає якусь Microsoft Windows.
rwst

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.